兩年前OpenStack基於NASA的Nova項目和Rackspace的Swift項目合併得以建立,而今OpenStack已經成爲雲計算領域的一顆新星,繼2012年四月發佈Essex版本之後,在今年九月底OpenStack第6版Folsom正式發佈,本文簡要分析了OpenStack Folsom的架構。
OpenStack架構
OpenStack的架構示意圖和目前已實現情況
藍色是要 openstack概念上的架構圖,紅色是目前已實現的。
OpenStack的組件
OpenStack目前有7個核心組件:Compute(計算), Object Storage(對象存儲),Identity(身份認證),Dashboard(儀表盤), Block Storage(塊存儲), Network(網絡) 和 Image Service(鏡像服務) 。下面將依次進行解釋:
Object Storage(代號爲“Swift”) 允許進行存儲或者檢索文件。目前已經有幾好家公司開始提供基於Swift商業存儲服務,這些公司包括KT,Rackspace公司(Swift項目的發源地)和Internap,而且很多大公司內部也使用Swift來存儲數據。
Image Service(代號爲“Glance”) 是一個虛擬機鏡像的存儲、查詢和檢索系統,它提供了一個虛擬磁盤映像的目錄和存儲庫,這些磁盤映像常常廣泛應用於OpenStack Compute之中,而且這種服務在技術上是屬於可選的,任何規模的雲都適用於它。
Compute(代號爲“Nova”) 根據需求提供虛擬服務。Rackspace公司和HP提供商業計算服務正是建立在Nova之上,Mercado Libre和NASA(Nova項目的起源地)內部也是使用的Nova。
Dashboard(代號爲“Horizon”) 爲所有OpenStack的服務提供了一個模塊化的web-based用戶界面。使用這個Web GUI,可以在雲上完成大多數的操作,如啓動實例,分配IP地址,設置訪問控制等。
Identity(代號爲“Keystone”) 爲所有的OpenStack服務提供身份驗證和授權。它還提供了一個在特定OpenStack雲服務上的服務目錄。
Network(代號爲“Quantum”) 在接口設備之間提供“網絡連接作爲一種服務”,而這些接口設備主要靠其他的OpenStack服務進行管理(最有可能是Nova)。該服務允許用戶創建自己的網絡,然後連接接口。Quantum提供一個可插拔的體系架構,它能支持很多流行的網絡供應商和技術,Quantum是Folsom版本中的新項目。
Block Storage(代號爲“Cinder”) 提供穩定的數據塊存儲服務。這個項目的很多代碼最初是來自於Nova之中(就是the nova-volume service)。但是請注意,這是塊存儲(或者volumes),而不是類似於NFS或者CIFS文件系統,Cinder在Folsom中也是一個全新的項目。除了這些核心項目之外,也有一些“孵化”項目,未來可能會考慮列入到OpenStack的核心項目之中。
部署
部署時,除了Dashboard必須部署在 nova-api server上以外,所有的其它進程都可以部署在不同的機器上。
OpenStack提供了基於Puppet 的自動部署工具。經過簡單配置,就可以把各個組件部署到不同機器上。
OpenStack的鏡像創建並沒有納入其職責列表。
你可以使用Ubuntu的已有image (https://help.ubuntu.com/community/UEC/),或者直接重新自己通過KVM安裝 http://cssoss.wordpress.com/2011/04/27/openstack-beginners-guide-for-ubuntu-11-04-image-management/
網絡模型
Flat Network Manager, Flat DHCP Network Manager, VLAN Network Manager.
VLAN Network Manager這種方式適合於共有云。
在私有云方面,IP充足,而且爲了方便的互聯互通,簡單的Flat結構網絡比較適合。
OpenStack支持Floating IPs,該特性可以方便的通過更改IP來Failover(容錯轉移)或者遷移。
CAAS
Cluster as a Service: Managing multiple clusters for openstack clouds and other diverse frameworks
OpenStack無法獨自滿足集羣計算的需求。目前有一種方案,把集羣計算部署放到IaaS/PaaS 的下一層,我們稱這種解決方案是 CaaS.
當前,在很多機構或者學校,部署了不同的集羣解決方案,但是他們使用的頻率並不是很高,因此資源利用率不高的情況下,造成了很大的浪費(比如電費,PC)。
設計目標:
o每個集羣資源都可以動態分配
o系統隔離性好
o集羣有足夠的性能和容量
設計:
oIaaS/PaaS層與CaaS 隔離
oIaaS/PaaS層可聯機擴展
oCaaS 層的鏡像可通過容器有效被處理
oCaaS 層是通過 webservice提供服務
o可通過 VLAN 網絡隔離
o自動安裝
在這個解決方案中是通過LXC的方式來實現系統隔離
注:
LXC, LINUX的容器工具,他使用cgroup把系統資源分組進行隔離。
它不需要指令級模擬。因此相對其他虛擬化技術性能更高。
因爲他必須以進程運行執行文件的方式,因此不支持windows.
架構圖
在CaaS中構建
OpenStack
Layers
oCaaS(Physical) Physical layer. OS is installed on physical machines.
oCaaS(LXC) LXC layer. A Tagged VLAN isolates LXC containers.
oIaaS Cloud layer.OpenStack(nova).
過程:
1.在物理機上安裝LXC
2. 配置VPN網絡
3. 執行nova的自動部署工具
重複1~3,在不同的機器上重複的安裝OpenStack的計算節點
運行時架構
系統內部交互圖
Swift 也是獨立組件,對系統運行沒影響。
nova-api 是對外的接口。
Glance 是獨立組件,供 nova-compute 下載鏡像使用。
核心組件:
Scheduler:根據當前資源使用情況,決定計算節點分佈到哪臺計算節點上。目前實現很薄,目前已支持插件方式擴展,方便後面可能有采用更復雜算法。
Compute: 計算節點,使用虛擬化技術,host 虛擬機
Network: 網絡管理,給虛擬機分配網絡和管理,使外部PC 可以可直接訪問
Volume: 給虛擬機分配額外持久化的存儲
運行時系統間交互都是通過異步消息的方式和DB進行交互。
運行時圖
管理和使用是走兩個通道的。管理必須要經由nova-api轉發過去。而運行時,直接連接計算節點上的虛擬機即可。