官术网_书友最值得收藏!

1.2 基礎(chǔ)設(shè)施云介紹

從體系結(jié)構(gòu)層次上看,基礎(chǔ)設(shè)施云位于云計(jì)算平臺(tái)的底層,是其他各種形式的云的基礎(chǔ)。基礎(chǔ)設(shè)施云是整個(gè)云計(jì)算生態(tài)鏈的根本所在[3]。因此,本書主要以基礎(chǔ)設(shè)施云為研究和解構(gòu)的對(duì)象。

工業(yè)界和學(xué)術(shù)界開發(fā)了若干典型的基礎(chǔ)設(shè)施云,如Amazon EC2[6]、Microsoft Azure[5],但是由于絕大多數(shù)的商業(yè)云并沒有披露其設(shè)計(jì)思路、體系結(jié)構(gòu)和實(shí)現(xiàn)方案,因此本節(jié)主要以若干典型的開源基礎(chǔ)設(shè)施云為對(duì)象,對(duì)其進(jìn)行對(duì)比、分析。

1.2.1 Eucalyptus

Eucalyptus[7]起源于加州大學(xué)圣巴巴拉分校[8]計(jì)算機(jī)科學(xué)系的一個(gè)研究項(xiàng)目,由VGrADS[9]項(xiàng)目的首席研究員Rich Wolski[4]帶領(lǐng)的研究小組設(shè)計(jì)和實(shí)現(xiàn)。它是全球最廣泛使用的用于構(gòu)建私有基礎(chǔ)設(shè)施云的軟件平臺(tái),當(dāng)前正在使用的 Eucalyptus 云已超過 25 000個(gè),其中全球財(cái)富排行前100的公司中有超過20%的公司在使用它[60]。Eucalyptus也可以用于構(gòu)建混合云(Hybird)。

Eucalyptus實(shí)現(xiàn)了亞馬遜基于Web的服務(wù)Aws(Amazon Web Services)的主要功能,即提供虛擬機(jī)和存儲(chǔ)服務(wù),并與現(xiàn)有的 AWS 服務(wù)和工具兼容。Eucalyptus 提供了命令行工具euca2ools,便于用戶使用私有云或公有云服務(wù)。

Eucalyptus的體系結(jié)構(gòu)如圖1.1所示。其中,系統(tǒng)主要包含如下五個(gè)組件。

圖1.1 Eucalyptus體系結(jié)構(gòu)

① 云控制節(jié)點(diǎn)(CLC)。在Eucalyptus系統(tǒng)中,這是主要的控制器組件,負(fù)責(zé)管理整個(gè)系統(tǒng)。它同時(shí)也是所有用戶和管理員進(jìn)入 Eucalyptus 的主要入口。所有客戶端通過基于SOAP或RESTful的API與CLC通信。由CLC負(fù)責(zé)將請(qǐng)求傳遞給相應(yīng)的組件,并將來自這些組件的響應(yīng)發(fā)送回至該客戶端。

② 基于文件接口的存儲(chǔ)接入節(jié)點(diǎn)Walrus。Walrus采用面向?qū)ο蟮拇鎯?chǔ)模式,提供類似亞馬遜S3[57]的接口,即以Get 和Put的方式提供對(duì)虛擬機(jī)鏡像的一致性存儲(chǔ),并對(duì)用戶數(shù)據(jù)提供訪問控制機(jī)制。

③ 集群控制節(jié)點(diǎn)(CC)。CC的主要功能包括控制虛擬機(jī)的執(zhí)行,管理虛擬機(jī)之間以及虛擬機(jī)與外部環(huán)境之間的虛擬網(wǎng)絡(luò)、虛擬機(jī)控制器節(jié)點(diǎn)(NC)有關(guān)的服務(wù),收集和報(bào)告關(guān)于集群的狀態(tài)信息等。

④ 存儲(chǔ)控制節(jié)點(diǎn)(SC)。SC 提供存儲(chǔ)塊設(shè)備級(jí)的接口,通過網(wǎng)絡(luò)存儲(chǔ)傳輸協(xié)議,如iSCSI[48,49]和AoE[50]協(xié)議,實(shí)現(xiàn)彈性存儲(chǔ),為虛擬機(jī)提供數(shù)據(jù)的可持續(xù)保存。SC與Walrus聯(lián)合工作,用于存儲(chǔ)和訪問虛擬機(jī)鏡像、內(nèi)核鏡像、RAM 磁盤鏡像和用戶數(shù)據(jù)。其中,虛擬機(jī)鏡像可以是公共的,也可以是私有的,并最初以壓縮和加密的格式存儲(chǔ)。這些鏡像只有在某個(gè)節(jié)點(diǎn)需要啟動(dòng)一個(gè)新的實(shí)例并請(qǐng)求訪問此鏡像時(shí)才會(huì)被解密。

⑤ 虛擬機(jī)控制器節(jié)點(diǎn)(NC)。NC控制主機(jī)操作系統(tǒng)及相應(yīng)的虛擬機(jī)管理器VMM(如Xen[51]或 QEMU+KVM[52])對(duì)虛擬機(jī)生命周期進(jìn)行管理,提供包括啟動(dòng)、終止虛擬機(jī),查看虛擬機(jī)狀態(tài)等功能。

1.2.2 OpenStack

OpenStack[10~12]是由 RackSpace[13]和美國國家航空航天局(NASA)[71]合作研發(fā)的云計(jì)算平臺(tái),主要用于構(gòu)建私有基礎(chǔ)設(shè)施云。

OpenStack以Python編程語言編寫,整合Tornado網(wǎng)頁服務(wù)器[88]、Nebula運(yùn)算平臺(tái)[89],使用 Twisted(http://twistedmatrix.com/trac/)軟件框架,遵循 Open Virtualization Format、AMQP、SQLAlchemy等標(biāo)準(zhǔn),支持的虛擬機(jī)管理器包括QEMU+KVM、Xen、VirtualBox、VMware、Hyper-V。OpenStack用戶可以注冊(cè)云服務(wù)、查看使用情況以及賬單,開發(fā)商和開發(fā)人員可以創(chuàng)建和存儲(chǔ)自定義的鏡像,啟動(dòng)、監(jiān)控、停止虛擬機(jī),操作人員可以配置和操作基礎(chǔ)設(shè)施云。

OpenStack的體系結(jié)構(gòu)如圖1.2所示。該結(jié)構(gòu)定義了三個(gè)層(表現(xiàn)層、邏輯層、資源層)和兩個(gè)正交領(lǐng)域(集成域和管理域)。

圖1.2 OpenStack的體系結(jié)構(gòu)

① 表現(xiàn)層,組件與用戶交互,接收并顯示用戶的信息。在這一層,為非開發(fā)人員提供了一個(gè) Web 圖形界面,為開發(fā)人員提供了 API。另外,在這一層,還存在負(fù)載均衡、控制臺(tái)代理、安全、命名服務(wù)。

② 邏輯層,為云和控制功能提供情報(bào)。這層包括業(yè)務(wù)流程(復(fù)雜任務(wù)的工作流程)、調(diào)度(確定作業(yè)對(duì)資源的映射)、政策(配額等)、鏡像注冊(cè)(鏡像的元數(shù)據(jù))、日志(事件和計(jì)量)。

③ 資源層,包括實(shí)際的計(jì)算、網(wǎng)絡(luò)和存儲(chǔ)資源,以提供給客戶。這一層提供的服務(wù),可能是服務(wù)器、網(wǎng)絡(luò)交換機(jī)、網(wǎng)絡(luò)附加存儲(chǔ)或其他資源。

④ 集成域,云平臺(tái)需要自己集成一些功能,該結(jié)構(gòu)假設(shè)云服務(wù)提供商已經(jīng)集成了用戶身份認(rèn)證(Customer Identity)和計(jì)費(fèi)系統(tǒng)(Billing System)。

⑤ 管理域,提供訪問云平臺(tái)管理域的API,并且提供一些協(xié)助管理的監(jiān)控功能。

該體系結(jié)構(gòu)包含以下五個(gè)主要組件。

① nova-api:提供對(duì)外的接口。它提供了一個(gè)為所有的 API 查詢(OpenStackAPI 或EC2API)的端點(diǎn),引發(fā)多數(shù)業(yè)務(wù)流程的活動(dòng)(如運(yùn)行一個(gè)實(shí)例),并實(shí)施一些政策(主要是配額檢查)。

② nova-schedule:根據(jù)當(dāng)前資源使用情況,決定計(jì)算分布到哪臺(tái)計(jì)算節(jié)點(diǎn)上。目前實(shí)現(xiàn)很簡(jiǎn)單,已支持插件方式擴(kuò)展,方便日后采用更復(fù)雜的算法。

③ nova-compute:接收隊(duì)列中的動(dòng)作,然后執(zhí)行一系列的系統(tǒng)命令(類似啟動(dòng)KVM實(shí)例),同時(shí)更新數(shù)據(jù)庫中的狀態(tài)。

④ nova-volume:給虛擬機(jī)分配額外持久化的存儲(chǔ),管理持久卷的創(chuàng)建、連接和分離,它可以使用多種卷,如iSCSI、AoE。

⑤ nova-network:接受隊(duì)列中的網(wǎng)絡(luò)任務(wù),然后執(zhí)行任務(wù)管理網(wǎng)絡(luò)(如設(shè)立橋接接口或更改iptables規(guī)則)。

OpenStack當(dāng)前包括三個(gè)項(xiàng)目,分別是:

① Swift提供對(duì)象存儲(chǔ)。

② Glance提供虛擬機(jī)鏡像的發(fā)現(xiàn)、存儲(chǔ)和檢索。

③ Nova提供虛擬機(jī)服務(wù),類似于Rackspace Cloud Servers或亞馬遜EC2。

隨著 OpenStack 的發(fā)展,將來可能會(huì)出現(xiàn)更多的項(xiàng)目,如 Web 接口和隊(duì)列服務(wù)。OpenStack 各組件之間相互獨(dú)立,可以方便對(duì)代碼進(jìn)行分析和測(cè)試。存儲(chǔ)模塊 Swift,采用基于對(duì)象的存儲(chǔ),通過可升級(jí)的對(duì)象存儲(chǔ),以存儲(chǔ)海量的數(shù)據(jù)。虛擬網(wǎng)絡(luò)模塊負(fù)責(zé)公共 IP分配、VPN的連接和防火墻規(guī)則的設(shè)定,彈性分配和管理虛擬網(wǎng)絡(luò)資源。通過AMQP這一消息協(xié)議框架接受和響應(yīng)用戶的請(qǐng)求。

1.2.3 Scalr

Scalr[14]是基于 Web 的云計(jì)算管理平臺(tái),用于管理亞馬遜彈性計(jì)算云(圖 1.3)。該項(xiàng)目于2008年4月由Intridea[15]啟動(dòng),旨在為MediaPlug[16](媒體共享服務(wù))提供可擴(kuò)展的基礎(chǔ)設(shè)施。Scalr可以使用預(yù)置負(fù)載平衡器(pound或nginx)、應(yīng)用服務(wù)器(如Apache)、數(shù)據(jù)庫(如MySQL)的虛擬服務(wù)器建立集群。Scalr API分為Java API,Web服務(wù)(用于封裝API),以及Web客戶端和控制臺(tái)客戶端,用戶可以通過編寫程序調(diào)用Scalr API發(fā)送請(qǐng)求信息。

圖1.3 Scalr體系結(jié)構(gòu)圖

Scalr能夠提供高可靠的、實(shí)時(shí)的、容錯(cuò)的服務(wù),使用戶得到一個(gè)高性能的計(jì)算和應(yīng)用框架。通過管理亞馬遜的云計(jì)算平臺(tái),Scalr 展現(xiàn)了良好的自我擴(kuò)展和自我修復(fù)的性能,它通過提供給用戶一個(gè)處理大容量數(shù)據(jù)的命令,可以使網(wǎng)站和Web應(yīng)用支持千萬級(jí)別的負(fù)載。

Scalr為AMI提供了四種角色[63,86],用來建立和管理服務(wù)器農(nóng)場(chǎng)。它們分別是WWW、APP、MySQL以及BASE。其中WWW服務(wù)器是負(fù)載均衡器(通常是nginx),負(fù)責(zé)將請(qǐng)求轉(zhuǎn)發(fā)給APP中的實(shí)例。APP服務(wù)器實(shí)例運(yùn)行著Apache、tomcat或者Rails Framework,Scalr監(jiān)控和管理這些服務(wù)器。MySQL 數(shù)據(jù)庫管理數(shù)據(jù)庫從服務(wù)器,并且負(fù)責(zé)數(shù)據(jù)之間的同步, Scalr 監(jiān)控?cái)?shù)據(jù)庫主從服務(wù)器,當(dāng)主服務(wù)器異常關(guān)閉的時(shí)候,就將一個(gè)從服務(wù)器作為主服務(wù)器。BASE是一個(gè)普通的AMI,可以用來生成其他角色。

上述四個(gè)角色構(gòu)成一個(gè)服務(wù)器農(nóng)場(chǎng),Scalr 監(jiān)控用戶應(yīng)用服務(wù)器的數(shù)據(jù)流,通過輪訓(xùn)每個(gè)服務(wù)器的響應(yīng)判斷是否開啟新的應(yīng)用服務(wù)器,當(dāng)一類服務(wù)器的平均負(fù)載超過設(shè)定值的時(shí)候,Scalr就會(huì)為服務(wù)器農(nóng)場(chǎng)加入一個(gè)新的服務(wù)器,當(dāng)APP服務(wù)器異常關(guān)閉的時(shí)候,就重新開啟一個(gè)服務(wù)器以取代原來的服務(wù)器。

數(shù)據(jù)庫是由數(shù)據(jù)庫主服務(wù)器管理的,當(dāng)數(shù)據(jù)庫負(fù)載過重時(shí),Scalr 就會(huì)為數(shù)據(jù)庫集群開啟一個(gè)從服務(wù)器。應(yīng)用服務(wù)器從從服務(wù)器讀取數(shù)據(jù),這就減輕了主服務(wù)器的負(fù)載。

1.2.4 Nimbus

Nimbus[17,64]是由芝加哥大學(xué)計(jì)算研究所[18]的 Kate Keahey[84]研究員創(chuàng)建并帶領(lǐng)進(jìn)行的項(xiàng)目。該項(xiàng)目特別為科學(xué)研究機(jī)構(gòu)提供“基礎(chǔ)設(shè)施即服務(wù)”的云計(jì)算解決方案,支持代理認(rèn)證、批處理作業(yè)調(diào)度、盡力分配策略等功能。

Nimbus專注于為科學(xué)研究需要優(yōu)化基礎(chǔ)設(shè)置,也能支持許多非科研應(yīng)用。Nimbus允許用戶租賃遠(yuǎn)程資源部署虛擬機(jī),通過一系列配置構(gòu)建所需要的計(jì)算環(huán)境。Nimbus 還提供名為Cumulus的云存儲(chǔ)服務(wù),兼容亞馬遜S3的REST API。另外,Nimbus平臺(tái)集成了一系列工具,可以將運(yùn)行在 Nimbus、OpenStack、Amazon 等不同基礎(chǔ)設(shè)施云上的虛擬機(jī)配置成虛擬集群,允許客戶端云啟用“一鍵式”集群節(jié)點(diǎn)的安全配置,為其本身的運(yùn)作提供新的網(wǎng)絡(luò)和安全環(huán)境。

Nimbus的體系結(jié)構(gòu)如圖1.4所示。

圖1.4 Nimbus的體系結(jié)構(gòu)

客戶端提供功能接口,方便用戶使用云的各種功能。Nimbus共有3個(gè)客戶端:

① 云客戶端只提供一組常用功能接口,主要用于用戶注冊(cè)、虛擬機(jī)創(chuàng)建和啟動(dòng)等,使用簡(jiǎn)便,常作為終端用戶工具。

② 工作區(qū)客戶端提供訪問工作區(qū)服務(wù)功能的全部接口,特別是提供了豐富的網(wǎng)絡(luò)選項(xiàng),比較復(fù)雜難以使用,通常需要自定義腳本進(jìn)行封裝。

③ 任何兼容亞馬遜EC2服務(wù)的客戶端。

如圖1.4所示,不同客戶端連接不同服務(wù)接口,調(diào)用彈性計(jì)算服務(wù)和云存儲(chǔ)服務(wù)。

工作區(qū)服務(wù)允許遠(yuǎn)程客戶端部署管理虛擬機(jī)組,包括基于 WS 的協(xié)議前端和基于虛擬機(jī)的工作區(qū)資源管理器,支持兩種前端:一種基于 WSRF[79],另一種基于亞馬遜 EC2 WSDL。工作區(qū)服務(wù)前端服務(wù)使用 Web 應(yīng)用開發(fā)框架 Spring[81],利用其“依賴注入”[82]特性進(jìn)一步減少服務(wù)端組件的耦合性,定制或者改變服務(wù)端接口的運(yùn)行時(shí)行為。利用該特性,資源管理 API 可以對(duì)上述兩種前端接收的服務(wù)進(jìn)行橋接適配,轉(zhuǎn)向不同的遠(yuǎn)程計(jì)算資源。如圖1.4所示,通過工作區(qū)服務(wù)調(diào)用Nimbus云的計(jì)算資源或者通過IaaS網(wǎng)關(guān)調(diào)用EC2和其他云平臺(tái)計(jì)算資源。

工作區(qū)資源管理器(Workspace Resource Manager)實(shí)現(xiàn)虛擬機(jī)租約在基礎(chǔ)設(shè)施上的“即時(shí)”部署。工作區(qū)向?qū)В╓orkspace Pilot)擴(kuò)展當(dāng)前本地資源管理器(LRM),如Torque[65]或者 SGE[66],可以整合虛擬機(jī)和已配置的資源協(xié)同處理作業(yè),目前可使用 PBS[80]進(jìn)行批處理調(diào)度。

工作區(qū)控制器使用工作區(qū)資源管理器調(diào)度的計(jì)算資源啟動(dòng)虛擬機(jī),或者停止和暫停已啟動(dòng)的虛擬機(jī);實(shí)現(xiàn)了虛擬機(jī)鏡像的重建和管理;虛擬機(jī)安全連網(wǎng)等。目前利用虛擬化管理工具libvirt對(duì)各種虛擬機(jī)管理器的兼容,工作區(qū)控制器支持Xen和QEMU兩種虛擬機(jī)管理器。

IaaS網(wǎng)關(guān)允許客戶端用PKI證書訪問其他使用不同證書的IaaS云平臺(tái),目前可用于為特定的工程映射X509 PKI證書和EC2賬號(hào),使得一些科研工程能夠運(yùn)行在亞馬遜EC2上。

Nimbus 云存儲(chǔ)服務(wù)又叫 Cumulus,對(duì)云磁盤空間提供安全管理,為用戶提供其所擁有和發(fā)布虛擬機(jī)鏡像的“庫”視圖,結(jié)合globus GridFTP [67]支持任何SAN等GridFTP可接入的網(wǎng)絡(luò)文件系統(tǒng)。Cumulus使用Boto[83]實(shí)現(xiàn)對(duì)亞馬遜S3接口的兼容,并使用開源的事件驅(qū)動(dòng)網(wǎng)絡(luò)編程框架twisted.web[78]實(shí)現(xiàn)Web服務(wù)。

各模塊之間使用SSH實(shí)現(xiàn)Nimbus服務(wù)和各虛擬機(jī)管理器節(jié)點(diǎn)安全互連,并使用一個(gè)用GSI[85]提供認(rèn)證和授權(quán)的基本設(shè)施,實(shí)現(xiàn)對(duì)虛擬機(jī)鏡像、虛擬機(jī)磁盤完整性檢查、隱私性保護(hù)等功能。

1.2.5 Xen云平臺(tái)(XCP)

XCP[25,26]來源于Citrix XenServer[24]項(xiàng)目,由Mike McClurg負(fù)責(zé)該項(xiàng)目的完成和維護(hù)。Xen.org于2009年11月發(fā)布了XCP 0.1,現(xiàn)在的最新版本為XCP 1.1[68]

XCP是一個(gè)基于Xen hypervisor[69]的開源企業(yè)級(jí)服務(wù)器虛擬化和云計(jì)算平臺(tái),可以為中小企業(yè)提供完整的私有云解決方案。同時(shí),XCP 提供了一套針對(duì)于云計(jì)算可擴(kuò)展性的API,使其他開源云平臺(tái),如Eucalyptus、OpenNebula、OpenStack、Nimbus等更方便地使用Xen hypervisor。XCP支持Windows的半虛擬化實(shí)現(xiàn),支持容災(zāi),支持生成虛擬機(jī)快照、檢查點(diǎn)以及虛擬機(jī)遷移。

XCP滿足了云提供商的需求,通過Xen hypervisor的隔離功能和多租戶功能與增強(qiáng)的安全、存儲(chǔ)、網(wǎng)絡(luò)虛擬化技術(shù)的結(jié)合,提供豐富的虛擬基礎(chǔ)設(shè)施云服務(wù)。同時(shí),XCP 也滿足了普通用戶對(duì)私有云的安全性、可用性和性能方便的需求,并有效與公有云隔離。XCP 能夠增強(qiáng)服務(wù)器負(fù)載,為企業(yè)用戶在電力、設(shè)備冷卻和管理方面節(jié)約成本,提供可持續(xù)的計(jì)算能力,最大化地利用現(xiàn)有硬件并提高可靠性水平。

XCP的體系結(jié)構(gòu)如圖1.5所示。Xen是XCP啟動(dòng)之后第一個(gè)加載的軟件,運(yùn)行在64位模式下(要求XCP物理機(jī)也是64位Linux系統(tǒng)),負(fù)責(zé)虛擬化CPU、中斷和物理機(jī)內(nèi)存。Xen是一個(gè)非常輕量級(jí)的軟件層,沒有任何設(shè)備驅(qū)動(dòng)程序以外的串行端口。

圖1.5 XCP的體系結(jié)構(gòu)

控制域(Control Domain)接下來啟動(dòng),它是XCP的一個(gè)32位嵌入式版本Linux虛擬機(jī),具有額外的特權(quán)保證控制域可以控制物理機(jī)硬件設(shè)備并且能夠創(chuàng)建其他普通虛擬機(jī)。控制域包括物理機(jī)硬件驅(qū)動(dòng)、由Open vSwitch[73]實(shí)現(xiàn)的富虛擬網(wǎng)絡(luò)特性和對(duì)云存儲(chǔ)設(shè)施的支持。

XAPI是一個(gè)運(yùn)行在控制域中使用OCaml[87]實(shí)現(xiàn)的管理?xiàng)#?fù)責(zé)配置和控制XCP物理機(jī)以及 XCP 資源池,并且統(tǒng)籌其中的資源。它包括一個(gè)分布式數(shù)據(jù)庫和控制軟件,負(fù)責(zé)在XCP的管理接口監(jiān)聽由XAPI客戶端發(fā)出的控制指令。

存儲(chǔ)管理器接口(SMAPI)同樣運(yùn)行在控制域中,并且對(duì)不同的后臺(tái)存儲(chǔ)形式,如FC、iSCSI、基于文件的 VHD 磁盤或者本地存儲(chǔ)等提供了一致性訪問接口。XCP 定義了一種稱為存儲(chǔ)庫(Storage Repository,SR)的容器來描述一個(gè)存儲(chǔ)虛擬磁盤鏡像(VDI)的特定存儲(chǔ)目標(biāo)。VDI是虛擬磁盤的抽象模型,它包含虛擬磁盤的內(nèi)容。SMAPI允許VDI支持多種SR存儲(chǔ)類型,包括內(nèi)置的對(duì) IDE、SATA、SCSI、SAS 本地存儲(chǔ)的支持,以及對(duì) iSCSI、NFS、SAS、光纖通道(Fibre Channel,F(xiàn)C)遠(yuǎn)程連接存儲(chǔ)的支持。SR支持儲(chǔ)存資源隨需分配、VDI快照和快速復(fù)制,這些特性由一個(gè)基于微軟VHD[70]技術(shù)標(biāo)準(zhǔn)的軟件棧實(shí)現(xiàn)。

控制域中可以配置三種網(wǎng)絡(luò)類型,即管理網(wǎng)絡(luò)、存儲(chǔ)網(wǎng)絡(luò)和虛擬機(jī)網(wǎng)絡(luò)。用戶可以使用同一個(gè)物理網(wǎng)卡來支持這三種網(wǎng)絡(luò),也可以每一個(gè)網(wǎng)絡(luò)使用一個(gè)單獨(dú)的網(wǎng)卡,來提高安全性。管理網(wǎng)絡(luò)用于控制XAPI發(fā)送的請(qǐng)求、虛擬機(jī)活遷移、虛擬機(jī)導(dǎo)入導(dǎo)出、熱修復(fù)、資源池元數(shù)據(jù)備份、發(fā)送郵件預(yù)警、資源池內(nèi)通信。存儲(chǔ)網(wǎng)絡(luò)用于SMAPI獲取基于網(wǎng)絡(luò)的存儲(chǔ)內(nèi)容,存儲(chǔ)數(shù)據(jù)流是不經(jīng)過加密的,并且也經(jīng)過控制域,所以為了保證可靠性和安全性,有必要將存儲(chǔ)數(shù)據(jù)流和管理數(shù)據(jù)流進(jìn)行隔離(使用不同的網(wǎng)卡)。對(duì)于虛擬機(jī)網(wǎng)絡(luò),首先要說明的是,XCP 中有三種代表網(wǎng)絡(luò)實(shí)體的服務(wù)器端軟件對(duì)象,包括 PIF——代表 XCP物理機(jī)的物理網(wǎng)絡(luò)接口、VIF——代表XCP虛擬機(jī)的虛擬網(wǎng)絡(luò)接口、network—代表XCP物理機(jī)的虛擬以太網(wǎng)交換機(jī)。每一個(gè) XCP 物理機(jī)可以擁有一個(gè)或者多個(gè) network 對(duì)象,這就表示每個(gè)物理機(jī)上可以包括一個(gè)或多個(gè)虛擬網(wǎng)絡(luò)。沒有與PIF互連的network對(duì)象代表XCP的內(nèi)部網(wǎng)絡(luò),用于提供XCP虛擬機(jī)之間的互連,確保虛擬機(jī)與外界網(wǎng)絡(luò)的隔絕。與PIF連接的network對(duì)象代表XCP的外部網(wǎng)絡(luò),提供了一個(gè)VIF和PIF之間的網(wǎng)橋,可以使外部網(wǎng)絡(luò)通過PIF的網(wǎng)卡訪問物理機(jī)的可用資源。

XCP 可以在一臺(tái)物理機(jī)上運(yùn)行多個(gè)虛擬機(jī),每個(gè)虛擬機(jī)為其中運(yùn)行的操作系統(tǒng)提供完全隔離的計(jì)算環(huán)境、存儲(chǔ)環(huán)境和網(wǎng)絡(luò)環(huán)境。多個(gè) XCP 物理機(jī)能夠集成為一個(gè)資源池(XCP規(guī)定一個(gè)資源池最多由12個(gè)物理機(jī)組成),資源池可以作為一個(gè)物理機(jī)集群的獨(dú)立管理單元。XCP 支持資源池內(nèi)的虛擬機(jī)負(fù)載均衡,當(dāng)用戶開啟一個(gè)虛擬機(jī)、恢復(fù)斷電虛擬機(jī)、遷移虛擬機(jī)時(shí)都會(huì)用到XCP的虛擬機(jī)負(fù)載均衡。XCP可以決定在哪個(gè)物理機(jī)上開啟該虛擬機(jī)是最佳的,以達(dá)到資源的均衡利用,防止某些XCP物理機(jī)成為“熱點(diǎn)”。

1.2.6 Ganeti

Ganeti [27~29]是由Google公司基于Xen和KVM以及其他開源軟件開發(fā)的一款虛擬集群環(huán)境管理工具,包括3個(gè)子項(xiàng)目[41]:Ganeti Instance Image、Ganeti Web Manager、Twisted VNCAuthProxy。

Ganeti Instance Image定義Ganeti可以使用文件系統(tǒng)轉(zhuǎn)儲(chǔ)或tarball鏡像來配置虛擬機(jī),能夠在不需要外部工具的情況下實(shí)現(xiàn)虛擬機(jī)的安裝[45]。Ganeti Web Manager是一個(gè)基于Web的應(yīng)用,允許管理員通過它管理 Ganeti 和提供 VNC 或 SSH 方式訪問虛擬機(jī)。Twisted VNCAuthProxy作為VNC服務(wù)的中間人認(rèn)證代理,是通過VNC連接虛擬機(jī)的網(wǎng)關(guān)。同時(shí), Ganeti 的存儲(chǔ)管理允許網(wǎng)絡(luò) RAID1[42]虛擬磁盤,可以通過 DRBD(Distributed Replicated Block Device)[43]在物理主機(jī)間進(jìn)行磁盤數(shù)據(jù)同步。

Ganeti的體系結(jié)構(gòu)如圖1.6所示,其中,系統(tǒng)主要包含三類組件,分別是:

圖1.6 Ganeti體系結(jié)構(gòu)

① 外部客戶端。客戶端Ganeti Web Manager[77]通過RAPI(Remote API)協(xié)議(通過HTTP使用JSON協(xié)議[76])與管理節(jié)點(diǎn)的ganeti-rapi守護(hù)進(jìn)程交互,調(diào)用管理節(jié)點(diǎn)中的操作來實(shí)現(xiàn)虛擬機(jī)的管理功能。

② 管理節(jié)點(diǎn)。管理節(jié)點(diǎn)執(zhí)行客戶端發(fā)出的虛擬機(jī)管理請(qǐng)求:管理節(jié)點(diǎn)守護(hù)進(jìn)程從ganeti-rapi守護(hù)進(jìn)程獲取請(qǐng)求,并為請(qǐng)求建立隊(duì)列。另外,管理節(jié)點(diǎn)使用命令行接口CLI對(duì)命令進(jìn)行分類和執(zhí)行。CLI和ganeti-rapi守護(hù)進(jìn)程通過LUXI API與管理節(jié)點(diǎn)守護(hù)進(jìn)程進(jìn)行交互,管理節(jié)點(diǎn)守護(hù)進(jìn)程和普通節(jié)點(diǎn)守護(hù)進(jìn)程通過RPC(Remote Procedure Call)進(jìn)行交互[44],并通過OpenSSL[75]對(duì)RPC層進(jìn)行加密。

③ 普通節(jié)點(diǎn)。由四個(gè)組件組成:RPC監(jiān)聽器、磁盤管理、網(wǎng)絡(luò)管理和虛擬機(jī)管理器。普通節(jié)點(diǎn)從 RPC 監(jiān)聽器獲取請(qǐng)求,并將結(jié)果返回給請(qǐng)求者;磁盤管理包括邏輯卷管理、文件管理和網(wǎng)絡(luò)RAID1(使用DRBD進(jìn)行數(shù)據(jù)同步,如圖1.7所示);網(wǎng)絡(luò)管理對(duì)虛擬機(jī)實(shí)例的網(wǎng)絡(luò)配置進(jìn)行管理;虛擬機(jī)管理器管理程序管理多個(gè)本地虛擬機(jī)。

圖1.7 DRBD數(shù)據(jù)同步示意圖

1.2.7 OpenNebula

OpenNebula[30,31]是一款 OpenNebula.org 開發(fā)的開源項(xiàng)目,該項(xiàng)目是由 Ignacio M. Llorente[61]和Rubén S. Montero[62]在2005年啟動(dòng),并于2008年3月首次公開發(fā)布,到目前為止,該項(xiàng)目的合作者包括dsa-research.org、C12G Labs、Microsoft等[46]。OpenNebula提供靈活的體系架構(gòu)、接口和模塊,可以與多種類型的數(shù)據(jù)中心相結(jié)合。它支持 Xen、QEMU+KVM和VMware,并提供Amazon EC2接口。

OpenNebula 具有管理私有云、公有云以及混合云的能力,包括物理資源管理、虛擬設(shè)備管理、虛擬網(wǎng)絡(luò)管理以及存儲(chǔ)管理,并可依據(jù)定位策略整合物理機(jī)資源和遠(yuǎn)端云資源[47],相當(dāng)于在云上又做了一層虛擬化,如圖1.8所示。

圖1.8 OpenNebula體系結(jié)構(gòu)

OpenNebula體系結(jié)構(gòu)如圖1.8所示,其中,OpenNebula提供四種系統(tǒng)接口接收客戶端請(qǐng)求,客戶端接口通過 XML-RPC 與其他模塊進(jìn)行交互;用戶認(rèn)證模塊接收包含用戶信息的XML-RPC,通過訪問控制列表ACL對(duì)用戶身份進(jìn)行驗(yàn)證;請(qǐng)求管理器對(duì)XML-RPC請(qǐng)求進(jìn)行處理和協(xié)調(diào),并轉(zhuǎn)發(fā)給其他模塊;物理主機(jī)管理模塊通過ganglia[74]或SSH直接連接并管理所有普通節(jié)點(diǎn),如其對(duì)應(yīng)的物理資源和所使用的虛擬機(jī)管理器等;調(diào)度器根據(jù)用戶請(qǐng)求和物理主機(jī)的情況選擇合適的普通節(jié)點(diǎn)用于啟動(dòng)虛擬機(jī),是 OpenNebula 的負(fù)載均衡模塊;調(diào)度器選擇合適的普通節(jié)點(diǎn)后,存儲(chǔ)和鏡像模塊向鏡像庫發(fā)送 https 請(qǐng)求,鏡像庫通過SCP 向指定的普通節(jié)點(diǎn)分發(fā)鏡像文件;虛擬化模塊直接與普通節(jié)點(diǎn)的虛擬機(jī)管理器交互,對(duì)虛擬機(jī)的整個(gè)生命周期進(jìn)行管理;虛擬網(wǎng)絡(luò)模塊使用組件Etables[72]和Open vSwitch[73]對(duì)虛擬網(wǎng)絡(luò)進(jìn)行管理。

1.2.8 Enomalism

Enomalism[32, 34]由Enomaly Inc. [33]公司開發(fā),它的第一版本于2005年發(fā)布,意在提供一種自服務(wù)(Self-Service)的基礎(chǔ)設(shè)施云。后來,該系統(tǒng)改名為OpenECP[55]。Enomalism提供了一個(gè)功能類似于EC2的公有云。它基于Linux,支持Xen、KVM和VMware虛擬機(jī)管理器。Enomalism可以將企業(yè)數(shù)據(jù)中心與公共云計(jì)算服務(wù)集成起來,并通過統(tǒng)一的控制臺(tái)管理內(nèi)外資源。它的使用者包括[35]中國網(wǎng)絡(luò)電視臺(tái)、中國銀行(私有云)、City Network(公共云,北歐)、Orange/法國電信(垂直云計(jì)算)等。

Enomalism體系結(jié)構(gòu)如圖1.9所示,其中,使用iptables[56]作為系統(tǒng)的網(wǎng)絡(luò)入口和數(shù)據(jù)包過濾器;使用turbogears[54]作為前端接入系統(tǒng),并對(duì)外提供RESTful模式網(wǎng)絡(luò)服務(wù)API;使用 libvirt 虛擬化庫[53]為基礎(chǔ)做虛擬機(jī)管理器調(diào)度和適配;針對(duì)每個(gè)用戶使用私有的VLAN;基于Hadoop[58]和pNFS [59]建立分布式文件系統(tǒng)。

圖1.9 Enomalism體系結(jié)構(gòu)

主站蜘蛛池模板: 墨玉县| 西贡区| 环江| 韶山市| 卓资县| 香河县| 景东| 乐业县| 鱼台县| 丹阳市| 泽州县| 九龙县| 泰来县| 克拉玛依市| 镇巴县| 栖霞市| 景谷| 姜堰市| 黔江区| 沿河| 莆田市| 光山县| 囊谦县| 噶尔县| 武乡县| 四会市| 德格县| 崇州市| 白玉县| 通渭县| 苗栗市| 武安市| 宁波市| 邵武市| 山东省| 新田县| 彭州市| 长宁县| 兴文县| 蓝山县| 南昌市|