隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,移動(dòng)網(wǎng)絡(luò)和開放平臺(tái)的急劇增長(zhǎng),云計(jì)算作為一種新興的網(wǎng)絡(luò)共享商業(yè)計(jì)算模型出現(xiàn)。云計(jì)算可以將計(jì)算任務(wù)分布在大量計(jì)算機(jī)構(gòu)成的資源池上,使各種應(yīng)用系統(tǒng)能夠根據(jù)需要獲取計(jì)算力、存儲(chǔ)空間和各種軟件服務(wù)。“云”中的這些資源在使用者看來是可以無(wú)限擴(kuò)展的,并且可以隨時(shí)獲取,按需使用,隨時(shí)擴(kuò)展,按使用付費(fèi)。云計(jì)算包含三種不同服務(wù)類型:SaaS(Software as a Service,軟件即服務(wù))、PaaS(Platform as a Service,平臺(tái)即服務(wù))和IaaS(Infrastructure as a Service,基礎(chǔ)架構(gòu)即服務(wù)),其中最重要也是最核心的技術(shù)就是IaaS。
IaaS 指的是以服務(wù)形式為使用者提供服務(wù)器、存儲(chǔ)和網(wǎng)絡(luò)硬件,在IaaS 服務(wù)中,資源是共享的,并根據(jù)用戶的請(qǐng)求進(jìn)行預(yù)留。但用戶對(duì)資源的實(shí)際需求往往是不斷變化的,如果資源預(yù)留的過多或過少都會(huì)造成資源的不合理分配;另外,云計(jì)算平臺(tái)還需要根據(jù)應(yīng)用和服務(wù)的實(shí)際負(fù)載,對(duì)用戶請(qǐng)求的資源進(jìn)行調(diào)度。為了提供IaaS 服務(wù)的基礎(chǔ)架構(gòu),一般是利用虛擬化技術(shù)搭建云平臺(tái)的內(nèi)部架構(gòu)。虛擬化技術(shù)為云計(jì)算模型中的資源管理提供一種有效的解決辦法。虛擬化技術(shù)可以在一臺(tái)物理主機(jī)上劃分并創(chuàng)建出不同的虛擬機(jī),虛擬機(jī)之間相互隔離。通過將應(yīng)用和服務(wù)封裝在虛擬機(jī)中并根據(jù)負(fù)載的變化進(jìn)行虛擬機(jī)和物理資源的調(diào)度來實(shí)現(xiàn)整個(gè)云平臺(tái)的管理。
在目前已有的云計(jì)算平臺(tái)中,服務(wù)商提供了不同處理能力的虛擬機(jī)實(shí)例供用戶選擇。例如亞馬遜的EC2 平臺(tái),用戶可以根據(jù)自身需求選擇Small、Large、Extra Large 等若干種不同級(jí)別的虛擬機(jī)實(shí)例,能夠獨(dú)立地對(duì)所租用虛擬機(jī)的狀態(tài)進(jìn)行啟動(dòng)、停止、關(guān)閉等操作。但對(duì)于初級(jí)用戶而言,對(duì)于選擇何種級(jí)別的虛擬機(jī)實(shí)例缺乏經(jīng)驗(yàn),選擇過低或過高勢(shì)必都造成云平臺(tái)資源的浪費(fèi)和用戶使用成本的增加;而對(duì)于中級(jí)或高級(jí)用戶來說,用戶的實(shí)際需求也隨著應(yīng)用和服務(wù)的不斷發(fā)展而迅速變化,他們需要對(duì)租用的云計(jì)算平臺(tái)提供的虛擬機(jī)資源享有更高的靈活度和更多的控制權(quán)。這就導(dǎo)致了云計(jì)算平臺(tái)下的虛擬化管理的兩個(gè)問題:虛擬機(jī)所分配的資源一般都為預(yù)先定義,但應(yīng)用程序信息的不確定性以及物理主機(jī)處理能力的差異性容易導(dǎo)致云計(jì)算環(huán)境中的負(fù)載失衡。同時(shí),當(dāng)應(yīng)用程序?qū)τ谫Y源的需求增加或減少時(shí),還需要選擇合適的物理主機(jī)對(duì)虛擬機(jī)進(jìn)行遷移或釋放不必要的資源。這對(duì)云計(jì)算平臺(tái)的服務(wù)商而言可以將剩余資源回收并有效地分配給其他用戶;對(duì)虛擬機(jī)的使用者而言可以避免占有不必要的資源而增加云的使用成本。有研究表明,考慮虛擬機(jī)的放置策略能夠有效協(xié)調(diào)不同物理主機(jī)的負(fù)載、維持高效的資源使用率。
因此,文章提出一種對(duì)用戶和服務(wù)商而言更自動(dòng)、可控、靈活的彈性云計(jì)算平臺(tái)架構(gòu),能夠根據(jù)應(yīng)用程序和服務(wù)的負(fù)載使資源彈性分配,實(shí)現(xiàn)云計(jì)算環(huán)境中資源的合理優(yōu)化和使用。該架構(gòu)的主要優(yōu)點(diǎn)包括:(1)能夠?qū)崟r(shí)監(jiān)控云計(jì)算環(huán)境中資源的使用情況,根據(jù)應(yīng)用和服務(wù)對(duì)資源的占用情況實(shí)現(xiàn)可伸縮性的動(dòng)態(tài)虛擬機(jī)的調(diào)度;(2)為使用者提供更靈活的管理方式;(3)有效降低使用成本,能夠?qū)μ摂M機(jī)所占用的資源量實(shí)時(shí)記錄,計(jì)費(fèi)方式更加合理、透明。
1 Xen虛擬化技術(shù)
1.1 Xen 虛擬化結(jié)構(gòu)
彈性云計(jì)算平臺(tái)的計(jì)算資源、存儲(chǔ)資源、網(wǎng)絡(luò)資源需要虛擬化技術(shù)的支持。虛擬化技術(shù)能夠?qū)⒉煌Y(jié)構(gòu)的物理資源整合為邏輯資源池來供整個(gè)云計(jì)算平臺(tái)使用。目前主流的開源虛擬化實(shí)現(xiàn)包括Xen 和KVM。其中Xen 可以工作在半虛擬化(Paravirtualization)和完全虛擬化兩種模式之下。半虛擬化又叫做超虛擬化技術(shù),該技術(shù)通過對(duì)客戶操作系統(tǒng)做一些修改便可以在不支持虛擬化的硬件之上運(yùn)行,無(wú)硬件依賴的特性使Xen 的應(yīng)用范圍更加廣泛。同時(shí)由于直接運(yùn)行在硬件之上,虛擬機(jī)的性能更接近真實(shí)硬件環(huán)境,因此Xen更容易達(dá)到高性能。Amazon EC2、GoGridXen 和Citrix的云平臺(tái)都采用Xen 虛擬化技術(shù),文章的彈性云架構(gòu)也采用Xen 虛擬化技術(shù)來實(shí)現(xiàn)。
Xen 的主要結(jié)構(gòu)如下圖所示:
圖1 Xen 虛擬化結(jié)構(gòu)
1.2 Xen Hypervisor
Xen Hypervisor 又叫做虛擬機(jī)監(jiān)控器(VMM),實(shí)際上是一個(gè)軟件層,介于硬件和操作系統(tǒng)之間,直接運(yùn)行在機(jī)器硬件上。Xen Hypervisor 對(duì)硬件層進(jìn)行虛擬,對(duì)系統(tǒng)中的所有虛擬機(jī)(VM)執(zhí)行調(diào)度和分配資源,并且驅(qū)動(dòng)硬件外設(shè)控制虛擬機(jī)的運(yùn)行。而XenHypervisor 的這些調(diào)度和分配工作對(duì)于客戶操作系統(tǒng)而言是透明的。
1.3 Domain 0
Domain 0 是一個(gè)經(jīng)過修改的Linux 內(nèi)核,也是唯一直接運(yùn)行在Xen Hypervisor 之上的虛擬機(jī)。Domain 0在其它Domain 啟動(dòng)前啟動(dòng),其他虛擬機(jī)需要和Domain 0 進(jìn)行交互,通過Domain 0 來和物理網(wǎng)絡(luò)硬件通信、訪問物理I/O 資源等。
1.4 Domain U
在Xen Hypervisor 之上運(yùn)行的所有虛擬機(jī)都位于Domain U,這些虛擬機(jī)獲取到的只是虛擬的硬件資源?蛻舨僮飨到y(tǒng)(Guest OS)安裝在虛擬機(jī)(VM)上,并通過Hypervisor 設(shè)定的特權(quán)等級(jí)運(yùn)行在獨(dú)立的地址空間以相互隔離。
2 系統(tǒng)架構(gòu)與設(shè)計(jì)
下圖描述了基于Xen 虛擬化的彈性云整體架構(gòu),包括虛擬化集群、管理控制中心和用戶三部分。用戶從客戶端連接管理控制中心獲取租用的虛擬機(jī)的運(yùn)行狀態(tài),并可以對(duì)虛擬機(jī)進(jìn)行啟動(dòng)、關(guān)閉等操作。管理控制中心將用戶和云內(nèi)部的虛擬化集群隔離開,所有的管理任務(wù)都由管理控制中心的相應(yīng)模塊執(zhí)行。管理控制中心是整個(gè)彈性云平臺(tái)的核心,云計(jì)算平臺(tái)中所有的物理資源和虛擬資源的使用情況都在這里進(jìn)行匯總,并按照用戶預(yù)先訂閱的條件,觸發(fā)預(yù)設(shè)策略按需進(jìn)行虛擬機(jī)動(dòng)態(tài)調(diào)度,保證云平臺(tái)的彈性。管理控制中心主要由監(jiān)控模塊、調(diào)度模塊、日志模塊、計(jì)費(fèi)模塊和用戶模塊五個(gè)部分組成。
圖2 基于Xen 虛擬化技術(shù)的彈性云架構(gòu)
2.1 監(jiān)控模塊
監(jiān)控模塊的主要作用是和位于云平臺(tái)內(nèi)部的虛擬機(jī)集群中的虛擬機(jī)監(jiān)控器進(jìn)行交互,獲得物理主機(jī)和虛擬機(jī)對(duì)于 CPU、內(nèi)存和網(wǎng)絡(luò)的使用情況,并將數(shù)據(jù)匯總至管理控制中心以供其它模塊使用。
監(jiān)控模塊包括兩部分,即位于每臺(tái)物理主機(jī)上的服務(wù)端和位于管理控制中心的客戶端。其中監(jiān)控模塊的服務(wù)端負(fù)責(zé)監(jiān)控物理主機(jī)和運(yùn)行在它之上的虛擬機(jī)的資源使用情況,監(jiān)控模塊的客戶端定期向服務(wù)端發(fā)出請(qǐng)求對(duì)這些數(shù)據(jù)進(jìn)行匯總,這些功能主要通過Libvirt 庫(kù)[6]實(shí)現(xiàn)。Libvirt是提供虛擬化管理的一套API集合,它支持包括 Xen 、KVM 在內(nèi)的多種虛擬機(jī)監(jiān)控程序。監(jiān)控模塊通過Libvirt 主要實(shí)現(xiàn)了以下功能:對(duì)虛擬機(jī)進(jìn)行包括啟動(dòng)、停止、暫停、保存、恢復(fù)及遷移在內(nèi)的操作;獲取物理主機(jī)和虛擬機(jī)的運(yùn)行狀態(tài)和資源使用信息。
通過Libvirt 進(jìn)行監(jiān)控的方式如下圖所示:
圖3 利用Libvirt 監(jiān)控示意圖
在需要監(jiān)控的虛擬機(jī)集群中的每臺(tái)物理主機(jī)上安裝Libvirt daemon(libvirtd),Libvirt daemon 運(yùn)行在虛擬機(jī)的Domain 0 域,它負(fù)責(zé)收集物理主機(jī)及虛擬機(jī)對(duì)于CPU、內(nèi)存、網(wǎng)絡(luò)等資源的使用情況,并與管理控制中心的libvirt 模塊通過API 定義的通用協(xié)議進(jìn)行遠(yuǎn)程通信來傳遞監(jiān)控?cái)?shù)據(jù)。為了獲取每臺(tái)物理主機(jī)和虛擬機(jī)的資源使用情況,定義了以下數(shù)據(jù)結(jié)構(gòu):
Struct DomainInfo
{
unsigned char state; //當(dāng)前域的運(yùn)行狀態(tài)
unsigned long maxMem; //支持的最大內(nèi)存
unsigned long memory; //使用的內(nèi)存
unsigned short nrVirtCpu; //虛擬CPU 數(shù)量
unsigned long long cpuTime; //虛擬CPU 運(yùn)行時(shí)間
unsigned long network; //網(wǎng)絡(luò)帶寬
}
每個(gè)Domain 中虛擬機(jī)的資源占用情況獲取流程如下所示:
圖4 獲取虛擬機(jī)資源占用流程
其中Domain 0 反映的是物理主機(jī)的資源占用情況,其余Domain 的CPU 運(yùn)行時(shí)間可以通過在某個(gè)時(shí)間段Δt 內(nèi)的兩次DomainInfo 中虛擬CPU 運(yùn)行時(shí)間的差來得到,若記Δt 前后Domain U 的DomainInfo 分別為Da,Db,那么虛擬CPU 運(yùn)行時(shí)間VirtCPURuntime可以表示為:
2.2 調(diào)度模塊
調(diào)度模塊根據(jù)監(jiān)控模塊獲取的資源使用情況,根據(jù)預(yù)先設(shè)定的策略,對(duì)虛擬機(jī)是否遷移以及遷移對(duì)象進(jìn)行選擇?紤]到云平臺(tái)中虛擬機(jī)上運(yùn)行的應(yīng)用程序信息的差異,物理主機(jī)和虛擬機(jī)的負(fù)載有可能出現(xiàn)時(shí)高時(shí)低的跳躍,因此如果只根據(jù)某個(gè)時(shí)刻監(jiān)控得到的峰值來進(jìn)行資源重新分配或動(dòng)態(tài)遷移則有可能造成整個(gè)虛擬機(jī)集群內(nèi)的頻繁遷移,增加不必要的開銷,無(wú)法達(dá)到負(fù)載均衡的目的。為了避免這種情況,做出以下改進(jìn):當(dāng)出現(xiàn)監(jiān)控得到的負(fù)載值超過閾值時(shí),進(jìn)一步觀察接下來的 N 個(gè)監(jiān)控值,當(dāng)出現(xiàn)多于 M 個(gè)值超過閾值時(shí)再進(jìn)行資源重新分配或動(dòng)態(tài)遷移。其中N 的大小由云平臺(tái)自身決定,M 的大小以M/N 的比例形式由用戶通過客戶端預(yù)先給出,用戶也可以選擇將調(diào)度策略托管給云平臺(tái)來自動(dòng)完成。如果用戶選擇的比例值越接近0,則說明用戶采用較為激進(jìn)的調(diào)度策略,在出現(xiàn)峰值時(shí)就進(jìn)行虛擬機(jī)調(diào)度;反之,如果用戶選擇的比例值越接近100%,則說明用戶采用較為保守的調(diào)度策略,在出現(xiàn)若干個(gè)峰值后才進(jìn)行虛擬機(jī)調(diào)度。
在做出虛擬機(jī)調(diào)度的決策之后,調(diào)度模塊首先根據(jù)虛擬機(jī)所在物理主機(jī)上資源的使用情況判斷能否為虛擬機(jī)重新分配相應(yīng)的資源,通過這種方式能夠減少虛擬機(jī)遷移所帶來網(wǎng)絡(luò)開銷。如果所在物理主機(jī)無(wú)法滿足虛擬機(jī)的資源請(qǐng)求,則需要進(jìn)行虛擬機(jī)動(dòng)態(tài)遷移。
遷移目的主機(jī)的選取考慮兩方面的因素:響應(yīng)速度均衡和處理能力均衡。根據(jù)監(jiān)控模塊獲取的集群內(nèi)各物理主機(jī)對(duì)ping 請(qǐng)求的響應(yīng)時(shí)間,以及物理主機(jī)CPU、內(nèi)存的使用量進(jìn)行加權(quán)。選擇權(quán)重值最高的物理主機(jī)作為目的主機(jī)。這種算法能較好地反映各物理主機(jī)的運(yùn)行狀態(tài),當(dāng)觸發(fā)虛擬機(jī)遷移后,權(quán)重值最大的物理主機(jī)相應(yīng)的網(wǎng)絡(luò)負(fù)載與可提供的處理能力都會(huì)有相應(yīng)的下降,從而權(quán)重值也會(huì)變化。在這個(gè)過程中集群中處理能力與網(wǎng)絡(luò)負(fù)載次之的主機(jī)也會(huì)逐漸被選為接受虛擬機(jī)遷移的對(duì)象,相應(yīng)的資源占用率也將提高,在整體上而言集群的負(fù)載也達(dá)到均衡。
2.3 計(jì)費(fèi)模塊
計(jì)費(fèi)模塊根據(jù)監(jiān)控模塊獲取的資源使用數(shù)據(jù),統(tǒng)計(jì)不同用戶對(duì)于各物理資源的占用情況。按照預(yù)先設(shè)定的資源使用價(jià)格以及用戶預(yù)先指定的閾值和調(diào)度策略計(jì)算出各用戶的使用費(fèi)用,并將數(shù)據(jù)發(fā)送到用戶模塊。若每單位計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)的費(fèi)用為i C(i=1,2,3),用戶k 對(duì)于物理主機(jī)j(j=1,2,3,…,n)的使用量為kij X ,用戶為指定的閾值下界1 U 、上界2 U 和調(diào)度策略P 應(yīng)支付的相應(yīng)費(fèi)用為f( 1 U , 2 U , P) (具體計(jì)費(fèi)策略可由云平臺(tái)預(yù)先定義),那么該用戶應(yīng)支付的總費(fèi)用k C 為:
2.4 日志模塊
日志模塊主要根據(jù)監(jiān)控模塊獲取的數(shù)據(jù),記錄云平臺(tái)內(nèi)各物理主機(jī)和虛擬機(jī)運(yùn)行狀態(tài)、資源使用情況以及用戶對(duì)虛擬機(jī)進(jìn)行的操作。
2.5 用戶模塊
用戶模塊包括服務(wù)端和客戶端兩部分。用戶可以通過客戶端向服務(wù)端發(fā)送請(qǐng)求,包括創(chuàng)建、啟動(dòng)、停止、暫停、保存和恢復(fù)虛擬機(jī),對(duì)虛擬機(jī)調(diào)度的閾值及策略(保守或激進(jìn))進(jìn)行訂閱,同時(shí)可以獲取已租用的虛擬機(jī)的運(yùn)行狀態(tài)及應(yīng)支付的費(fèi)用等;服務(wù)端收到關(guān)于虛擬機(jī)的操作請(qǐng)求后將其傳遞給監(jiān)控模塊處理,并將用戶訂閱的閾值及策略傳遞給調(diào)度中心,同時(shí)將虛擬機(jī)的運(yùn)行狀態(tài)及費(fèi)用反饋給用戶。
3 實(shí)驗(yàn)和分析
根據(jù)圖2 所描述的系統(tǒng)架構(gòu),使用3 臺(tái)PC 搭建實(shí)驗(yàn)平臺(tái),其中一臺(tái)作為管理控制中心安裝各模塊,另外兩臺(tái)PC 作為物理主機(jī),每臺(tái)分別安裝Centos 5.3操作系統(tǒng),Xen 3.0 和虛擬機(jī)控制器,并在每臺(tái)物理主機(jī)上創(chuàng)建2 個(gè)虛擬機(jī),安裝Centos 5.3 操作系統(tǒng)。每臺(tái)PC 的CPU 為四核2.13GHz,硬盤大小為160G,轉(zhuǎn)速7200RPM,內(nèi)存2G,每臺(tái)虛擬機(jī)分配兩個(gè)CPU,512M內(nèi)存和20G 硬盤。本節(jié)對(duì)提出的彈性云架構(gòu)的原型系統(tǒng)進(jìn)行性能評(píng)測(cè),主要測(cè)試系統(tǒng)在不同負(fù)載狀況下的調(diào)度情況和性能表現(xiàn)。實(shí)驗(yàn)首先測(cè)試虛擬機(jī)的調(diào)度觸發(fā)條件,設(shè)定N=10,M=7,CPU 的閾值下界為15%,上界為80%,測(cè)試結(jié)果如圖5 所示。可以看到在最初的時(shí)刻雖然虛擬機(jī)的CPU 負(fù)載超過了80%,但是還未達(dá)到調(diào)度策略的條件,因此并沒有引發(fā)調(diào)度。在接下來的10 個(gè)監(jiān)測(cè)結(jié)果中出現(xiàn)7 次以上超過負(fù)載的情況,因此引發(fā)對(duì)虛擬機(jī)的資源調(diào)度。在t=26 這個(gè)時(shí)刻觸發(fā)調(diào)度策略之后,虛擬機(jī)所在物理主機(jī)為其增加一個(gè)CPU 單元,之后的虛擬機(jī)CPU 的負(fù)載有較明顯的下降。
圖5 虛擬機(jī)調(diào)度監(jiān)控圖
圖6 物理主機(jī)負(fù)載監(jiān)控圖
如圖6 所示,當(dāng)虛擬機(jī)的負(fù)載有明顯下降,達(dá)到閾值下界并觸發(fā)調(diào)度策略時(shí),將對(duì)虛擬機(jī)進(jìn)行調(diào)度,減少其所占用的資源量。在t=14 這個(gè)時(shí)刻,虛擬機(jī)的CPU 占用率在最近的10 次監(jiān)控中超過7 次低于閾值下界,從而引發(fā)調(diào)度,物理主機(jī)將減少該虛擬機(jī)的物
理CPU 資源,回收可用的CPU 資源。在t=14 之后的階段,由于虛擬機(jī)所占有的物理資源減少,因此虛擬CPU 的占用率有了一定的增加。
從圖5、圖6 可以看出,采用彈性架構(gòu)的云平臺(tái)原型系統(tǒng),能夠?qū)μ摂M機(jī)的資源請(qǐng)求做出精確的響應(yīng),有效地利用物理資源。當(dāng)虛擬機(jī)進(jìn)入繁忙狀態(tài)時(shí)及時(shí)為其增加物理CPU 資源,保證了高可用性;當(dāng)虛擬機(jī)進(jìn)入空閑狀態(tài)時(shí),降低物理CPU 的預(yù)分配,從而可將回收的CPU 資源分配給其他虛擬機(jī),提高了物理資源的利用率。
4 結(jié)語(yǔ)
文章描述一種基于Xen 虛擬化技術(shù)的彈性云架構(gòu),能夠在一定程度上解決云計(jì)算平臺(tái)中不同用戶對(duì)租用虛擬機(jī)的彈性需求,適應(yīng)應(yīng)用和服務(wù)的不同負(fù)載,對(duì)其進(jìn)行動(dòng)態(tài)管理。實(shí)驗(yàn)結(jié)果表明,該架構(gòu)能夠較好地實(shí)現(xiàn)資源的動(dòng)態(tài)分配,使應(yīng)用和服務(wù)的負(fù)載得到均衡。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:基于Xen虛擬化技術(shù)的彈性云架構(gòu)
本文網(wǎng)址:http://www.ezxoed.cn/html/support/1112154747.html