OpenStack架構詳解


OpenStack 提供開放源碼軟件,建立公共和私有雲。  OpenStack 是一個社區和一個項目,以及開放源碼軟件,以幫助企業運行的虛擬計算或者存儲雲。  OpenStackd 開源項目由社區維護,包括 OpenStack 計算(代號為 Nova ), OpenStack 對象存儲(代號為 SWIFT ),並 OpenStack 鏡像服務(代號 Glance )的集合。  OpenStack 提供了一個操作平台,或工具包,用於編排雲。
 
Components of OpenStack

 

OpenStack 當前主要有三個組件:計算,存儲,鏡像。
OpenStack 計算是一個雲控制器,用來啟動一個用戶或一個組的虛擬實例,它也用於配置每個實例或項目中包含多個實例為某個特定項目的聯網。

OpenStack 對象存儲是一個在具有內置冗余和容錯的大容量系統中存儲對象的系統。對象存儲有各種應用,如備份或存檔數據,存儲圖形或視頻(流媒體數據傳輸到用戶的瀏覽器),儲存二級或三級靜態數據,發展與數據存儲集成新的應用程序,當預測存儲容量困難時存儲數據,創造彈性和靈活的雲存儲 Web 應用程序。

OpenStack 鏡像服務是一個查找和虛擬機圖像檢索系統。它可以配置三種方式:使用 OpenStack 對象存儲來存儲圖像 ; 使用亞馬遜 S3 直接存儲,或使用 S3 對象存儲作為 S3 訪問中間存儲。
 
OpenStack Project Architecture

 

OpenStack 當前包括三個子項目,三個項目相會獨立,可以單獨安裝。
• Swift  提供對象存儲。這是大致類似於 Rackspace 雲文件(從它派生)或亞馬遜 S3
• Glance  提供 OpenStack Nova 虛擬機鏡像的發現,存儲和檢索。
• Nova  根據要求提供虛擬服務。這與 Rackspace 雲服務器或亞馬遜 EC2 類似。
將來會出現 web  接口的子項目以及隊列服務的子項目。
 
Cloud Provider Conceptual Architecture

 

構建自己的 Iaas 雲環境並將其提供給用戶,需要提供以下幾個特性:
1.  允許應用用戶注冊雲服務、查看使用情況以及賬單。
2.  允許開發商和開發人員創建和存儲自定義的鏡像。
3.  允許開發商和開發人員啟動、監控、停止虛擬機實例。
4.  允許操作人員配置和操作雲基礎設施。
上面只列出了基本的 4 個特性,當然還有其他一些特性,將這些特性列在一起,展示如下:
 
<ignore_js_op>

 

在上面的模型中,假定了與雲交互的四種人員(開發商、開發人員、操作員、用戶),還定義了三層架構(表現、邏輯、資源)和兩個正交領域(集成和管理)。
表現層,組件與用戶交互,接受並顯示用戶的信息。在這一層,為非開發人員提供了一個 web  圖形界面,為開發人員提供了 API 。在這一層,還存在負載均衡、控制台代理、安全、命名服務。

邏輯層,為我們的雲和控制功能提供情報。這層內包括部業務流程(工作流程復雜的任務),調度(確定作業對資源的映射),政策(配額等),鏡像注冊表(例如鏡像的元數據),日志(事件和計量)。
集成功能,大多數服務提供商已經有一個客戶的身份和計費系統。任何雲架構將需要與這些系統集成。

管理層,提供一個 API 來管理雲並提供監控功能。

資源層,因為這是一個計算雲,我們需要實際的計算,網絡和存儲資源,以提供給客戶。這一層提供這些服務,他們可能是服務器,網絡交換機,網絡附加存儲或其他資源。

 

OpenStack Compute Logical Architecture

 

OpenStack  中有兩個守護進程:

接收和調解 API 調用的 WSGI 應用程序 ( nova-api glance-api 等等)。

進行編排任務的工人守護進程( nova-compute ,  nova-network, nova-schedule )。

OpenStack 中還包含兩個組件:消息隊列服務和數據庫。這兩個組件方便異步編排復雜的任務通過消息傳遞和信息共享。
 
<ignore_js_op>

 

這個復雜的,但不是太翔實的圖表可以概括為三句話:

 

  • 終端用戶通過nova-api 接口與Openstack 計算交互。
  • OpenStack計算守護進程通過隊列的交換信息(行動)和數據庫(信息)進行API請求。
  • OpenStack Glance是一個完全獨立的基礎上設施。




各個組件的介紹:

 

nova-api:是對外的接口。 OpenStack  雲計算的核心控制器( CloudController 定義在 trunk/nova/api/ec2/cloud.py )。它提供了一個為所有的 API 查詢( OpenStack API EC2 API )的端點,引發多數業務流程的活動(如運行一個實例),並實施一些政策(主要是配額檢查)。
nova-schedule:根據當前資源使用情況,決定計算節點分布到哪台計算節點上。目前實現很薄,目前已支持插件方式擴展,方便后面可能有采用更復雜算法。

 

nova-compute:接收隊列中的動作,然后執行一系列的系統命令(如啟動 KVM 實例),同時更新數據庫中的狀態。
 
nova-volume:給虛擬機分配額外持久化的存儲,管理持久卷到計算實例的創建,連接和分離。

 

nova-network:網絡管理,給虛擬機分配網絡和管理,使外部  PC  可以可直接訪問。它接受隊列中的網絡任務,然后執行任務操縱網絡(如設立橋接接口或更改 iptables 規則)。
 
queue:提供了一個守護進程之間傳遞消息的中央樞紐。當前由   RabbitMQ實現,理論上可以是 Python ampqlib 支持的任何 AMPQ 消息隊列。
 
SQL database:存儲雲基礎設施的編譯時和運行時的狀態。這包括可用的實例類型,在使用中的實例,可用的網絡和項目。

 

OpenStack Glance:OpenStack  單獨的一個項目。
 
Nova Conceptual Mapping
OpenStack 的架構示意圖和目前已實現情況,藍色是要  openstack 概念上的架構圖,紅色是目前已實現的。
上面的功能模塊對應上面模型的映射:

 

<ignore_js_op>

 

Service Architecture

 

管理和使用是走兩個通道的。管理必須要經由  nova-api 轉發過去。而運行時,直接連接計算節點上的虛擬機即可。
<ignore_js_op>



部署

 

部署時,除了 Dashboard  必須部署在  nova-api server  上以外,所有的其它進程都可以部署在不同的機器上。
<ignore_js_op>

 

OpenStack 提供了基於  Puppet  的自動部署工具。經過簡單配置,就可以把各個組件部署到不同機器上。
 
鏡像管理

 

OpenStack 的鏡像創建並沒有納入其職責列表。
你可以使用 Ubuntu 的已有 image (https://help.ubuntu.com/community/UEC/) ,或者直接重新自己通過 KVM 安裝   

 

網絡模型

 

Flat Network Manager, Flat DHCP Network Manager, VLAN Network Manager.
VLAN Network Manager  這種方式適合於共有雲。
在私有雲方面,  IP 充足,而且為了方便的互聯互通,簡單的 Flat 結構網絡比較適合。
OpenStack 支持  Floating IPs , 該特性可以方便的通過更改 IP Failover( 容錯轉移)或者遷移。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM