開源雲平臺的分析與比較

thinkjava發表於2013-02-06
作為雲端計算的一種重要形式,IaaS服務有各種開源和商業雲平臺方案。本文立足於使用開源IaaS雲平臺來開發公有云和私有云管理平臺的角度,介紹和比較了Eucalyptus、OpenNebula、CloudStack和OpenStack等開源IaaS雲平臺。
從AWS看成功雲平臺的特點

AWS是當前最成功的雲端計算平臺,其系統架構最大的特點就是透過Web Service介面開放資料和功能,一切以服務為第一位;並透過SOA的架構使系統達到松耦合。

AWS 提供的Web Service棧,由訪問層(API、管理控制檯和各種命令列等),通用服務層(身份認證、監控、部署和自動化等),PaaS層服務(並行處理、內容傳輸 和訊息服務等),IaaS層服務(計算EC2、儲存S3/EBS、網路服務VPC/ELB等以及資料庫服務)幾部分組成。使用者應用使用IaaS基礎IT資 源,將PaaS和通用服務作為應用架構中的元件來構建自己的服務。綜合來看,AWS生態環境中系統架構的核心思想為SOA、分層和服務組合。

私有云的需求

除了AWS這類公有云平臺,私有云和混合雲也是IaaS的重要形式。企業對於私有云平臺通常會有以下幾個需求。

計算虛擬技術的多樣選擇(KVM、XEN、ESX、ESXi、Hyper-V和XenServer等)。
儲存技術/裝置的多樣支援(NAS、IP-SAN和FC-SAN等)。
網路技術/裝置的多種支援(交換機、路由器和防火牆等)。
多種API的支援。

前三個需求要求IaaS平臺能遮蔽底層的具體技術/裝置的差別對外呈現基本一致的能力與介面。這一般要採用抽象框架加外掛的設計來實現。另外,基於計算虛擬化、網路和儲存等技術自成體系的原因,整個架構設計中須考慮將計算虛擬化、網路和儲存獨立成三個子系統或服務。

因此,雲平臺至少應包含三層:API或接入層提供各種不同API或訪問方式,核心虛擬化管理層整合底層服務來對外提供IaaS服務,計算/儲存/網路服務層遮蔽技術差異。

技術團隊開發需求

小型技術團隊精英化,每個人都能夠參與整體設計。大型團隊則為金字塔結構,只有少數人能夠參與整體設計,多數人員因能力和職責的原因只能接觸到單個功能或模組。

為滿足這兩種團隊的要求,雲平臺的整體軟體架構必須做到松耦合,透過組合元件、模組和服務來構成整個系統;同時需要元件、模組和服務功能內聚以便於小團隊獨立維護,方便獨立的設計、開發和演進。

另外,雲平臺需要考慮提供基礎共享元件在各個服務中重用。典型的可重用元件為資料庫ORM、訊息通訊、服務端基礎框架、配置管理系統、日誌系統和錯誤定位系 統等。很多大型團隊會整合這些基礎共享服務,透過領域描述語言自動化生成基礎框架程式碼,使開發人員可以專注於具體的服務實現和關鍵技術研究。

雲平臺的介紹和比較

下面從系統架構要分層、元件化,採用SOA以達到系統松耦合;元件服務使用框架外掛化設計;開發平臺化等方面來比較4個開源IaaS雲平臺。

Eucalyptus

Eucalyptus 是最早試圖克隆AWS的開源IaaS雲平臺,整體架構如圖1的左半部分所示。Eucalyptus由雲控制器(CLC)、Walrus、叢集控制器 (CC)、儲存控制器(SC)和節點控制器(NC)組成,它們相互協作共同提供所需的雲服務。元件間使用支援WS-Security的SOAP訊息實現安 全的通訊。Eucalyptus對外提供相容AWS的SOAP和Query介面,不提供其他API。

[img index=1]
從分層的角度來看,Eucalyptus缺乏API層設計, CLC是全域性資源管理層,叢集服務(CC和SC)為底層資源管理層。CLC、CC和NC三層結構不是軟體架構層面的分層,只能看作一種為了管理較大規模叢集的工程化方法。

從元件服務角度看,每個叢集中將計算和儲存服務設計為獨立服務,網路仍為與計算服務的一部分。儘管Eucalyptus在程式碼實現上是將網路部分獨立出來的,但整體上並未按照獨立的服務來設計,整體設計解耦不夠。

CLC 是Eucalyptus的核心,包括虛擬機器控制、儲存卷管理、網路資源(Address)管理、映象管理、快照管理、Keypair管理和後設資料管理等服 務模組。開源ESB Mule將所有的服務編排起來,透過Eucalyptus服務對外統一提供EC2和EBS服務,如圖1的右半部分所示。由此可以看 到,Eucalyptus在SOA層面上做得較好。但ESB技術門檻高,對設計開發人員要求較高。同時因為Eucalyptus只在很少的地方支援外掛 (如多Hypervisor支援的外掛),所以整體上對抽象框架和外掛的設計做得不多。

從開發平臺的角度來看,Eucalyptus的主要 開發語言為Java和C;CLC採用開源ESB Mule為核心編排服務,架構較新穎;但CC和NC採用Apache +CGI的軟體架構,基於Axis/C來實現Web Service。整體來看,Eucalyptus還沒有開發平臺化的趨勢。

相關文章