毛軍禮
摘要:云計(jì)算是近年來IT領(lǐng)域非常熱門的研究方向,OpenStack作為開源的云計(jì)算平臺(tái)得到了廣泛地應(yīng)用,重點(diǎn)對(duì)OpenStack中的Nova服務(wù)進(jìn)行介紹。描述Nova服務(wù)在OpenStack中的地位及與其他服務(wù)之間關(guān)系的基礎(chǔ)上,分別對(duì)Nova組件的邏輯架構(gòu)、運(yùn)行架構(gòu)和部署架構(gòu)進(jìn)行了簡要說明,并對(duì)Nova服務(wù)中的消息隊(duì)列、Nova Network組件和Nova Scheduler組件的工作原理進(jìn)行了進(jìn)一步闡述,提出了一種基于OpenStack的適合實(shí)驗(yàn)室或中小型企業(yè)的私有云構(gòu)建方案,并描述了其安裝部署流程。
關(guān)鍵詞:OpenStack;Nova;Nova Network;Nova Scheduler;私有云
中圖分類號(hào):TP393文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2018)03-60-4
Nova Service of OpenStack
MAO Junli
(The 54th Research Institute of CETC, Shijiazhuang Hebei 050081, China)
0引言
隨著云計(jì)算時(shí)代的到來,出現(xiàn)了各種基于IaaS層的云管理平臺(tái)。OpenStack作為開源云管理平臺(tái)軟件的代表,得到了越來越多企業(yè)的應(yīng)用和個(gè)人開發(fā)者的支持。OpenStack平臺(tái)是為了讓企業(yè)構(gòu)建靈活高效的云計(jì)算環(huán)境,打造一個(gè)部署更加靈活、功能豐富且高擴(kuò)展性的云計(jì)算平臺(tái)。OpenStack平臺(tái)的核心組件就是Nova服務(wù),也就是通常所說的OpenStack計(jì)算服務(wù),Nova服務(wù)是OpenStack平臺(tái)的中心控制單元,提供虛擬機(jī)實(shí)例的運(yùn)行功能、云網(wǎng)絡(luò)的管理功能、用戶控制、資源管理和訪問管理的云部署功能。
1 Nova在OpenStack框架中的位置
OpenStack的功能由多個(gè)子項(xiàng)目協(xié)同實(shí)現(xiàn),分別是Nova、 Swift、Keystone、Neutron、Glance及Horizon等,其中,Nova是核心管理部分[1-2]。在OpenStack云平臺(tái)系統(tǒng)中,Nova服務(wù)作為整個(gè)系統(tǒng)最為核心的模塊,完成虛擬機(jī)實(shí)例全生命周期管理、云平臺(tái)網(wǎng)絡(luò)管理及云平臺(tái)存儲(chǔ)管理等有關(guān)的管控能力。
OpenStack由多個(gè)單元組成:①Heat單元的作用是編排云;②Horizon組件為其他云服務(wù)提供一個(gè)基于Web的操作界面;③Ceilometer負(fù)責(zé)監(jiān)視其他模塊,其他模塊通過Keystone進(jìn)行身份認(rèn)證;④虛擬機(jī)(VM)是實(shí)現(xiàn)云計(jì)算的核心,Nova負(fù)責(zé)創(chuàng)建VM;⑤Glance提供鏡像給虛擬機(jī);⑥Cinder提供快存儲(chǔ)服務(wù)給虛擬機(jī);⑦Neutron提供虛擬機(jī)的網(wǎng)絡(luò)活動(dòng)及服務(wù);⑧Swift負(fù)責(zé)OpenStack的對(duì)象的存儲(chǔ),可保存Glance的鏡像文件和Cinder的備份卷。
Nova組件的主要任務(wù)是完成虛擬機(jī)的創(chuàng)建和維護(hù),以及云平臺(tái)的管控和服務(wù)提供等。Nova通過與Keystone組件交互獲得認(rèn)證授權(quán)服務(wù)、與Glance組件交互獲得虛擬機(jī)鏡像及與Horizon組件交互獲得用戶和管理員接口。
2 Nova邏輯架構(gòu)
Nova雖然是OpenStack中的一個(gè)組件,但是Nova與OpenStack整個(gè)系統(tǒng)的設(shè)計(jì)理念相當(dāng)一致。Nova也是根據(jù)功能的不同,被劃分成為不同的模塊來實(shí)現(xiàn)不同的任務(wù),Nova邏輯架構(gòu)如圖1所示。
①Nova-API:API服務(wù)守護(hù)進(jìn)程,是OpenStack計(jì)算服務(wù)的核心,提供查詢?nèi)肟诮o其他所有的API,對(duì)大部分部署活動(dòng)進(jìn)行初始化,以及配置一些策略;
②Nova-Compute:計(jì)算單元守護(hù)進(jìn)程,主要負(fù)責(zé)VM的創(chuàng)建和停止;
③Nova-Volume:卷服務(wù)進(jìn)程,負(fù)責(zé)映射到計(jì)算機(jī)卷的創(chuàng)建、追加、作廢及刪除等管理活動(dòng);
④Nova-Network:網(wǎng)絡(luò)控制守護(hù)進(jìn)程,負(fù)責(zé)從消息隊(duì)列中獲取網(wǎng)絡(luò)相關(guān)的作業(yè),通過實(shí)現(xiàn)相關(guān)的程序以操控網(wǎng)絡(luò);
⑤Nova-Scheduler:調(diào)度管理后臺(tái)進(jìn)程,負(fù)責(zé)調(diào)度選擇計(jì)算節(jié)點(diǎn),以啟動(dòng)新的VM運(yùn)行實(shí)例,通過特定的計(jì)算模型和算法從計(jì)算資源池中選擇合適的計(jì)算節(jié)點(diǎn)作為可調(diào)度的資源;
⑥Nova-Database:利用基于SQL的集中式數(shù)據(jù)庫,用于存儲(chǔ)云基礎(chǔ)平臺(tái)中的絕大多數(shù)編譯和運(yùn)行時(shí)的狀態(tài)數(shù)據(jù);
⑦Queue:提供中心hub,是整個(gè)Nova組件中的消息中樞,為守護(hù)進(jìn)程傳遞信息。
OpenStack的開發(fā)方、系統(tǒng)使用人員或系統(tǒng)其他組件通過Nova-PAI作為調(diào)用入口,Nova內(nèi)部的組件都是通過消息隊(duì)列或數(shù)據(jù)庫來實(shí)現(xiàn)API的調(diào)用和消息的傳遞。
3 Nova運(yùn)行架構(gòu)
Nova-API在Nova服務(wù)中是重要的關(guān)鍵單元,為其他組件訪問提供標(biāo)準(zhǔn)化的統(tǒng)一接口,計(jì)算資源服務(wù)、存儲(chǔ)資源服務(wù)及網(wǎng)絡(luò)資源服務(wù)等模塊都是通過API接口來執(zhí)行服務(wù)。API接口之間可以相互調(diào)用,在OpenStack中,計(jì)算服務(wù)通過調(diào)用存儲(chǔ)服務(wù)和網(wǎng)絡(luò)服務(wù)的API接口對(duì)外提供服務(wù),虛擬機(jī)創(chuàng)建的時(shí)序圖如圖2所示。
①創(chuàng)建VM:VM實(shí)例的建立需通過調(diào)用Nova-API提供的接口來實(shí)現(xiàn),Nova-API服務(wù)單元進(jìn)行參數(shù)校驗(yàn)和用戶合法性校驗(yàn),根據(jù)所要?jiǎng)?chuàng)建的VM的CPU、內(nèi)存、磁盤和網(wǎng)絡(luò)等要素信息,Compute-API服務(wù)單元訪問虛擬機(jī)實(shí)例數(shù)據(jù)庫。
②調(diào)度:通過Nova-Scheduler和Compute-API單元配合,確定新建的VM實(shí)例運(yùn)行在的哪個(gè)物理主機(jī)上,VM實(shí)例的調(diào)度消息將通過Compute-API接口以遠(yuǎn)程過程調(diào)用的模式傳遞給消息隊(duì)列。
③訂閱調(diào)度消息:Nova-Scheduler單元通過訂閱調(diào)度消息來接收包含調(diào)度信息的消息。收到調(diào)度消息之后,Nova-scheduler單元在所有可用的計(jì)算節(jié)點(diǎn)中選擇一個(gè)物理主機(jī)運(yùn)行新創(chuàng)建的虛擬機(jī)實(shí)例,消息隊(duì)列將收到Nova調(diào)度單元傳來的VM的基礎(chǔ)消息和物理主機(jī)數(shù)據(jù)。
④部署:物理主機(jī)訂閱并收到調(diào)度消息,通過調(diào)度消息中所包含的要素創(chuàng)建并運(yùn)行虛擬機(jī)。
⑤分配IP:VM實(shí)例建立完成以后,Nova-Compute單元調(diào)用Network-API接口,把VM實(shí)例信息和網(wǎng)絡(luò)信息統(tǒng)一發(fā)送給消息隊(duì)列。
⑥訂閱網(wǎng)絡(luò)消息:Nova-Network訂閱并將接收到網(wǎng)絡(luò)的相關(guān)信息,Nova-Network結(jié)合DHCP給新創(chuàng)建的虛擬機(jī)實(shí)例分配IP地址。
⑦完成網(wǎng)絡(luò)分配。
4 Nova部署架構(gòu)
Nova組件的安裝配置和布設(shè)非常靈活便捷,常用的有以下幾種部署架構(gòu):
①單節(jié)點(diǎn)架構(gòu):在單臺(tái)服務(wù)器節(jié)點(diǎn)上安裝部署所有的Nova服務(wù)組件,這種部署方式通常用于實(shí)驗(yàn)室場景,或者開發(fā);
②雙節(jié)點(diǎn)架構(gòu):2臺(tái)服務(wù)器,一臺(tái)安裝配置作為云控制器節(jié)點(diǎn),另一臺(tái)安裝配置作為ComputeNode,ComputeNode運(yùn)行Nova-Compute,云控制節(jié)點(diǎn)運(yùn)行所有Nova的其他服務(wù)組件;
③多節(jié)點(diǎn)架構(gòu):在雙節(jié)點(diǎn)架構(gòu)的基礎(chǔ)上,將Nova-Compute部署在一臺(tái)單獨(dú)的服務(wù)器上,為了增加更多的Compute Node,在新加的服務(wù)器上拷貝nova.conf配置文件,即可形成多節(jié)點(diǎn)的部署架構(gòu)。
5消息隊(duì)列
在Nova組件中,所采用的消息隊(duì)列是AMQP高級(jí)消息隊(duì)列協(xié)議[3-5],是處于應(yīng)用層的一種協(xié)議規(guī)范,基于異步消息傳送為基礎(chǔ)。通常,AMQP協(xié)議的服務(wù)器簡稱為消息隊(duì)列,OpenStack通過消息隊(duì)列這個(gè)橋梁溝通其計(jì)算節(jié)點(diǎn)、網(wǎng)絡(luò)節(jié)點(diǎn)、存儲(chǔ)節(jié)點(diǎn)以及各個(gè)不同的API服務(wù)組件和調(diào)度模塊之間的通信。一般利用RabbitMQ技術(shù)來實(shí)現(xiàn)平臺(tái)中的AMQP協(xié)議,采取遠(yuǎn)程過程調(diào)用(RPC)方式完成Nova服務(wù)各單元之間的消息傳遞和API接口調(diào)用,其調(diào)用模式類似于RSS的訂閱和發(fā)布模式,AMQP在OpenStack中的應(yīng)用架構(gòu)如圖3所示。
OpenStack架構(gòu)對(duì)外提供的接口均為REST API標(biāo)準(zhǔn)接口,通過AMQP消息隊(duì)列完成OpenStack框架內(nèi)部各個(gè)組件之間的通信。
6 Nova Network組件
Nova-Network單元是OpenStack平臺(tái)的網(wǎng)絡(luò)單元,負(fù)責(zé)云平臺(tái)VM集群之間及內(nèi)部虛擬網(wǎng)絡(luò)平臺(tái)與外部公網(wǎng)平臺(tái)之間的互聯(lián)互通。
OpenStack平臺(tái)的網(wǎng)絡(luò)模型有Flat、Flat DHCP和VLAN三種網(wǎng)絡(luò)模型,默認(rèn)采用VLAN模式。這幾種網(wǎng)絡(luò)模式可以共存于一個(gè)OpenStack平臺(tái),采取分片式網(wǎng)絡(luò)管理解決方案,根據(jù)不同網(wǎng)絡(luò)區(qū)域的具體需求采用不同的網(wǎng)絡(luò)模型。
①Flat:全部創(chuàng)建的VM實(shí)例都通過人工配置好的網(wǎng)橋連接到相同的虛擬網(wǎng)絡(luò)中,計(jì)算節(jié)點(diǎn)網(wǎng)關(guān)的IP地址配置為Nova網(wǎng)絡(luò)組件所在節(jié)點(diǎn)的IP地址。在開啟虛擬機(jī)時(shí),將VM實(shí)例創(chuàng)建時(shí)手工配制的IP地址加注到VM鏡像中。通過對(duì)新建的VM實(shí)例進(jìn)行地址翻譯和轉(zhuǎn)換,實(shí)現(xiàn)云平臺(tái)和外部網(wǎng)絡(luò)平臺(tái)的互通。
②Flat DHCP:該模式的運(yùn)行方式類似于Flat模式,從IP地址資源池中選取IP地址分配給虛擬機(jī)實(shí)例,和Flat類同,該網(wǎng)絡(luò)模型為扁平式網(wǎng)絡(luò),所有創(chuàng)建成功的虛擬機(jī)實(shí)例都和相同的網(wǎng)橋相關(guān)聯(lián)。與Flat模式不同的是,該模型多運(yùn)行了一個(gè)DHCP服務(wù),并與以太網(wǎng)設(shè)備建立網(wǎng)橋,通過DHCP服務(wù)為虛擬機(jī)實(shí)例動(dòng)態(tài)分配IP和回收IP。
③VLAN:VLAN網(wǎng)絡(luò)模型為默認(rèn)的網(wǎng)絡(luò)模式,通過為每個(gè)子項(xiàng)目創(chuàng)建獨(dú)立的VLAN、網(wǎng)橋和子網(wǎng),第一步創(chuàng)建VLAN和網(wǎng)橋,第二步配置VLAN的IP地址,將VLAN加入進(jìn)獨(dú)立網(wǎng)橋,第三步將虛擬機(jī)實(shí)例的虛擬網(wǎng)卡加入到獨(dú)立網(wǎng)橋中,這樣,同在一個(gè)組織的虛擬機(jī)實(shí)例均隸屬于相同的虛擬局域網(wǎng)絡(luò)中,這些項(xiàng)目所能獲得的IP地址資源均為私網(wǎng)網(wǎng)段。
7 Nova Scheduler組件
Nova-Scheduler是Nova的資源調(diào)度器,負(fù)責(zé)選擇合適的節(jié)點(diǎn)響應(yīng)VM的請(qǐng)求,通過API提供接口給Nova的其他組成單元。Nova調(diào)度單元由一組Python文件構(gòu)成,Nova-Scheduler調(diào)度流程如圖4所示。
Nova-Scheduler單元采用的調(diào)度流程如下:
①啟動(dòng)調(diào)度進(jìn)程:當(dāng)接收到用戶創(chuàng)建VM的請(qǐng)求后,Nova調(diào)度組件啟動(dòng)Nova默認(rèn)的過濾器FilterScheduler;
②過濾主機(jī)列表:FilterScheduler獲取全部主機(jī)列表,根據(jù)配置文件依次調(diào)用過濾程序,按照過濾屬性進(jìn)行過濾,最后選擇合適主機(jī)創(chuàng)建指定數(shù)目的虛擬機(jī);
③權(quán)值計(jì)算:將過濾后的主機(jī)節(jié)點(diǎn)逐個(gè)計(jì)算權(quán)值,OpenStack提供了2種策略來支持權(quán)值計(jì)算;
④權(quán)值排序并響應(yīng)請(qǐng)求:根據(jù)計(jì)算出的權(quán)值對(duì)主機(jī)列表排序,根據(jù)用戶請(qǐng)求選擇適當(dāng)數(shù)量的權(quán)值,最小的主機(jī)響應(yīng)請(qǐng)求創(chuàng)建或更改虛擬機(jī),并將請(qǐng)求處理結(jié)果返回給Nova-API。
8基于OpenStack的私有云平臺(tái)部署實(shí)驗(yàn)
為滿足科研實(shí)驗(yàn)室以及中小企業(yè)不同用戶和不同階段的需求,為其提供高可用性云服務(wù),本文提出一種基于OpenStack的私有云計(jì)算平臺(tái)建設(shè)思路[6]。為了提供高可用的云服務(wù),需要在虛擬鏡像中集成多種開發(fā)環(huán)境和開發(fā)工具,該私有云構(gòu)建方案包括存儲(chǔ)節(jié)點(diǎn)、控制節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn),如圖5所示,Swift單元主要部署在存儲(chǔ)節(jié)點(diǎn)上,Keystone、Glance、Horizon和Nova(不含Nova-Compute)單元均部署在控制節(jié)點(diǎn)上,可以采用一臺(tái)或多臺(tái)服務(wù)器,Nova-Compute組件部署在計(jì)算節(jié)點(diǎn)上。
根據(jù)企業(yè)私有云部署方案進(jìn)行安裝部署過程分為6個(gè)步驟,包括Keystone、Swift、Glance、Nova和Horizon單元的部署及定制開發(fā)環(huán)境,如圖6所示。
①安裝Keystone組件,對(duì)各項(xiàng)服務(wù)進(jìn)行授權(quán)以便順利使用,例如對(duì)計(jì)算、存儲(chǔ)和鏡像等服務(wù)進(jìn)行注冊(cè),Swift組件提供分布式云存儲(chǔ)服務(wù)。
②Glance組件通過建立數(shù)據(jù)庫以存儲(chǔ)鏡像的元數(shù)據(jù)、管理鏡像的上傳、刪除及驗(yàn)證等,實(shí)現(xiàn)虛擬機(jī)鏡像管理的工程。
③Nova組件是核心部分,較為復(fù)雜,包括虛擬機(jī)實(shí)例、網(wǎng)絡(luò)及云硬盤等的管理,Nova組件安裝配置完成后需要安裝KVM虛擬機(jī)工具,Nova開啟VM實(shí)例需通過第三方軟件來實(shí)現(xiàn)。另外,為了保證時(shí)間同步,以控制節(jié)點(diǎn)作為時(shí)間基準(zhǔn),所有計(jì)算節(jié)點(diǎn)的時(shí)鐘均同步到控制節(jié)點(diǎn)。
④Horizon組件為用戶提供Web界面服務(wù),客戶端通過該服務(wù)即可使用云平臺(tái)。
管理員為私有云平臺(tái)定制所需鏡像的必要條件是其具備了控制節(jié)點(diǎn)、計(jì)算節(jié)點(diǎn)和鏡像服務(wù),可以接受用戶的使用需求,提供虛擬化實(shí)例。根據(jù)用戶的開發(fā)需求,為鏡像定制軟件和服務(wù),安裝所需的開發(fā)環(huán)境在虛擬機(jī)上,并開啟需要的服務(wù),用戶實(shí)例化該鏡像后,可以便捷地使用所需要的軟件平臺(tái)服務(wù),不用每次都重新安裝軟件和啟動(dòng)服務(wù),有效地提高了工作效率。
9結(jié)束語
本文通過對(duì)OpenStack中核心組件Nova進(jìn)行全面分析解剖,對(duì)其工作原理進(jìn)行了詳細(xì)地闡述,對(duì)深入了解和使用OpenStack具有重要的意義,并提出一種簡易的實(shí)驗(yàn)室或小型企業(yè)私有云的構(gòu)建方案以及安裝部署流程,利用開源的OpenStack軟件快速構(gòu)建私有云平臺(tái),為科研工作或企業(yè)用戶提供彈性計(jì)算服務(wù),并通過在虛擬鏡像中集成各種開發(fā)環(huán)境和開發(fā)工具,提高云服務(wù)的可用性。
參考文獻(xiàn)
[1]李知杰,趙健飛.OpenStack開源云計(jì)算平臺(tái)[J].軟件導(dǎo)刊, 2012(12):10-12.
[2]趙保華.OpenStack構(gòu)建下的云計(jì)算平臺(tái)實(shí)現(xiàn)與研究[J].激光雜志,2014,35(11):117-119.
[3]鄭晨.基于OpenStack的移動(dòng)設(shè)備消息中間件研究與實(shí)現(xiàn)[D].沈陽:東北大學(xué),2013.
[4] Vinoski,S.Advanced Message Queuing Protocol[J].IEEE Internet Computing,2006,10(6):87-89.
[5]李知杰.基于AMQP的異步通信實(shí)現(xiàn)及其在OpenStack項(xiàng)目中的應(yīng)用[J].軟件導(dǎo)刊,2013(7):35-37.
[6] AN Jianwei.A Brief Analysis on Private Cloud Construction of Traditional Enterprise[J].China Internet Weekly,2014,7(20): 38-39.