按需的虛擬集群管理技術(shù)研究-afterda-part2_第1頁
按需的虛擬集群管理技術(shù)研究-afterda-part2_第2頁
按需的虛擬集群管理技術(shù)研究-afterda-part2_第3頁
按需的虛擬集群管理技術(shù)研究-afterda-part2_第4頁
按需的虛擬集群管理技術(shù)研究-afterda-part2_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、西北工業(yè)大學(xué)碩士學(xué)位論文 第三章 按需虛擬集群管理平臺架構(gòu)研究圖3-9 核心工作流程1)用戶根據(jù)自身的計算服務(wù)需求,以XML文件的形式給出虛擬集群的定制請求。2)將請求提交給系統(tǒng)管理節(jié)點進(jìn)行請求處理解析。3)從用戶提交的定制文件中解析出相應(yīng)的虛擬機配置信息,生成不同的虛擬機對象,以便之后的虛擬機部署使用。4)根據(jù)用戶提交的定制文件,結(jié)合計算服務(wù)的自身需要,生成針對不同虛擬機的配置腳本,用于虛擬機之間實現(xiàn)自動聚合。5)對系統(tǒng)物理資源的使用情況進(jìn)行分析,結(jié)合用戶計算服務(wù)的自身特點選擇合適的資源映射方案。6)參照資源映射方案和不同虛擬機對象,對虛擬機進(jìn)行并行部署(包括虛擬機的創(chuàng)建與鏡像文件加載兩部分

2、),同時可以進(jìn)行啟動、關(guān)閉、掛起等操作。7)管理節(jié)點將不同的配置腳本傳輸?shù)綄?yīng)的虛擬機節(jié)點,并開始腳本文件的執(zhí)行,啟動自動聚合。8)當(dāng)自動聚合完成后,按需的虛擬集群平臺搭建完成,可用于特定的計算服務(wù)。對平臺核心工作流程進(jìn)行分析,提出按需虛擬集群管理研究的四個技術(shù)難點:1)如何規(guī)范化用戶的服務(wù)定制請求,如何對請求進(jìn)行處理。2)如何制定資源映射方案,建立虛擬機與物理主機之間的對應(yīng)關(guān)系。3)如何實現(xiàn)虛擬機準(zhǔn)確快速地部署。4)如何實現(xiàn)虛擬機之間的自動聚合,無需人工干預(yù)。第四章 關(guān)鍵模塊設(shè)計與實現(xiàn)本章對系統(tǒng)幾個關(guān)鍵模塊的設(shè)計與實現(xiàn)進(jìn)行研究,首先對用戶定制請求進(jìn)行處理,對相關(guān)數(shù)據(jù)結(jié)構(gòu)進(jìn)行描述;接下來對不同

3、計算服務(wù)請求下的資源映射方案進(jìn)行討論和選擇;之后討論了在當(dāng)前物理拓?fù)湎氯绾螌崿F(xiàn)多虛擬機部署及相關(guān)類結(jié)構(gòu);最后針對多虛擬機之間如何實現(xiàn)自動聚合進(jìn)行了研究。11.1 定制請求處理本系統(tǒng)為用戶提供XML文件模板,以便用戶根據(jù)自身的計算服務(wù)需求提交請求,系統(tǒng)對固定格式的文件進(jìn)行解析,生成相應(yīng)的數(shù)據(jù)結(jié)構(gòu)與配置文件,用于虛擬集群的搭建。虛擬集群是一個具有作業(yè)執(zhí)行能力的資源實體,獨立于特定的虛擬化管理器和硬件結(jié)構(gòu),其XML定制文件描述了虛擬集群中不同資源的配置請求信息,系統(tǒng)按照特定的標(biāo)簽進(jìn)行解析,并對結(jié)果進(jìn)行保存處理,方便虛擬集群的搭建。1.1.1 請求參數(shù)提取如圖4-1所示,虛擬集群的定制參數(shù)由集群名稱和

4、若干虛擬機定制參數(shù)組成,其中虛擬機定制參數(shù)又可細(xì)分為硬件定制參數(shù)、軟件定制參數(shù)、網(wǎng)絡(luò)定制參數(shù)和服務(wù)定制參數(shù)四大部分。圖4-1 虛擬集群定制參數(shù)樹狀圖與集群定制相比,虛擬機定制需要更多貼近實現(xiàn)的,具體的配置參數(shù)。一個虛擬機的配置主要包括了一下四大部分,如圖4-2所示。圖4-2 虛擬機配置1)硬件資源配置:主要需要當(dāng)前虛擬機申請的CPU內(nèi)核數(shù)、內(nèi)存大小、硬盤大小等。在此系統(tǒng)中,物理網(wǎng)卡MAC地址由系統(tǒng)自動分配,因此不包括在硬件定制參數(shù)之中。2)軟件資源配置:主要需要當(dāng)前虛擬機應(yīng)加載的操作系統(tǒng)鏡像信息,包括鏡像名稱,操作系統(tǒng)名稱、版本,同時還需要安裝配置的應(yīng)用服務(wù)名稱。3)網(wǎng)絡(luò)資源配置:主要需要當(dāng)前

5、虛擬機不同網(wǎng)卡的網(wǎng)絡(luò)配置參數(shù),若當(dāng)前虛擬機為集群管理節(jié)點,還需要網(wǎng)關(guān)配置參數(shù)。4)服務(wù)配置:主要需要集群基礎(chǔ)服務(wù)的配置參數(shù),如主機名、賬戶管理、NFS協(xié)議、SSH協(xié)議等。1.1.2 定制請求描述通過上一小節(jié)對虛擬集群定制參數(shù)的分類提取,借助XML語言建立定制請求模型,進(jìn)行標(biāo)準(zhǔn)化的資源需求、運行環(huán)境配置和服務(wù)配置等描述。XML語言具有靈活、簡單、易于擴展、易于解析等特點。系統(tǒng)通過使用XML自定義標(biāo)簽,實現(xiàn)虛擬集群定制請求描述。圖4-3說明了虛擬集群定制文件格式。其中文件規(guī)則如下:1)若imagename參數(shù)值不為none,則忽略之后osname與osversion參數(shù)值。鏡像文件本身就打包了特定

6、的操作系統(tǒng),與之后操作系統(tǒng)的名稱與版本相沖突,以前者為準(zhǔn)。2)masternode參數(shù)為布爾型類,若其值為false,則忽略之后gateway與gwDevice參數(shù)值。集群管理節(jié)點擁有公網(wǎng)IP,需要配置網(wǎng)關(guān),實現(xiàn)對外通信,而其余計算節(jié)點無需進(jìn)行該配置。圖4-3 虛擬集群定制文件格式1.1.3 虛擬機信息管理對用戶創(chuàng)建的虛擬集群定制文件,本系統(tǒng)使用JAVA結(jié)合DOM(Document Object Module)進(jìn)行XML文件解析,生成虛擬集群搭建所需的數(shù)據(jù)結(jié)構(gòu)和類。虛擬集群管理的基礎(chǔ)是虛擬機,它是運行在虛擬環(huán)境下的實體在上面能運行各種應(yīng)用服務(wù)程序,不必關(guān)心底層硬件的細(xì)節(jié)。虛擬機要運行需要由虛擬

7、機監(jiān)控器給它分配CPU和內(nèi)存,然后掛載虛擬磁盤,加載Guest OS,進(jìn)行網(wǎng)絡(luò)配置,最后啟動運行。本模塊即對所有虛擬機進(jìn)行統(tǒng)一管理和控制。圖4-4是系統(tǒng)UML實體類圖。圖4-4 系統(tǒng)UML實體類圖(1) VirtualCluster類虛擬集群類是由XML文件根元素所映射的類,主要由集群名稱屬性和虛擬機集合屬性組成。表4-1 VirtualCluster屬性屬性描述clusterName集群名稱vmListList容器,元素為VirtualMachine對象(2) VirtualMachine類VirtualMachine對象描述系統(tǒng)中的虛擬機實例,其中VirtualMachine有以下屬性,系

8、統(tǒng)會將定制文件解析生成VirtualMachine對象,并據(jù)此進(jìn)行虛擬機實體的創(chuàng)建,其屬性如表4-2。表4-2 VirtualMachine屬性屬性描述vmName虛擬機名稱硬件資源定制屬性cpuNumber請求CPU資源份額memory申請內(nèi)存大小diskSize申請磁盤大小軟件資源定制屬性imageName掛載虛擬映像名稱;none表示未設(shè)置osName操作系統(tǒng)名稱osVersion操作系統(tǒng)版本appName應(yīng)用服務(wù)軟件名稱網(wǎng)絡(luò)資源定制屬性masterNode當(dāng)前虛擬機是否為管理節(jié)點interfaceListList容器,元素為Interface對象上下文定制屬性hostname主機名名稱

9、accountsList容器,元素為User對象基礎(chǔ)服務(wù)定制屬性nfsNFS對象,包含nfsServer與nfsDir屬性sshSSH對象,包含needPasswd屬性state虛擬機狀態(tài)部署屬性hostId部署hostId;-1為沒有部署(3) Interface類不同Interface對象對應(yīng)虛擬機上的不同網(wǎng)卡,描述相應(yīng)的網(wǎng)絡(luò)配置信息,包括網(wǎng)絡(luò)地址和網(wǎng)卡所屬網(wǎng)絡(luò)組(也稱端口組)等。其屬性如表4-3所示。表4-3 Interface類屬性描述name網(wǎng)卡名稱ip當(dāng)前網(wǎng)卡對應(yīng)IP地址netmaskIP地址對應(yīng)的子網(wǎng)掩碼mac網(wǎng)卡物理地址,系統(tǒng)自動分配gateway網(wǎng)關(guān)地址,網(wǎng)卡配置公網(wǎng)IP時有

10、效,默認(rèn)為noneonboot開機是否啟動enabled網(wǎng)卡當(dāng)前是否可用networkName網(wǎng)卡所屬網(wǎng)絡(luò)組,系統(tǒng)自動劃分(4) VirtualMachineManager類 此類用于實現(xiàn)對VirtualMachine生命周期的控制,功能如表4-4。它根據(jù)Master節(jié)點的調(diào)度管理信息,執(zhí)行需要的操作。其消息格式為三元組形式,即(vmName,hostId,action),action定義為需要執(zhí)行的操作,根據(jù)hostId查詢主機的url、username與password,連接到不同主機,進(jìn)行管理。表4-4 虛擬機管理操作方法參數(shù)返回值功能deployAction(vmName,hostId

11、)bool部署到指定主機loadimageAction(vmName)bool加載系統(tǒng)鏡像rebootAction(vmName)bool重啟虛擬機saveAction(vmName)bool保持成快照文件restoreAction(vmName)bool對虛擬機進(jìn)行恢復(fù)shutdownAction(vmName)bool關(guān)閉虛擬機1.2 資源映射方案本文基于三類資源提出映射模型,分析決策影響因素,在模型基礎(chǔ)上對現(xiàn)有的幾種映射算法進(jìn)行修改組合,作為平臺的資源映射方案。平臺根據(jù)用戶的計算服務(wù)需求,結(jié)合當(dāng)前物理資源的使用情況,選擇合理的映射方案進(jìn)行虛擬機的部署。1.2.1 資源映射模型資源映射的關(guān)

12、鍵是將虛擬集群的資源申請和物理節(jié)點的負(fù)載模型化,以便調(diào)度器進(jìn)行合理的決策。在本系統(tǒng)中將這兩者都表示為與CPU、內(nèi)存、網(wǎng)絡(luò)相關(guān)的三維向量<CPU,mem,net>31,調(diào)度算法同時兼顧這三類資源,避免優(yōu)化某類資源分配時影響其他資源。圖4-5為本系統(tǒng)的資源映射模型。圖4-5 資源映射模型虛擬機資源申請Rvm=<Rvm_CPU,Rvm_mem,Rvm_Net>;虛擬集群定制請求Rvc=Rvm1,Rvm2,Rvm3,RvmN;物理節(jié)點資源信息Rpm=< Rpm_CPU,Rpm_mem,Rpm_Net >;虛擬機的負(fù)載情況由三種資源的利用率Lpm=< Lpm_C

13、PU,Lpm_mem,Lpm_Net >表示;系統(tǒng)的運行信息U= Rpm1, Lpm1, Rpm2, Lpm2, Rpm3, Lpm3,RpmN, LpmN。調(diào)度的目的是通過分析系統(tǒng)資源利用情況,生成合理的資源映射方案,即一組映射關(guān)系,如(Rvm1->Rpm3,Rvm2->Rpm1,)。 1.2.2 影響因素分析影響決策制定的因素有很多32,33,比如:(1)不同用戶對于應(yīng)用部署方式的需求是不一樣的。用戶做仿真試驗需要多臺虛擬機,而這些虛擬機不會有很大的負(fù)荷,為了方便以及減小干擾,用戶常常希望將這些虛擬的機器全部啟動在一個物理節(jié)點上;用戶如果要部署web應(yīng)用,需要利用這些虛擬

14、機去完成負(fù)載比較大的任務(wù)時,這時又希望將這些虛擬機均衡地啟動在多個物理節(jié)點上,盡可能的使每臺機器都能擁有充足的資源,并能實現(xiàn)容錯和負(fù)載平衡。(2)不同應(yīng)用對于資源的需求是不同的。以石油勘探行業(yè)為例,油儲模擬對內(nèi)存帶寬比較敏感,而地震資料處理則需要很多的CPU計算資源。(3)不同時段,系統(tǒng)的負(fù)載狀況是不一樣的。這類似于城市公交流量,白天有高峰期,而晚上負(fù)載很低。基于此,對于不同時段應(yīng)使用不同的分配策略。在負(fù)載高峰期,應(yīng)將新的虛擬機申請放置到較低負(fù)載的節(jié)點(或啟動新主機節(jié)點),以避免系統(tǒng)中節(jié)點超載;而在接近晚上時,又需要采取將虛擬機集中起來,空閑出一些低負(fù)載主機,并關(guān)閉以節(jié)約資源。1.2.3 映射

15、原則介紹在決定虛擬機的宿主機時,有兩個基本原則需要遵循,即資源滿足性原則與資源均衡性原則。首先根據(jù)滿足性原則篩選候選主機,當(dāng)多臺主機均可以滿足要求時,優(yōu)先選擇安置虛擬機后資源利用均衡度高的主機。(1)資源滿足性原則假設(shè)虛擬機申請的資源配額定義為<Rvm_CPU,Rvm_mem,Rvm_Net>,分別表示對CPU,內(nèi)存,網(wǎng)絡(luò)的需求大?。晃锢碇鳈C總資源為< Rpm_CPU,Rpm_mem,Rpm_Net >;當(dāng)前資源利用率為< Lpm_CPU,Lpm_mem,Lpm_Net >。系統(tǒng)計算當(dāng)前主機可供分配的資源,基于經(jīng)驗為資源利用率設(shè)置上限值80%,即某種資源利用

16、率超過80%時,認(rèn)為該資源處于預(yù)警區(qū)(或過載區(qū)),剩余可供分配資源為0,否則通過公式計算當(dāng)前資源可用量。圖4-6以CPU為例(內(nèi)存,網(wǎng)絡(luò)類似),對計算公式進(jìn)行了說明。圖4-6 CPU空閑資源計算虛擬機CPU并不是真實的CPU,而是VCPU,一般來說這個VCPU可以看作物理CPU上真實運行的進(jìn)程32。虛擬機CPU資源性能相關(guān)參數(shù)有VCPU申請數(shù)量、虛擬機CPU占用VMM所分配物理CPU時間片權(quán)重、物理CPU主頻三大部分。物理CPU資源總量Rpm_CPU為物理CPU主頻f與內(nèi)核數(shù)NCPU之積,即 公式4-1 虛擬機請求CPU資源總量Rvm_CPU為物理CPU主頻f、虛擬機申請的VCPU數(shù)量NVCP

17、U和虛擬機在VMM的資源調(diào)度時間片權(quán)重WVM之積,即 公式4-2當(dāng)公式4-3成立時,表示當(dāng)前的主機符合虛擬機部署的滿足性原則。 公式4-3 (2)資源均衡性原則一臺物理主機的負(fù)載我們主要通過CPU、內(nèi)存與網(wǎng)絡(luò)的三維向量進(jìn)行衡量。在制定映射方案時,要盡量平衡這些資源的利用度。比如當(dāng)物理節(jié)點的空閑內(nèi)存相對不足,而其他資源充分時,就不應(yīng)該再在該主機上部署內(nèi)存需求大的虛擬機。我們通過公式4-4,對一臺物理主機的資源利用均衡度進(jìn)行計算。 公式4-4其中,分別表示物理主機的CPU利用率 內(nèi)存利用率和網(wǎng)絡(luò)帶寬利用率,是的平均值。是三種資源利用率的方差值,反映了系統(tǒng)資源利用率的均衡情況,值越小說明資源利用均衡

18、度越好。比如,有2臺主機的資源利用率為:,則PM2的資源利用均衡度更好。1.2.4 多策略映射結(jié)合上一小節(jié)介紹的兩個基本原則,以系統(tǒng)整體負(fù)載情況為依據(jù),本文改進(jìn)了現(xiàn)有的三種虛擬機部署策略。(1)緊壓策略 當(dāng)系統(tǒng)整體負(fù)載較低時,由于絕大多數(shù)的物理主機的負(fù)載均未達(dá)到最佳,我們優(yōu)先將虛擬機部署到這樣的物理主機,即部署之后當(dāng)前物理主機負(fù)載最接近利用率最佳值。通過定義緊壓度Fitness來量化主機的負(fù)載輕重,其計算方式如公式4-5。其值越小,說明主機越得到充分利用。這樣,不斷地向相對負(fù)載高的主機放置虛擬機,可使負(fù)載逐步集中。采用二次函數(shù),其意義在于資源利用率越偏離最佳值,對Fitness的影響越大。每次

19、虛擬機的部署都是從符合資源滿足性原則的物理節(jié)點中選擇Fitness值最小主機進(jìn)行。 公式 4-5(2)貪婪策略當(dāng)系統(tǒng)整體負(fù)載較高時,即大多數(shù)物理主機的負(fù)載均超過了最佳值,虛擬機部署應(yīng)尋找這樣的主機,在上面部署后其負(fù)載相對較低,根據(jù)公式4-5,每次虛擬機的部署都是從符合資源滿足性原則的物理節(jié)點中選擇Fitness值最大主機進(jìn)行。(3)填充策略當(dāng)系統(tǒng)整體負(fù)載處于最優(yōu)區(qū)時,資源利用率相對較高,之后的虛擬機部署可能有多個宿主機可選,此時需要考慮放置虛擬機后,物理主機的資源利用均衡度增加,比如物理主機的各個資源利用率為,即內(nèi)存可供分配的資源已不多,其他資源還充足。這時應(yīng)在此物理節(jié)點放置內(nèi)存需求少,而CP

20、U(或網(wǎng)絡(luò))需求到的虛擬機。如公式4-6所示,表示目前物理主機的各種資源利用的均衡度,是放置虛擬機后的均衡度,則越大越好,說明有效地提高了物理主機的資源利用均衡度。 公式4-6本文通過對上述三種改進(jìn)后的映射策略進(jìn)行組合,提出兩種適合不同應(yīng)用服務(wù)特點的映射方案:(1)集中式方案 該方案適用于測試應(yīng)用的虛擬集群定制需求,如應(yīng)用MPI高性能計算集群進(jìn)行實驗,為了避免其他因素的干擾,盡可能的將虛擬機部署到少量的物理主機上。假設(shè)需要部署的虛擬機集合為Rvc=Rvm1,Rvm2,Rvm3,RvmN,虛擬機兩種標(biāo)記狀態(tài)為unchecked(表示未判斷能否在當(dāng)前物理主機部署)和undeloyed(表示不能在當(dāng)

21、前主機部署),其方案如算法4-1所示。算法4-1:集中式方案剖析算法輸入?yún)?shù):虛擬機集合Rvc=Rvm1,Rvm2,Rvm3,RvmN;所有物理主機的集合Rpc=Rpm1,Rpm2,Rpm3,RpmN;被選中物理主機集合SRpc=;當(dāng)前映射虛擬機current_Rvc;當(dāng)前被選中主機current_Rpc輸出參數(shù):虛擬機與物理主機映射關(guān)系 1. while true do2. 初始化Rvc所有元素狀態(tài)為unchecked3. current_Rvc 從Rvc隨機選擇一個元素4. SRpc 在Rpc集合內(nèi)基于貪婪策略選擇物理主機5. if size_of_SRpc >1 then6. cu

22、rrent_Rpc 基于填充策略優(yōu)先選擇部署后物理資源利用均衡度高的物理主機7. else8. current_Rpc SRpc中唯一元素9. end if10. 建立current_Rvc 與current_Rpc之間部署映射關(guān)系11. 在Rvc中刪除current_Rvc12. 清空SRpc13. while Rvc內(nèi)存在狀態(tài)為unchecked的虛擬機元素 或者 Rvc為空do14. if Rvc為空 then15. 虛擬機映射完成16. return17. else 18. current_Rvc 從Rvc選擇一個狀態(tài)為unchecked的虛擬機元素19. if current_Rvc

23、映射到current_Rpc符合資源滿足性原則 then20. 建立current_Rvc 與current_Rpc之間部署映射關(guān)系21. 在Rvc中刪除current_Rvc22. else23. 將Rvc內(nèi)current_Rvc對應(yīng)元素狀態(tài)修改為undeloyed24. end if25. end if26. end while27. end while(2)均攤式方案當(dāng)用戶部署諸如web應(yīng)用集群時,則希望將一組虛擬機均攤放到多個物理主機上,以獲取充足資源和實現(xiàn)負(fù)載均衡,避免單點故障。假設(shè)系統(tǒng)管理所有物理主機集合為Rpc=Rpm1,Rpm2,Rpm3,RpmN,兩種標(biāo)記狀態(tài)為unselec

24、ted(表示當(dāng)前物理主機還未被選定)和selected(表示當(dāng)前主機已被選定),其方案如算法4-2所示。算法4-2:均攤式方案剖析算法輸入?yún)?shù):虛擬機集合Rvc=Rvm1,Rvm2,Rvm3,RvmN;所有物理主機的集合Rpc=Rpm1,Rpm2,Rpm3,RpmN;被選中物理主機集合SRpc=;當(dāng)前映射虛擬機current_Rvc;當(dāng)前被選中主機current_Rpc輸出參數(shù):虛擬機與物理主機映射關(guān)系1. 初始化Rpc所有元素狀態(tài)為unselected2. while true do3. if Rpc所有元素狀態(tài)為selected then4. current_Rvc 從Rvc選擇一個虛擬機

25、元素5. SRpc 在Rpc集合內(nèi)基于貪婪策略選擇物理主機6. if size_of_SRpc >1 then7. current_Rpc 基于填充策略優(yōu)先選擇部署后物理資源利用均衡度高的物理主機8. else9. current_Rpc SRpc中唯一元素10. end if11. else12. current_Rvc 從Rvc選擇一個虛擬機元素13. SRpc 在Rpc所有unselected狀態(tài)元素子集中基于貪婪策略選擇物理主機14. if size_of_SRpc >1 then15. current_Rpc 基于填充策略優(yōu)先選擇部署后物理資源利用均衡度高的物理主機16.

26、 else17. current_Rpc SRpc中唯一元素18. end if19. 設(shè)置Rpc集合中current_Rpc對應(yīng)元素狀態(tài)為selected20. end if21. 在Rvc中刪除current_Rvc22. if Rvc為空 then23. 虛擬機映射完成24. return25. end if26. end while1.3 并行虛擬機部署在映射方案制定完成后,管理節(jié)點需要對虛擬網(wǎng)絡(luò)進(jìn)行管理與劃分,以保證虛擬機與外部網(wǎng)絡(luò)、虛擬機之間能夠正常通信,防止IP沖突發(fā)生,還要為虛擬機選擇合適的鏡像文件,準(zhǔn)備之后的鏡像加載。為了提高鏡像加載的速度和效率,在為不同虛擬機選定鏡像文件后

27、,采用多線程方式執(zhí)行加載操作。1.3.1 虛擬網(wǎng)絡(luò)管理管理節(jié)點對虛擬網(wǎng)絡(luò)進(jìn)行劃分,主要是為了解決如圖4-7所示問題,系統(tǒng)創(chuàng)建兩個集群Cluster1與Cluster2,其中C1_VM1、C2_VM1這兩臺虛擬機均部署于主機Host2上,分別為各自集群的內(nèi)部節(jié)點,其網(wǎng)卡eth0配置的IP地址均為192.168.1.2,在這種情況下,如不進(jìn)行虛擬網(wǎng)絡(luò)劃分,則出現(xiàn)IP沖突。如虛擬機C1_VM2無法正常與C1_VM1進(jìn)行通信,原因是存在兩個IP地址為192.168.1.2的虛擬機節(jié)點。圖4-7 系統(tǒng)網(wǎng)絡(luò)配置問題 為了解決上述問題,管理節(jié)點需要對虛擬網(wǎng)絡(luò)進(jìn)行劃分。簡而言之,就是為每個虛擬集群定制請求創(chuàng)建

28、獨立的網(wǎng)絡(luò)分組,也就是虛擬機端口組,配置獨立的VLAN,保證不同的虛擬集群之間互不干擾的運行。系統(tǒng)虛擬網(wǎng)絡(luò)被劃分為兩大部分:公共虛擬網(wǎng)絡(luò)(公共虛擬機端口組)和集群虛擬網(wǎng)絡(luò)(集群虛擬機端口組)。公共虛擬網(wǎng)絡(luò)僅有一個,管理的都是集群管理節(jié)點上配置有公網(wǎng)IP的虛擬網(wǎng)卡,保證它們可以與外部網(wǎng)絡(luò)連接通信;集群虛擬網(wǎng)絡(luò)與虛擬集群一一對應(yīng),并配置成不同的VLAN網(wǎng)絡(luò),管理的是一個集群里所有配置有內(nèi)部IP的虛擬網(wǎng)卡,保證集群內(nèi)部的通信,隔離其他集群。圖4-8 虛擬網(wǎng)絡(luò)劃分如圖4-8所示,publicVNet為公共虛擬網(wǎng)絡(luò),其中管理了redhat_cluster與rh_cluster兩個集群的管理節(jié)點,分別為r

29、edhat_master與rh_master,它們可以與外部網(wǎng)絡(luò)通信;為了保證兩個集群之間互不影響,為每個虛擬集群單獨創(chuàng)建一個集群虛擬網(wǎng)絡(luò),并配置不同的VLAN id,這樣集群內(nèi)部虛擬機之間的通信被約束在VLAN范圍內(nèi),從而實現(xiàn)不同集群的隔離。系統(tǒng)在初始化時,調(diào)用特定接口創(chuàng)建一個公共虛擬網(wǎng)絡(luò),它在系統(tǒng)的生命周期中唯一存在。針對每個集群定制請求,系統(tǒng)會在虛擬機部署之前為集群創(chuàng)建獨立的集群虛擬網(wǎng)絡(luò),并配置一個隨機生成的未曾使用的VLAN id,該操作也是通過調(diào)用API實現(xiàn)。由于系統(tǒng)部署的是分布式虛擬交換機,所以當(dāng)前的虛擬網(wǎng)絡(luò)劃分對所有主機均有效。之后在虛擬機部署過程中,根據(jù)虛擬機對象網(wǎng)卡屬性與虛擬

30、網(wǎng)絡(luò)名稱的對應(yīng)關(guān)系完成不同虛擬網(wǎng)卡的創(chuàng)建與分組工作。由于VLAN可以劃分廣播域,且不同集群所處虛擬網(wǎng)絡(luò)的VLAN id不相同,可以保證集群之間互不干擾。按照虛擬網(wǎng)絡(luò)的設(shè)計方案進(jìn)行抽象,主要實現(xiàn)一下兩個類:(1) VirtualNetwork類一個VirtualNetwork對象表示一個創(chuàng)建的虛擬網(wǎng)絡(luò),也表示一個劃分了的虛擬機端口組。按照VirtualNetwork對象對創(chuàng)建后的虛擬機進(jìn)行管理。此類主要屬性如表4-5所示。表4-5 VirtualNetwork類屬性屬性值域描述vnNameString虛擬網(wǎng)絡(luò)名稱,是唯一標(biāo)識clusterNameString當(dāng)前虛擬網(wǎng)絡(luò)對應(yīng)集群,空串表示公共虛擬

31、網(wǎng)絡(luò)VLANIdInteger虛擬網(wǎng)絡(luò)所劃分VLAN號,-1表示公共虛擬網(wǎng)絡(luò)bridgeString虛擬網(wǎng)絡(luò)將連接的物理主機網(wǎng)橋名稱ifListList<Interface>虛擬網(wǎng)絡(luò)所管理虛擬網(wǎng)卡集合(2) VirtualNetworkManager該類功能為對系統(tǒng)中所有被使用的虛擬網(wǎng)絡(luò)進(jìn)行統(tǒng)一管理,使網(wǎng)絡(luò)資源得到良好的使用。類方法如表4-6所示。表4-6 VirtualNetworkManager的方法方法輸入?yún)?shù)返回值功能createPublicVNet無VirtualNetwork創(chuàng)建公共虛擬網(wǎng)絡(luò)createClusterVNet(clusterName)VirtualNet

32、work 創(chuàng)建集群虛擬網(wǎng)絡(luò)deleteVirtualNetwork(vnName)Bool刪除虛擬網(wǎng)絡(luò)addInterface(vnName ,interface)Bool向虛擬網(wǎng)絡(luò)增添虛擬網(wǎng)卡rmInterface(vnName ,interface)Bool從虛擬網(wǎng)絡(luò)刪除虛擬網(wǎng)卡createNewVLANId無Integer生成新的VLAN號GetPublicVNet無VirtualNetwork獲取公共虛擬網(wǎng)絡(luò)1.3.2 鏡像文件管理一個虛擬機環(huán)境可細(xì)分為三部分34:硬件環(huán)境(虛擬機分配的CPU、內(nèi)存等)、軟件環(huán)境(虛擬機安裝的操作系統(tǒng))和應(yīng)用服務(wù)(用于計算服務(wù)的軟件)。在傳統(tǒng)的軟件交付

33、中,應(yīng)用服務(wù)與軟硬件環(huán)境緊耦合。部署應(yīng)用服務(wù)過程中,首先需要收集環(huán)境信息,配置軟硬件環(huán)境,再安裝應(yīng)用軟件,集成多個組件,十分繁瑣耗時,且容易出錯,在新的環(huán)境下又需要重頭再來。以虛擬機鏡像文件進(jìn)行軟件交付,以虛擬機形式部署應(yīng)用服務(wù),能有效提供部署效率。虛擬機鏡像結(jié)構(gòu)可以為以下兩種形式:(1)預(yù)安裝操作系統(tǒng)。在這種情況下,虛擬機鏡像只是一個打包了操作系統(tǒng)的文件,可以用它作為虛擬機加載的硬盤映像(包括內(nèi)核,啟動分區(qū)和根文件系統(tǒng))。同時需要一個裝備庫服務(wù)器,對應(yīng)用軟件進(jìn)行統(tǒng)一管理。針對用戶不同的應(yīng)用定制需求,虛擬機在成功加載鏡像文件后,通過NFS等技術(shù)掛載裝備庫,實現(xiàn)軟件的部署。如圖4-9所示,各種應(yīng)

34、用服務(wù)軟件安裝在裝備庫服務(wù)器中,當(dāng)虛擬機軟硬件環(huán)境配置完成后,通過NFS協(xié)議將定制應(yīng)用軟件的目錄掛載到本機,并進(jìn)行一系列配置,完成應(yīng)用服務(wù)部署。圖4-9 裝備庫服務(wù)器式拓?fù)洌?)預(yù)安裝操作系統(tǒng)與應(yīng)用軟件。在這種情況下,虛擬機映像不僅預(yù)安裝了操作系統(tǒng),而且安裝了應(yīng)用軟件。這樣可以一次性完成軟件環(huán)境和應(yīng)用軟件的部署,同時系統(tǒng)結(jié)構(gòu)也不會過于復(fù)雜,如圖4-10所示。圖4-10 虛擬機鏡像結(jié)構(gòu)本文采用預(yù)安裝操作系統(tǒng)與應(yīng)用軟件的鏡像結(jié)構(gòu),對虛擬映像統(tǒng)一管理,在虛擬機創(chuàng)建過程中,通過指定鏡像文件名稱或是操作系統(tǒng)名稱、版本、應(yīng)用服務(wù)名稱完成映像加載。本文使用Image類描述虛擬鏡像,用ImageManager

35、對系統(tǒng)的鏡像文件進(jìn)行統(tǒng)一管理。(1) Image類一個Image對象描述一個虛擬機映像實體,其屬性如表4-7。其中既可以通過imageName,也可以通過結(jié)合osName、osVersion和應(yīng)用軟件名稱指定一個鏡像。path屬性值是虛擬機映像在Linux文件系統(tǒng)中的路徑。type屬性值是虛擬映像的類型: OS類型映像持有一個可啟動的操作系統(tǒng)環(huán)境,每個虛擬機都必須關(guān)聯(lián)一個此類OS映像作為其虛擬硬盤設(shè)備。CDROM類型映像持有一個CDROM只讀的數(shù)據(jù),能被多個虛擬機共用。DATABLOCK類型映像為數(shù)據(jù)存儲映像,能被多個虛擬機使用和修改,一個虛擬機也可包含多個DATABLOCK映像。創(chuàng)建DATA

36、BLOCK映像時,可以包含一些已存在的數(shù)據(jù),也可以是空的。表4-7 Image類屬性列表屬性 值域描述imageNameString映像名稱,唯一標(biāo)識pathString映像文件絕對路徑typeEnumOS,CDROM,DATABLOCKstateEnumINIT,READY,USED,DISABLEDosNameString映像操作系統(tǒng)名稱osVersionString映像操作系統(tǒng)版本appMapMap<String,String>存放應(yīng)用軟件名稱(key)與應(yīng)用軟件路徑(value)的映射關(guān)系descriptionString映像描述信息(2) ImageManager類 該類

37、負(fù)責(zé)對鏡像文件的統(tǒng)一管理,其方法如表4-8所示。 表4-8 映像管理類方法方法輸入?yún)?shù)返回功能createImage(imageTemplate)String用描述文件創(chuàng)建映像實例diskToImage(imagePath)Image 虛擬硬盤轉(zhuǎn)換為映像acquireImageByName(imageName)Image 根據(jù)鏡像名稱返回相應(yīng)映像acquireImageByOs(osName,osVersion,appName)Image根據(jù)操作系統(tǒng)和應(yīng)用軟件信息獲取映像deleteImage(imageName)bool刪除映像(3) 鏡像描述文件鏡像描述文件記錄操作系統(tǒng)和應(yīng)用軟件配置信息,

38、用于生成對應(yīng)的鏡像文件,實例如圖4-11所示。圖4-11 鏡像描述文件鏡像文件的加載流程如下: 1)系統(tǒng)初始化時,ImageManager類讀取解析鏡像描述文件,獲取鏡像文件的存儲路徑path。 2)根據(jù)path屬性值將相應(yīng)的鏡像文件拷貝到NAS存儲系統(tǒng),該存儲被系統(tǒng)內(nèi)所有物理主機掛載共享。 3)根據(jù)鏡像描述文件的內(nèi)容創(chuàng)建Image類對象,調(diào)用系統(tǒng)方法用于鏡像文件的快速查找。 4)根據(jù)用戶的定制請求,映射合適的鏡像文件,在虛擬機創(chuàng)建后調(diào)用VirtualMachineManager類方法進(jìn)行加載。1.3.3 多線程部署在制定映射方案和劃分虛擬網(wǎng)絡(luò)結(jié)束后,需要對虛擬機進(jìn)行部署。本系統(tǒng)中虛擬機的部署

39、主要分為兩大部分:虛擬機的創(chuàng)建和鏡像文件的加載。虛擬機的創(chuàng)建主要包括CPU、內(nèi)存等資源的分配,虛擬網(wǎng)卡網(wǎng)絡(luò)分組的配置;鏡像文件的加載包括操作系統(tǒng)和應(yīng)用程序的部署,雖然鏡像加載步驟相對簡單,但是由于鏡像文件一般在2G以上,所以整個加載過程需要較長時間。針對這樣的情況,提出如下部署幾種方案:(1)虛擬機順序部署。這種方式最為簡單,基于分布式網(wǎng)絡(luò)的同步通信模式對虛擬集群中的虛擬機逐個進(jìn)行部署。集群部署完成后,將不同配置文件上傳到對應(yīng)虛擬機,啟動自動聚合操作。由于整個虛擬集群部署的時間等于各個虛擬機部署的時間累加,所以效率最低。(2)虛擬機異步部署。這種方式基于分布式網(wǎng)絡(luò)的異步通信模式,管理節(jié)點以異步

40、方式啟動各虛擬機的部署任務(wù),之后進(jìn)行其他操作。當(dāng)虛擬機部署完成后,調(diào)用對應(yīng)的回調(diào)函數(shù),通知管理節(jié)點部署完成。這種方式極大地減低了虛擬部署的時間,但是實現(xiàn)起來相對復(fù)雜,而且不方便對部署后的虛擬機自動聚合過程進(jìn)行同步。(3)虛擬機多線程部署。這是本系統(tǒng)使用的虛擬機部署方案,它結(jié)合了多線程并發(fā)技術(shù)與同步通信模式進(jìn)行操作。如圖4-12所示,管理節(jié)點請求處理主線程為每個虛擬機部署任務(wù)啟動一個線程,線程之間互不干擾;每個線程實現(xiàn)虛擬機的同步部署操作。管理節(jié)點請求處理主線程對所有線程進(jìn)行管理,保證所有虛擬機部署成功后啟動集群的自動聚合操作。圖4-12 多線程部署時序圖1.4 虛擬機自動聚合在虛擬機部署完成后

41、,需要對虛擬機進(jìn)行一系列配置使它們成為可以協(xié)同工作的集群。這個過程稱為虛擬機的自動聚合。管理節(jié)點解析用戶定制請求生成針對不同虛擬機的配置腳本,上傳至對應(yīng)虛擬機后啟動執(zhí)行,實現(xiàn)虛擬機基礎(chǔ)環(huán)境配置、集群協(xié)議配置和集群計算服務(wù)配置等。這個過程的關(guān)鍵是如何生成集群不同角色節(jié)點的配置文件,如何實現(xiàn)虛擬機的自動配置,如何同步虛擬機之間的集群協(xié)議配置。1.4.1 自動聚合分析虛擬集群自動聚合主要由三大部分組成:虛擬機基礎(chǔ)環(huán)境配置、集群協(xié)議配置和集群計算服務(wù)配置。其中虛擬機基礎(chǔ)環(huán)境配置由管理節(jié)點為每個節(jié)點生成的虛擬機配置文件完成,包括對網(wǎng)絡(luò)、用戶、主機名等進(jìn)行配置。集群協(xié)議配置包括了NFS協(xié)議與SSH協(xié)議,由

42、預(yù)先打包在鏡像文件中的協(xié)議配置腳本完成。最后集群計算服務(wù)的配置也由打包在鏡像文件中的配置腳本完成,根據(jù)應(yīng)用服務(wù)的特點完成相應(yīng)操作。自動聚合的關(guān)鍵是鏡像中打包的標(biāo)記文件。標(biāo)記文件記錄了自動聚合下一步應(yīng)執(zhí)行的操作。其值與含義如表4-9所示。表4-9 標(biāo)記文件標(biāo)記值標(biāo)記含義 configBasicEnv對虛擬機基礎(chǔ)環(huán)境進(jìn)行配置 configNFSandSSH對集群協(xié)議NFS、SSH進(jìn)行配置 configApplication對特定的計算服務(wù)進(jìn)行配置該標(biāo)記文件供兩個配置腳本讀取:虛擬機配置腳本和Linux啟動腳本rc.local。虛擬機配置腳本根據(jù)標(biāo)記文件執(zhí)行相應(yīng)的配置操作;rc.local腳本在操作

43、系統(tǒng)啟動時讀取標(biāo)記值,決定是否執(zhí)行配置操作。其狀態(tài)轉(zhuǎn)換如圖4-13所示。圖4-13 狀態(tài)轉(zhuǎn)換圖管理節(jié)點上傳虛擬機配置腳本,執(zhí)行腳本過程中判斷標(biāo)記文件值為configBasicEnv,對基礎(chǔ)環(huán)境進(jìn)行配置,并將下一步操作configNFSandSSH寫入標(biāo)記文件。由于基礎(chǔ)環(huán)境的配置需要重啟系統(tǒng)生效,所以在這步執(zhí)行結(jié)束后對系統(tǒng)進(jìn)行重啟。系統(tǒng)重啟時執(zhí)行rc.local腳本,判斷標(biāo)記文件值為configNFSandSSH,調(diào)用虛擬機配置腳本進(jìn)行集群協(xié)議配置,并將下一步configApplication寫入標(biāo)記文件,重啟系統(tǒng)。系統(tǒng)再次重啟,rc.local腳本判斷標(biāo)記文件值為configApplicati

44、on,再次調(diào)用虛擬機配置腳本進(jìn)行應(yīng)用服務(wù)配置,并將標(biāo)記文件狀態(tài)設(shè)置為初始值。整個自動聚合的過程到此結(jié)束。1.4.2 配置文件管理(1) ConfigFileManager類管理節(jié)點需要對配置腳本進(jìn)行創(chuàng)建、管理、上傳和遠(yuǎn)程執(zhí)行等操作。系統(tǒng)定義一個配置文件管理類,實現(xiàn)了上述的各種操作,其方法如表4-10所示。表4-10 配置文件管理類方法方法輸入?yún)?shù)返回功能createConfForMaster(clusterName)String為集群管理節(jié)點創(chuàng)建配置文件,返回文件名稱createConfForCompute(clusterName)String 為集群計算節(jié)點創(chuàng)建配置文件,返回文件名稱uploadConfToVM(filePath,vmName)bool將配置文件上傳到特定虛擬機downloadResult(vmName,filePath,localPath)bool將腳本文件執(zhí)行結(jié)果下載到本地目錄下runShellInVM(vmName,filePath)void啟動執(zhí)行虛擬機上的某個腳本文件runCommandInVM(vmName,commandStr)void在虛擬機上執(zhí)行命令(2) 虛擬機配置文件虛擬機的自動聚合需要若干配置文件依次執(zhí)行,其中最重要的就是管理節(jié)點生成的虛擬機配置文件,它負(fù)責(zé)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論