本篇文章給大家分享的是有關(guān)如何進行開源IaaS云平臺的分析與比較,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了麥積免費建站歡迎大家使用!
作為云計算的一種重要形式,IaaS服務(wù)有各種開源和商業(yè)云平臺方案。本文立足于使用開源IaaS云平臺來開發(fā)公有云和私有云管理平臺的角度,介紹和比較了Eucalyptus、OpenNebula、CloudStack和OpenStack等開源IaaS云平臺。
從AWS看成功云平臺的特點
AWS是當前最成功的云計算平臺,其系統(tǒng)架構(gòu)的特點就是通過Web Service接口開放數(shù)據(jù)和功能,一切以服務(wù)為***位;并通過SOA的架構(gòu)使系統(tǒng)達到松耦合。
AWS 提供的Web Service棧,由訪問層(API、管理控制臺和各種命令行等),通用服務(wù)層(身份認證、監(jiān)控、部署和自動化等),PaaS層服務(wù)(并行處理、內(nèi)容傳輸 和消息服務(wù)等),IaaS層服務(wù)(計算EC2、存儲S3/EBS、網(wǎng)絡(luò)服務(wù)VPC/ELB等以及數(shù)據(jù)庫服務(wù))幾部分組成。用戶應(yīng)用使用IaaS基礎(chǔ)IT資 源,將PaaS和通用服務(wù)作為應(yīng)用架構(gòu)中的組件來構(gòu)建自己的服務(wù)。綜合來看,AWS生態(tài)環(huán)境中系統(tǒng)架構(gòu)的核心思想為SOA、分層和服務(wù)組合。
私有云的需求
除了AWS這類公有云平臺,私有云和混合云也是IaaS的重要形式。企業(yè)對于私有云平臺通常會有以下幾個需求。
計算虛擬技術(shù)的多樣選擇(KVM、XEN、ESX、ESXi、Hyper-V和XenServer等)。
存儲技術(shù)/設(shè)備的多樣支持(交換機、路由器和防火墻等)。
網(wǎng)絡(luò)技術(shù)/設(shè)備的多種支持(NAS、IP-SAN和FC-SAN等)。
多種API的支持。
前三個需求要求IaaS平臺能屏蔽底層的具體技術(shù)/設(shè)備的差別對外呈現(xiàn)基本一致的能力與接口。這一般要采用抽象框架加插件的設(shè)計來實現(xiàn)。另外,基于計算虛擬化、網(wǎng)絡(luò)和存儲等技術(shù)自成體系的原因,整個架構(gòu)設(shè)計中須考慮將計算虛擬化、網(wǎng)絡(luò)和存儲獨立成三個子系統(tǒng)或服務(wù)。
因此,云平臺至少應(yīng)包含三層:API或接入層提供各種不同API或訪問方式,核心虛擬化管理層整合底層服務(wù)來對外提供IaaS服務(wù),計算/存儲/網(wǎng)絡(luò)服務(wù)層屏蔽技術(shù)差異。
技術(shù)團隊開發(fā)需求
小型技術(shù)團隊精英化,每個人都能夠參與整體設(shè)計。大型團隊則為金字塔結(jié)構(gòu),只有少數(shù)人能夠參與整體設(shè)計,多數(shù)人員因能力和職責(zé)的原因只能接觸到單個功能或模塊。
為滿足這兩種團隊的要求,云平臺的整體軟件架構(gòu)必須做到松耦合,通過組合組件、模塊和服務(wù)來構(gòu)成整個系統(tǒng);同時需要組件、模塊和服務(wù)功能內(nèi)聚以便于小團隊獨立維護,方便獨立的設(shè)計、開發(fā)和演進。
另外,云平臺需要考慮提供基礎(chǔ)共享組件在各個服務(wù)中重用。典型的可重用組件為數(shù)據(jù)庫ORM、消息通信、服務(wù)端基礎(chǔ)框架、配置管理系統(tǒng)、日志系統(tǒng)和錯誤定位系 統(tǒng)等。很多大型團隊會整合這些基礎(chǔ)共享服務(wù),通過領(lǐng)域描述語言自動化生成基礎(chǔ)框架代碼,使開發(fā)人員可以專注于具體的服務(wù)實現(xiàn)和關(guān)鍵技術(shù)研究。
云平臺的介紹和比較
下面從系統(tǒng)架構(gòu)要分層、組件化,采用SOA以達到系統(tǒng)松耦合;組件服務(wù)使用框架插件化設(shè)計;開發(fā)平臺化等方面來比較4個開源IaaS云平臺。
Eucalyptus
Eucalyptus 是最早試圖克隆AWS的開源IaaS云平臺,整體架構(gòu)如圖1的左半部分所示。Eucalyptus由云控制器(CLC)、Walrus、集群控制器 (CC)、存儲控制器(SC)和節(jié)點控制器(NC)組成,它們相互協(xié)作共同提供所需的云服務(wù)。組件間使用支持WS-Security的SOAP消息實現(xiàn)安 全的通信。Eucalyptus對外提供兼容AWS的SOAP和Query接口,不提供其他API。
圖1 Eucalyptus系統(tǒng)架構(gòu)和CLC邏輯架構(gòu)
從分層的角度來看,Eucalyptus缺乏API層設(shè)計, CLC是全局資源管理層,集群服務(wù)(CC和SC)為底層資源管理層。CLC、CC和NC三層結(jié)構(gòu)不是軟件架構(gòu)層面的分層,只能看作一種為了管理較大規(guī)模集群的工程化方法。
從組件服務(wù)角度看,每個集群中將計算和存儲服務(wù)設(shè)計為獨立服務(wù),網(wǎng)絡(luò)仍為與計算服務(wù)的一部分。盡管Eucalyptus在代碼實現(xiàn)上是將網(wǎng)絡(luò)部分獨立出來的,但整體上并未按照獨立的服務(wù)來設(shè)計,整體設(shè)計解耦不夠。
CLC 是Eucalyptus的核心,包括虛擬機控制、存儲卷管理、網(wǎng)絡(luò)資源(Address)管理、鏡像管理、快照管理、Keypair管理和元數(shù)據(jù)管理等服 務(wù)模塊。開源ESB Mule將所有的服務(wù)編排起來,通過Eucalyptus服務(wù)對外統(tǒng)一提供EC2和EBS服務(wù),如圖1的右半部分所示。由此可以看 到,Eucalyptus在SOA層面上做得較好。但ESB技術(shù)門檻高,對設(shè)計開發(fā)人員要求較高。同時因為Eucalyptus只在很少的地方支持插件 (如多Hypervisor支持的插件),所以整體上對抽象框架和插件的設(shè)計做得不多。
從開發(fā)平臺的角度來看,Eucalyptus的主要 開發(fā)語言為Java和C;CLC采用開源ESB Mule為核心編排服務(wù),架構(gòu)較新穎;但CC和NC采用Apache +CGI的軟件架構(gòu),基于Axis/C來實現(xiàn)Web Service。整體來看,Eucalyptus還沒有開發(fā)平臺化的趨勢。
OpenNebula
OpenNebula是Reservoir項目的一部分,是2005年歐洲研究學(xué)會發(fā)起的虛擬基礎(chǔ)設(shè)備和云端運算計劃的虛擬化管理層的開源實現(xiàn)。OpenNebula的核心部分是Front End,即ONE。其架構(gòu)如圖2所示。
OpenNebula明顯分為三層,即接口層、核心層和驅(qū)動層。接口層提供了原生的XML-RPC接口,同時實現(xiàn)了EC2、OCCI和OpenNebula Cloud API(OCA)等多種API,為用戶提供了多種選擇。
核心層的OpenNebula core提供統(tǒng)一的Hook插件管理、Request請求管理、VM生命周期管理、Hypervisor管理、網(wǎng)絡(luò)資源管理和存儲資源管理等核心功能。core配合Scheduler對外提供計算和存儲網(wǎng)絡(luò)資源管理服務(wù)。
***層是由各種Driver構(gòu)成的驅(qū)動層與虛擬化軟件(KVM、XEN)和物理基礎(chǔ)設(shè)施交互。需要說明的是,圖2中的驅(qū)動層沒有畫出DataStore、 NetworkManager等多個驅(qū)動。一些前端模塊如監(jiān)控、用戶界面(Sunstone Portal和Self Service Portal)也未在圖2中畫出。很明顯,OpenNebula在分層和框架加插件設(shè)計這兩點做得很好。
圖2 OpenNebula系統(tǒng)架構(gòu)
在OpenNebula中,計算、存儲和網(wǎng)絡(luò)部分是ONE中獨立的模塊,資源調(diào)度也被分離出來通過requirement和matcher支持多種可選的策略和資源額度管理,也支持調(diào)度引擎Haizer來提供lease(租約)的高級資源調(diào)度能力。
顯然,OpenNebula沒有采用SOA的設(shè)計,沒有將計算、存儲和網(wǎng)絡(luò)設(shè)計為獨立組件,解耦做得還不夠。值得注意的是,OpenNebula用 Libvirt所提供的接口遠程調(diào)用計算節(jié)點上的虛擬化控制命令。這種Agentless的設(shè)計在系統(tǒng)安裝部署階段會減少很多軟件安裝配置工作,是一個設(shè) 計亮點。
從開發(fā)平臺的角度來看,OpenNebula采用C++實現(xiàn)核心ONE,使用Ruby開發(fā)的各種Driver來實現(xiàn)具體的功能。整體系統(tǒng)只有一個核心部件,故在開發(fā)平臺上做得很少。
CloudStack
CloudStack是Cloud.com開發(fā)的開源IaaS軟件,被Citrix收購后貢獻給Apache基金會。它已為全球多個公有云提供IaaS平臺技術(shù),如英國電信(BT)、日本電報電話公司(NTT)和韓國電信(KT)等。
圖 3中的左半部分為CloudStack的總體架構(gòu),可以看到其包括Dashboard/CLI層、CLoudStack API、核心引擎層和計算/網(wǎng)絡(luò)/存儲控制器層,是典型的分層架構(gòu)。具體來看,CloudStack提供原生自定義API, 也通過cloud bridge支持AWS兼容API。
圖3 CloudStack系統(tǒng)架構(gòu)和Management Server架構(gòu)
與OpenNebula類似,CloudStack本身也未采用SOA的設(shè)計,同樣沒有將計算/存儲/網(wǎng)絡(luò)部分從核心引擎中分離出來,因此在松耦合和組件設(shè)計上需要進一步加強。
從開發(fā)平臺來看,ClousStack使用Java開發(fā)API、Management Server和Agent等部分,運行時部署為Tomcat的Serverlet。另外,還大量使用Python開發(fā)與網(wǎng)絡(luò)和系統(tǒng)管理相關(guān)的部分。值得注 意的是,CloudStack代碼中包括一套獨立的Java代碼庫,涵蓋通信、數(shù)據(jù)管理、 事件管理、任務(wù)管理和插件管理等部分,基本形成了開發(fā)平臺。
OpenStack
OpenStack是開源IaaS云平臺的新兵,只有2年時間,卻擁有***的社區(qū)和生態(tài)環(huán)境,吸引了大量的公司和開發(fā)者圍繞其進行云計算開發(fā)。圖4為***發(fā)布的Essex的邏輯架構(gòu)圖。
圖4 OpenStack Essex邏輯架構(gòu)
OpenStack 整體架構(gòu)分3層,最上層為應(yīng)用程序和管理Portal(Horizon)、 API等接入層;核心層包括計算服務(wù)(Nova)、存儲服務(wù)(包括對象存儲服務(wù)Swift和塊存儲服務(wù)cinder)和網(wǎng)絡(luò)服務(wù)(Quantum);第3 層為共享服務(wù),現(xiàn)在為賬戶權(quán)限管理服務(wù)(keystone)和鏡像服務(wù)(Glance)。其中Quantum和cinder是***加入核心服務(wù)中的 OpenStack孵化項目。
在Essex及以前版本,存儲EBS(Elastic Block Service,彈性塊存儲服務(wù))和Nova-Volume耦合在一起,網(wǎng)絡(luò)服務(wù)也與Nova-Network綁定。在正在開發(fā)的Folsom版本 中,EBS和Network從Nova中獨立為新的服務(wù)(cinder和Quantum)。Nova通過API來調(diào)用新的cinder和Quantum服 務(wù)。我們可以看到,OpenStack在SOA和服務(wù)化組件解耦上是做得***的。
Nova包含API Server(含CloudController)、Nova-Scheduler、Nova-Compute、Nova-Volume和Nova- Network等幾部分,所有組件通過RabbitMQ來通信,使用數(shù)據(jù)庫來保存數(shù)據(jù)。同時Nova中大量采用了框架與插件的設(shè)計,如Scheduler 支持插件開發(fā)新的調(diào)度算法,Compute部分支持通過插件使用不同的Hypervisor,Network和Volume部分也通過插件支持不同廠商的 技術(shù)和設(shè)備。cinder和Quantum等服務(wù)也采取了與Nova類似的整體架構(gòu)和插件設(shè)計。
從開發(fā)平臺的角度來看,OpenStack 做得也很好。首先,OpenStack所有服務(wù)均采用Python開發(fā);其次,所有服務(wù)采用類似的軟件架構(gòu)和內(nèi)部實行技術(shù),如服務(wù)端程序使用WSGI,數(shù) 據(jù)庫ORM使用SQLAlchemy,配置文件解析和日志等也采用相同的組件?;贠penStack有很好的開發(fā)平臺,我們看到開發(fā)人員可以很容易參與 多個組件的開發(fā)。
綜合比較
前面分別介紹了各IaaS開源云平臺在分層、SOA、組件化、解耦及開發(fā)平臺等方面的情況。
從表1的對比中可以看出,所有的開源IaaS云平臺在分層上做得都比較好;在SOA/組件化/解耦這點上來看,OpenStack和Eucalyptus有 優(yōu)勢;在框架和插件設(shè)計上,除Eucalyptus較差外,其他平臺均有很好的設(shè)計——OpenStack的開發(fā)平臺做得***,CloudStack次 之。綜合來看,目前OpenStack的設(shè)計是***的,Eucalyptus和CloudStack次之。
表1 IaaS開源云平臺比較
實際需求設(shè)計比較
讓我們用一個真實需求來看4個開源IaaS平臺在開發(fā)支持上的表現(xiàn)。此需求來自私有云場景,云平臺需要對不同用戶的資源請求(如VM和公網(wǎng)IP等)按優(yōu)先級排序后進行處理,并提供任務(wù)的管理功能,如統(tǒng)計各狀態(tài)的任務(wù)數(shù)量等。
需求的設(shè)計有兩個關(guān)鍵點:一為如何對任務(wù)進行統(tǒng)一調(diào)度管理,二為任務(wù)狀態(tài)轉(zhuǎn)變信息的收集。
任務(wù)的統(tǒng)一調(diào)度管理方案分別為:OpenNebula和OpenStack都提供獨立的Scheduler組件并支持擴展Scheduler的插件機 制;CloudStack有Job Manager但不提供擴展,需修改Job Manager核心代碼;Eucalyptus內(nèi)部流程主要由Mule總線來驅(qū)動,需修改核心流程代碼增加新的模塊。比較來看,OpenStack和 OpenNebula的實現(xiàn)方式對現(xiàn)有系統(tǒng)影響最小。
對于任務(wù)狀態(tài)轉(zhuǎn)變信息,由于信息遍布在系統(tǒng)多個地方,***的設(shè)計是通過消息發(fā)送狀態(tài)變 化給負責(zé)任務(wù)管理/統(tǒng)計的模塊統(tǒng)一處理。在這一點上采用Message Bus的OpenStack和采用Mule的Eucalyptus有明顯優(yōu)勢。綜合來看,OpenStack為二次開發(fā)提供了很好的支持。
技術(shù)之外
上述比較主要是在設(shè)計方面,OpenStack優(yōu)勢顯著。但從其他方面來看:
Eucalyptus由于出現(xiàn)最早,同時與AWS簽訂相關(guān)API兼容協(xié)議,在面向AWS生態(tài)環(huán)境的私有云市場處于領(lǐng)先地位;
CloudStack在經(jīng)過大量商業(yè)客戶公有云的部署后,其功能已趨于穩(wěn)定成熟,成為Apache開源項目后,其松耦合設(shè)計也已排上日程,設(shè)計上大有迎頭趕上的趨勢;
OpenStack現(xiàn)狀是功能不夠完整且商業(yè)支持不夠,另其轉(zhuǎn)為基金會運作后能否保持現(xiàn)在的發(fā)展趨勢也是大家非常關(guān)注的。在實際的云平臺選擇過程中,大家要從自身的角度出發(fā)綜合考慮功能和系統(tǒng)的架構(gòu)與設(shè)計、未來發(fā)展等。
以上就是如何進行開源IaaS云平臺的分析與比較,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。