王 晶,何利力
(浙江理工大學(xué) 信息學(xué)院,杭州 310018)
數(shù)據(jù)中心的負(fù)載均衡問題一直是數(shù)據(jù)中心研究的熱點(diǎn)問題,追根究底,主要原因是資源配置問題[1],即資源利用不均衡問題.面對由大量異構(gòu)設(shè)備組成的數(shù)據(jù)中心,如何實(shí)現(xiàn)其負(fù)載均衡成為研究熱點(diǎn)問題.虛擬機(jī)遷移技術(shù)是解決數(shù)據(jù)中心資源分配問題的有效解決方法,其在提供平臺有效服務(wù)的情況下對節(jié)點(diǎn)虛擬機(jī)資源進(jìn)行調(diào)整,以提高平臺資源利用率,保證服務(wù)質(zhì)量,是實(shí)現(xiàn)數(shù)據(jù)中心負(fù)載均衡的有效手段之一[2–4].
基于虛擬機(jī)遷移技術(shù)的負(fù)載均衡策略,即將負(fù)載過高或過低的節(jié)點(diǎn)服務(wù)器進(jìn)行相應(yīng)的虛擬機(jī)遷移操作,通過調(diào)整節(jié)點(diǎn)服務(wù)器負(fù)載,達(dá)到整個平臺的負(fù)載均衡[3].由于任務(wù)到達(dá)具有隨機(jī)性,節(jié)點(diǎn)的負(fù)載也是不斷變化的,若想實(shí)現(xiàn)數(shù)據(jù)中心的負(fù)載均衡,則需一套虛擬機(jī)動態(tài)遷移策略,通過監(jiān)測數(shù)據(jù)中心節(jié)點(diǎn)的負(fù)載狀況,動態(tài)地進(jìn)行虛擬機(jī)遷移調(diào)整[4],從而提高節(jié)點(diǎn)資源利用率,改善數(shù)據(jù)中心的負(fù)載均衡.
虛擬機(jī)遷移過程可以分為兩大模塊:遷移觸發(fā)時機(jī)與遷移選擇策略.遷移時機(jī)觸發(fā)策略即根據(jù)節(jié)點(diǎn)資源使用狀態(tài)判斷是否達(dá)到遷移條件,從而觸發(fā)下一模塊;遷移選擇策略包括選擇待遷移虛擬機(jī)和目標(biāo)節(jié)點(diǎn),即確定待遷移虛擬機(jī)至其遷移目的節(jié)點(diǎn)的最佳方案.
遷移時機(jī)觸發(fā)策略通常使用狀態(tài)閾值法,將每種狀態(tài)設(shè)定閾值進(jìn)行劃分,但在判斷遷移時機(jī)時需要避免負(fù)載瞬時值影響時機(jī)判斷的準(zhǔn)確性,從而避免由遷移時機(jī)不準(zhǔn)確導(dǎo)致的過遷移現(xiàn)象.狀態(tài)閾值法分為靜態(tài)閾值法與動態(tài)閾值法,由于靜態(tài)閾值法一經(jīng)設(shè)定后不能根據(jù)資源使用狀態(tài)動態(tài)調(diào)整,故而存在適應(yīng)性差和靈活度低問題.文獻(xiàn)[5]提供了一種根據(jù)數(shù)據(jù)中心整體負(fù)載量調(diào)整閾值窗口的遷移時機(jī)判決算法方法,有效解決了由靜態(tài)閾值造成的虛擬機(jī)頻繁遷移問題.文獻(xiàn)[6]使用以調(diào)度頻率和負(fù)載率作為反饋值的動態(tài)閾值法判定觸發(fā)時機(jī)可以有效根據(jù)資源動態(tài)變化開啟調(diào)度時機(jī),但是未考慮數(shù)據(jù)中心整體的負(fù)載度,當(dāng)數(shù)據(jù)中心接受大量任務(wù)時可能導(dǎo)致數(shù)據(jù)中心的整體負(fù)載度過高.文獻(xiàn)[7]使用負(fù)載預(yù)測的方法對未來幾期的負(fù)載進(jìn)行預(yù)測,進(jìn)而減少負(fù)載瞬時值的影響,但觸發(fā)時機(jī)的合理性由預(yù)測方法的準(zhǔn)確性來決定,雖復(fù)雜算法可以提高預(yù)測的準(zhǔn)確性,但是會增加計算資源的消耗.
遷移選擇策略旨在快速解除節(jié)點(diǎn)過載狀態(tài),即如何選擇需遷移的虛擬機(jī)與目的節(jié)點(diǎn),在最少遷移代價與最少遷移時間的條件下將待遷移虛擬機(jī)遷移至目的節(jié)點(diǎn),調(diào)整節(jié)點(diǎn)資源狀態(tài),使得數(shù)據(jù)中心回到負(fù)載均衡范圍.文獻(xiàn)[8]使用采用最大相關(guān)性虛擬機(jī)選擇算法(RRVMS)和多資源相關(guān)匹配目的主機(jī)選擇算法(RMRHS)對虛擬機(jī)進(jìn)行遷移,即選擇最大相關(guān)虛擬機(jī)遷移到資源最小相關(guān)的目的主機(jī)上,可以有效減少遷移次數(shù)從而降低能耗,但未考慮到遷移代價和負(fù)載均衡問題.文獻(xiàn)[9]根據(jù)虛擬機(jī)與服務(wù)器資源的相關(guān)性與資源權(quán)重比選擇相關(guān)性大但帶寬資源利用率低的虛擬機(jī),并考慮遷移數(shù)量以及資源匹配程度選擇目標(biāo)主機(jī),可以有效減少遷移代價.但是該方法的遷移開銷僅考慮了遷移次數(shù),具有一定的局限性.
針對以上問題,本文設(shè)計了一種基于虛擬機(jī)動態(tài)遷移的負(fù)載均衡策略,通過監(jiān)控全局負(fù)載度與高低負(fù)載節(jié)點(diǎn)占比動態(tài)調(diào)整閾值從而實(shí)現(xiàn)對節(jié)點(diǎn)資源的狀態(tài)評估與遷移時機(jī)判定;使用基于負(fù)載類型感知的選擇策略,即通過考慮虛擬機(jī)與節(jié)點(diǎn)資源的依賴度和虛擬機(jī)貢獻(xiàn)度選擇待遷移虛擬機(jī),并根據(jù)虛擬機(jī)與目的節(jié)點(diǎn)的資源匹配度與遷移代價選擇目的節(jié)點(diǎn),實(shí)現(xiàn)對高負(fù)載與低負(fù)載節(jié)點(diǎn)的虛擬機(jī)動態(tài)調(diào)整,從而優(yōu)化節(jié)點(diǎn)資源配置并改善數(shù)據(jù)中心負(fù)載均衡.
本文考慮到異構(gòu)節(jié)點(diǎn)的資源配置差異,選取CPU使用率、內(nèi)存使用率和帶寬使用率作為負(fù)載指標(biāo),并將過載情況分為三種類型:CPU 過載型、內(nèi)存過載型和帶寬過載型[10],從而對節(jié)點(diǎn)負(fù)載情況進(jìn)行評估,相關(guān)定義如下:
定義1.數(shù)據(jù)中心有n個節(jié)點(diǎn),第i個節(jié)點(diǎn)的資源配置為:ri=(cpui,rami,bandi),記節(jié)點(diǎn)i的CPU 利用率為CUi、內(nèi)存利用率為RUi、帶寬利用率為BUi,則節(jié)點(diǎn)i的負(fù)載向量Ni為:

若各負(fù)載指標(biāo)的權(quán)值為Ki=[k1k2k3],其中k1+k2+k3=1.則節(jié)點(diǎn)i的負(fù)載度為:

那么,數(shù)據(jù)中心負(fù)載度即全局負(fù)載度可由數(shù)據(jù)中心所有開啟的節(jié)點(diǎn)負(fù)載度的平均值表示,公式如下:

定義2.設(shè)節(jié)點(diǎn)負(fù)載超過高位閾值Thrh為重載;負(fù)載低于低位閾值Thrl為輕載;負(fù)載位于兩個閾值之間為適載.則表示如下:

其中,Thrcpu、Thrram、Thrband和分別為CPU、內(nèi)存和帶寬的高位閾值,分別根據(jù)各自的利用率設(shè)定.Thrl則根據(jù)節(jié)點(diǎn)負(fù)載度進(jìn)行設(shè)定.
定義3.低于低位閾值的節(jié)點(diǎn)集合為L;將超過高位閾值的節(jié)點(diǎn)組成高負(fù)載節(jié)點(diǎn)矩陣H,根據(jù)其過載類型使用節(jié)點(diǎn)狀態(tài)標(biāo)記進(jìn)行區(qū)分,表示如下:

其中,第i行為第i個節(jié)點(diǎn)的各參數(shù)值;第一行為節(jié)點(diǎn)的負(fù)載指標(biāo)向量的轉(zhuǎn)置;第二列為節(jié)點(diǎn)狀態(tài)標(biāo)記,值為1 表示CPU 利用率高,值為2 表示內(nèi)存利用率高,值為3 表示帶寬利用率高.最后一位Num表示節(jié)點(diǎn)編號.
虛擬機(jī)遷移觸發(fā)時機(jī)的選擇至關(guān)重要,針對現(xiàn)有的靜態(tài)閾值的適應(yīng)性差和靈活度低問題,本文通過分析數(shù)據(jù)中心全局負(fù)載度、高負(fù)載比率和低負(fù)載比率對實(shí)現(xiàn)對閾值的動態(tài)調(diào)整,從而增加遷移觸發(fā)策略的靈活性與觸發(fā)時機(jī)的合理性.
(1)考慮因素
本文閾值動態(tài)調(diào)整方案考慮因素共有3 個:數(shù)據(jù)中心負(fù)載度(全局負(fù)載度)、高負(fù)載比率和低負(fù)載比率.下面介紹3 種因素的求解方法及對其數(shù)據(jù)中心的影響.
① 全局負(fù)載度
全局負(fù)載度是評價數(shù)據(jù)中心整體負(fù)載情況的有效方法之一.當(dāng)全局負(fù)載度過高時,數(shù)據(jù)中心整體接收大量的負(fù)載任務(wù),此時需增加可用資源承接負(fù)載任務(wù)以均衡全局負(fù)載;當(dāng)全局負(fù)載度過低時,數(shù)據(jù)中心接收的負(fù)載任務(wù)減少,此時需縮減可用資源范圍.全局負(fù)載度計算方法如下:
取t時段內(nèi)的負(fù)載信息并根據(jù)公式(3)得到此時段內(nèi)負(fù)載度集合{Lddc(1),Lddc(2),···,Lddc(t)};為了減小負(fù)載瞬時值的影響,剔除該集合中的m個孤立點(diǎn),此時負(fù)載度集合為 {Lddc(1),Lddc(2),···,Lddc(t?m)},再采用權(quán)重法計算全局負(fù)載度,如下:

其中,l1+l2+···+lt?m=1,權(quán)重系數(shù)li按指數(shù)遞增,公式為:

為保持?jǐn)?shù)據(jù)中心負(fù)載均衡度,需為數(shù)據(jù)中心設(shè)置負(fù)載均衡范圍(ωl,ωh),此范圍內(nèi)數(shù)據(jù)中心負(fù)載度為適宜的,此范圍取值依據(jù)為數(shù)據(jù)中心此時段歷史負(fù)載度.
② 高負(fù)載比率與低負(fù)載比率
高低負(fù)載節(jié)點(diǎn)比率表現(xiàn)出數(shù)據(jù)中心節(jié)點(diǎn)利用率情況.當(dāng)高負(fù)載節(jié)點(diǎn)數(shù)量過多時,會多次觸發(fā)遷移操作,造成虛擬機(jī)頻繁遷移,造成資源浪費(fèi),此時需要適量調(diào)高高位閾值或開啟新的節(jié)點(diǎn)服務(wù)器;低負(fù)載節(jié)點(diǎn)比率過多時,此時數(shù)據(jù)中心過多服務(wù)器資源處于未充分利用狀態(tài),故調(diào)低低位閾值并關(guān)閉部分節(jié)點(diǎn)服務(wù)器.設(shè)高負(fù)載比率、低負(fù)載比率分別為Lrh和Lrl,權(quán)重系數(shù)li計算見式(9),在t時間段內(nèi),計算公式如下:

設(shè)置高負(fù)載比率(minLrh,maxLrh)和低負(fù)載比率范圍(minLrl,maxLrl)以判斷調(diào)整閾值和開啟或關(guān)閉節(jié)點(diǎn)的時機(jī).
(2)調(diào)整流程
通過全局負(fù)載度與高低負(fù)載節(jié)點(diǎn)比率實(shí)現(xiàn)對狀態(tài)閾值的動態(tài)調(diào)控流程如下:
當(dāng)Lddc≠(ωl,ωh)時,若m inLrl 其中,Thrh′、Thrl′分別表示調(diào)整前的高位閾值和低位閾值,τh和τl分別為高位和低位閾值的調(diào)節(jié)因子,當(dāng)Lddc<ωl時,τh和τl皆為正數(shù),當(dāng)Lddc>ωh時,τh和τl皆為負(fù)數(shù). 當(dāng)Lddc<ωl且Lrl>maxLrl時,數(shù)據(jù)中心負(fù)載度偏低,此時需要選擇需要進(jìn)行遷移操作的部分輕載節(jié)點(diǎn),在輕載節(jié)點(diǎn)完成遷移操作后會關(guān)閉該節(jié)點(diǎn).確定待遷移(關(guān)閉)輕載節(jié)點(diǎn)列表方法如下: 首先將輕載節(jié)點(diǎn)按負(fù)載度進(jìn)行升序,此時輕載節(jié)點(diǎn)列表 {NL1,NL2,···,NLs},則對應(yīng)節(jié)點(diǎn)負(fù)載值列表為{Ld1,Ld2,···,Lds},Lddc為此時的全局負(fù)載度,n為正在使用的節(jié)點(diǎn)總數(shù),設(shè)需要關(guān)閉的節(jié)點(diǎn)為k個,則k應(yīng)該滿足如下條件的最小正整數(shù): 當(dāng)Lddc>ωl且Lrh>maxLrh時,數(shù)據(jù)中心負(fù)載度偏高,此時開啟一個新的節(jié)點(diǎn). 本文采用的動態(tài)閾值調(diào)整具體流程如圖1所示. 圖1 狀態(tài)閾值動態(tài)調(diào)整流程圖 由狀態(tài)閾值可以對節(jié)點(diǎn)負(fù)載狀態(tài)進(jìn)行評估,是判斷節(jié)點(diǎn)是否需要進(jìn)行遷移調(diào)整的重要步驟,其評估結(jié)果是遷移觸發(fā)時機(jī)判定的重要依據(jù).但是節(jié)點(diǎn)負(fù)載變化時會出現(xiàn)短時間內(nèi)的負(fù)載抖動現(xiàn)象產(chǎn)生負(fù)載瞬時值,進(jìn)而影響遷移觸發(fā)時機(jī)的判斷,降低虛擬機(jī)遷移的有效性.本文采用乘積指數(shù)加權(quán)法[11]對m期內(nèi)的負(fù)載進(jìn)行評估,乘積指數(shù)加權(quán)公式如下: 其中,wt為第t期權(quán)重系數(shù).若此時為負(fù)載過載評估,則T1為 負(fù)載超過高位閾值的期數(shù),T2為負(fù)載低于高位閾值的期數(shù);若為負(fù)載輕載評估,則T1為負(fù)載值低于低位閾值的期數(shù),T2為負(fù)載值高于低位閾值的期數(shù). 根據(jù)以上狀態(tài)閾值動態(tài)調(diào)整方法結(jié)合負(fù)載值評估方法,設(shè)計了虛擬機(jī)的遷移時機(jī)判決算法,內(nèi)容如算法1. 算法1.基于動態(tài)閾值的遷移時機(jī)判決算法1)收集各節(jié)點(diǎn)負(fù)載信息,計算監(jiān)測時間內(nèi)全局負(fù)載度與高低負(fù)載節(jié)點(diǎn)占比,判斷是否需要更新閾值,是則轉(zhuǎn)第2)步,否則轉(zhuǎn)第3)步.2)分析全局負(fù)載度與高低負(fù)載占比,調(diào)整并更新狀態(tài)閾值.3)根據(jù)狀態(tài)閾值,分別判斷各節(jié)點(diǎn)負(fù)載狀態(tài).若節(jié)點(diǎn)負(fù)載指標(biāo)高于高位負(fù)載,開啟該節(jié)點(diǎn)該負(fù)載指標(biāo)過載評估,轉(zhuǎn)第4)步;若節(jié)點(diǎn)負(fù)載度低于低位負(fù)載,開啟該節(jié)點(diǎn)負(fù)載度輕載評估,轉(zhuǎn)第5)步;均未達(dá)到高低閾值要求為適載節(jié)點(diǎn),則轉(zhuǎn)第7)步.4)對節(jié)點(diǎn)超過高位閾值的負(fù)載指標(biāo)進(jìn)行m 期的查詢并計算其評估值,若評估值達(dá)到過載要求,則判斷此節(jié)點(diǎn)為該指標(biāo)類型過載,根據(jù)定義3,更新高負(fù)載節(jié)點(diǎn)矩陣H.轉(zhuǎn)第3)步,繼續(xù)循環(huán).5)對負(fù)載度低于低位閾值的節(jié)點(diǎn)進(jìn)行m 期的負(fù)載度查詢并計算其評估值.若m 期內(nèi)評估值均達(dá)到輕載要求,則判斷此節(jié)點(diǎn)輕載節(jié)點(diǎn),加入低負(fù)載節(jié)點(diǎn)列表.轉(zhuǎn)第3)步,繼續(xù)循環(huán).6)將低負(fù)載節(jié)點(diǎn)列表按負(fù)載度升序,結(jié)合全局負(fù)載度,判斷是否在負(fù)載均衡范圍 中,若,則根據(jù)式(11)計算得到待遷移操作的輕載節(jié)點(diǎn)集合L,若 且,則啟用一個節(jié)點(diǎn).7)輸出高負(fù)載節(jié)點(diǎn)矩陣H 與低負(fù)載節(jié)點(diǎn)矩陣L.(ωl,ωh)Lddc<ωl Lddc>ωl Lrh>maxLrh 上述算法可以通過動態(tài)閾值判斷遷移時機(jī)并得到高負(fù)載與低負(fù)載節(jié)點(diǎn)列表,即確定需進(jìn)行遷移選擇策略的節(jié)點(diǎn). 基于動態(tài)閾值的遷移時機(jī)判決算法確定了需進(jìn)行虛擬機(jī)遷移操作的高負(fù)載與低負(fù)載節(jié)點(diǎn)列表,本節(jié)的遷移選擇算法包含兩個方面:待遷移虛擬機(jī)的選擇算法和目的節(jié)點(diǎn)的選擇算法,旨在選擇合適的待遷移虛擬機(jī)與目的節(jié)點(diǎn),解除節(jié)點(diǎn)過載與輕載狀態(tài). 根據(jù)過載節(jié)點(diǎn)內(nèi)所有虛擬機(jī)使用資源情況,選擇合適的待遷移在虛擬機(jī)遷移過程中至關(guān)重要.本文將過載情況根據(jù)過載資源類型進(jìn)行劃分,以最少遷移次數(shù)為目標(biāo),那么待遷移虛擬機(jī)的選擇即可描述為節(jié)點(diǎn)遷移走后某虛擬機(jī)后過載資源回到適載范圍(即不超過此資源類型的高位閾值),使用以下公式描述: 其中,Ntype為節(jié)點(diǎn)資源為type類型的指標(biāo),為虛擬機(jī)在n時段所使用的平均資源利用率向量.除了滿足此條件,還需考慮其他方面因素,如下: (1)虛擬機(jī)與節(jié)點(diǎn)的資源依賴度 考慮到最快解決過載狀態(tài),引入虛擬機(jī)與節(jié)點(diǎn)的資源依賴度來評價虛擬機(jī)使用節(jié)點(diǎn)的資源情況,按過載類型尋找該類型資源依賴度高的虛擬機(jī).虛擬機(jī)與節(jié)點(diǎn)的資源的依賴度Rtype定義如下: 其中,Vi為虛擬機(jī)在i時刻的某指標(biāo)資源利用率,Ni為節(jié)點(diǎn)在i時刻的該指標(biāo)資源利用率,Rtype越大則表示該虛擬機(jī)與此節(jié)點(diǎn)的該指標(biāo)類型資源的依賴越高. (2)虛擬機(jī)當(dāng)前內(nèi)存帶寬比 虛擬機(jī)遷移的核心考慮因素是虛擬機(jī)內(nèi)存頁的遷移,此外還易受到節(jié)點(diǎn)帶寬因素的影響,故而在遷移開銷最小化的目的下選取虛擬機(jī)當(dāng)前內(nèi)存帶寬較小的虛擬機(jī),公式如下: 其中,Ri為此節(jié)點(diǎn)i的可用內(nèi)存;Bi為此節(jié)點(diǎn)i可用帶寬;vramj為虛擬機(jī)j的內(nèi)存. (3)虛擬機(jī)負(fù)載貢獻(xiàn)度 虛擬機(jī)負(fù)載貢獻(xiàn)度表現(xiàn)出此虛擬機(jī)使用此節(jié)點(diǎn)資源情況,此值越大則表示該虛擬機(jī)使用的資源越多.已知虛擬機(jī)在n時段所使用的平均資源利用率向量為V,該節(jié)點(diǎn)的負(fù)載指標(biāo)的權(quán)值為K,則該虛擬機(jī)在此節(jié)點(diǎn)上的負(fù)載貢獻(xiàn)度用式(16)描述: 若限定了某種資源類型Lc的值越大則代表另外虛擬機(jī)使用的兩種資源越多. 由式(13)至式(16)可以得到影響虛擬機(jī)選擇的3 個指標(biāo)值,為了獲得較少的遷移時間與遷移開銷,使用式(17)對這3 個指標(biāo)值進(jìn)行處理. 選擇待遷移虛擬機(jī)時將虛擬機(jī)按照此參考值升序排列,選取此參考值小的虛擬機(jī)可獲得最少的遷移次數(shù)、較少遷移時間與遷移代價. 為了方便為待遷移虛擬機(jī)選擇目的節(jié)點(diǎn)(即下一小節(jié)),為待遷移虛擬機(jī)計算資源比,即以下公式: 由虛擬機(jī)使用資源比可以得到此虛擬機(jī)的資源偏向類型. 考慮到以上問題,本文以最快解決節(jié)點(diǎn)過載問題為目的,選取遷移時間最短的虛擬機(jī),算法表達(dá)如算法2. 算法2.待遷移虛擬機(jī)選擇算法1)根據(jù)節(jié)點(diǎn)評估得到的高負(fù)載節(jié)點(diǎn)列表,獲取高負(fù)載節(jié)點(diǎn)信息.2)根據(jù)此節(jié)點(diǎn)過載類型,根據(jù)式(13)計算一次遷移可使得該節(jié)點(diǎn)解除過載情況的待篩選虛擬機(jī)集合.3)根據(jù)式(14)計算待篩選虛擬機(jī)集合中各虛擬機(jī)的此類資源依賴度,并按遞減排序.4)根據(jù)式(15)計算各虛擬機(jī)的內(nèi)存帶寬比;根據(jù)式(16)計算虛擬機(jī)的負(fù)載貢獻(xiàn)度.5)根據(jù)式(17)選擇虛擬機(jī)作為待遷移虛擬機(jī)并計算其資源比,加入待遷移虛擬機(jī)列表. 若節(jié)點(diǎn)是由于輕載需進(jìn)行遷移,則直接獲取其上運(yùn)行的虛擬機(jī),計算其資源偏向比并加入待遷移虛擬機(jī)列表. 目的節(jié)點(diǎn)的選取即為虛擬機(jī)選取合適的目的節(jié)點(diǎn),即虛擬機(jī)安置問題,高效的目的節(jié)點(diǎn)選擇算法有利于提高整個平臺的穩(wěn)定性和資源的高效利用.要考慮的因素主要有虛擬機(jī)與目的節(jié)點(diǎn)的資源匹配度以及遷移代價. 虛擬機(jī)與目標(biāo)節(jié)點(diǎn)的資源匹配度主要用來度量節(jié)點(diǎn)剩余資源與待虛擬機(jī)所需資源的承接情況.考慮到資源利用的均衡性,依據(jù)虛擬機(jī)資源偏向優(yōu)先為其配置該資源剩余度高的節(jié)點(diǎn).匹配度描述如下: 其中,m表示當(dāng)前有m個虛擬機(jī)正在遷移到該臺服務(wù)器上,Tbest為設(shè)定的節(jié)點(diǎn)承載虛擬機(jī)遷移的最大數(shù)目;Lci為第i個虛擬機(jī)的資源需求量; 選擇目的節(jié)點(diǎn)必須要考慮的一個問題就是虛擬機(jī)的遷移代價,這代表者虛擬機(jī)遷移過程中的資源損耗,若是遷移代價過高,則會造成資源浪費(fèi).虛擬機(jī)到目的節(jié)點(diǎn)的遷移代價與兩者距離有關(guān),其遷移代價由式(20)定義: 其中,Nitarget指Vi的目的節(jié)點(diǎn),Njsrc為Vi的源節(jié)點(diǎn);為V(i到目)的節(jié)點(diǎn)和源節(jié)點(diǎn)上剩余虛擬機(jī)Vj的 通信距離;為虛擬機(jī)之間的通信量. 根據(jù)以上內(nèi)容,設(shè)計目標(biāo)節(jié)點(diǎn)選擇算法表達(dá)可見算法3. 算法3.目標(biāo)節(jié)點(diǎn)選擇算法1)根據(jù)節(jié)點(diǎn)評估得到的適載節(jié)點(diǎn)列表,由負(fù)載度遞增排序,得到待選節(jié)點(diǎn)列表.2)根據(jù)式(19)計算待選節(jié)點(diǎn)列表計算虛擬機(jī)與節(jié)點(diǎn)的匹配度,并按遞減排序.3)按照匹配度順序根據(jù)式(20)分別計算遷移代價.4)選取匹配度高且遷移代價最小的節(jié)點(diǎn)為目的節(jié)點(diǎn). 為了驗(yàn)證基于虛擬機(jī)動態(tài)遷移的負(fù)載均衡策略的有效性,采用CloudSim 仿真平臺進(jìn)行仿真驗(yàn)證.建立含有異構(gòu)節(jié)點(diǎn)的數(shù)據(jù)中心,并配置多規(guī)格虛擬機(jī),為使仿真使用的物理機(jī)和虛擬機(jī)負(fù)載更接近現(xiàn)實(shí)情況,使用PlanetLab 項(xiàng)目中提供的虛擬機(jī)監(jiān)測數(shù)據(jù)作為實(shí)驗(yàn)負(fù)載,模擬數(shù)據(jù)中心進(jìn)行虛擬機(jī)遷移的仿真實(shí)驗(yàn),實(shí)驗(yàn)配置如表1. 表1 實(shí)驗(yàn)配置表 為了比較本文策略的仿真效果,使用以下指標(biāo)對遷移策略的性能進(jìn)行分析: 1)虛擬機(jī)遷移次數(shù).實(shí)驗(yàn)中,由于虛擬機(jī)個數(shù)、負(fù)載和位置的變化,導(dǎo)致節(jié)點(diǎn)的負(fù)載動態(tài)變化,虛擬機(jī)遷移策略影響著虛擬機(jī)的遷移次數(shù),故獲取指定時間內(nèi)的虛擬機(jī)遷移次數(shù),用來觀測系統(tǒng)的虛擬機(jī)的遷移頻率,是判斷虛擬機(jī)遷移策略性能的重要指標(biāo). 2)數(shù)據(jù)中心平均負(fù)載度.數(shù)據(jù)中心負(fù)載度是衡量數(shù)據(jù)中心負(fù)載情況與資源分配情況的有效指標(biāo),若負(fù)載度保持較低水平則說明較多節(jié)點(diǎn)存在過多的空閑資源,即資源分配不均衡,若此指標(biāo)數(shù)值過高,則說明存在大量過載節(jié)點(diǎn). 3)平均SLAV (Service Level Agreement Violation,SLAV).平均 SLAV 即平均服務(wù)等級協(xié)議違例率,用來評價用戶服務(wù)質(zhì)量水平的常用指標(biāo)之一,該值越低則表示用戶服務(wù)質(zhì)量越高.由于本文算法綜合考慮了節(jié)點(diǎn)的CPU 資源、內(nèi)存資源和帶寬資源,使用多維度平均SLAV 計算方法,如式(21): 其中,表示虛擬機(jī)需求的type類型資源量,為虛擬機(jī)type類型資源的實(shí)際使用量.K為一個周期內(nèi)的違約次數(shù). 為了比較本文算法的仿真效果,將使用兩個對比方案進(jìn)行實(shí)驗(yàn)對比.對比方案分別為:瞬時遷移觸發(fā)策略搭配最大相關(guān)性選擇策略的虛擬機(jī)遷移策略(以下稱策略1)與文獻(xiàn)[9]中的基于雙門限與資源需求相關(guān)性匹配的虛擬機(jī)遷移算法(以下稱策略2).針對虛擬機(jī)遷移的兩個模塊進(jìn)行兩組實(shí)驗(yàn),第一組為遷移觸發(fā)策略比較實(shí)驗(yàn),用以分析本策略中基于動態(tài)閾值的負(fù)載評估算法觸發(fā)遷移時機(jī)的合理性;第二組實(shí)驗(yàn)為遷移策略性能比對實(shí)驗(yàn),分析比較3 種不同的遷移策略效果,并對本文策略進(jìn)行綜合評價. 實(shí)驗(yàn)一.遷移觸發(fā)策略對比組 合理的遷移觸發(fā)策略可以有效判斷虛擬機(jī)遷移時機(jī),并通過觸發(fā)時機(jī)的合理性減少由于節(jié)點(diǎn)負(fù)載不均衡導(dǎo)致的服務(wù)效率問題.通常通過觀測虛擬機(jī)遷移次數(shù),從而分析遷移觸發(fā)策略的性能. 本實(shí)驗(yàn)組使用3 種觸發(fā)策略并在同一種選擇策略的條件下進(jìn)行實(shí)驗(yàn),通過收集一段時間內(nèi)不同虛擬機(jī)數(shù)量下的虛擬機(jī)遷移次數(shù)進(jìn)行可視化分析.3 種觸發(fā)策略分別為:策略1 中的瞬時觸發(fā)方式、策略2 中的雙門限觸發(fā)方式和本文動態(tài)閾值觸發(fā)方式.實(shí)驗(yàn)結(jié)果如圖2所示. 圖2 虛擬機(jī)遷移次數(shù)對比圖 由圖2可見,隨著虛擬機(jī)數(shù)目的增加,3 種觸發(fā)策略下的虛擬機(jī)遷移次數(shù)也逐漸增加.其中,由瞬間觸發(fā)策略下的虛擬機(jī)遷移頻率曲線斜率最大且增長速度明顯高于其他兩種策略,動態(tài)閾值觸發(fā)策略下的虛擬機(jī)遷移頻率最為平緩,由此可見使用基于動態(tài)閾值的負(fù)載評估算法進(jìn)行遷移時機(jī)判斷更能有效減少由瞬時峰值導(dǎo)致的虛擬機(jī)遷移,更有效解決由于虛擬機(jī)頻繁遷移導(dǎo)致的資源浪費(fèi)問題. 實(shí)驗(yàn)二.遷移策略性能比對組 將本文遷移策略、策略1 和策略2 的實(shí)驗(yàn)效果進(jìn)行分析比較,主要從數(shù)據(jù)中心的負(fù)載度和平均SLAV進(jìn)行比較.不同虛擬機(jī)數(shù)量下的數(shù)據(jù)中心的負(fù)載度對比圖如圖3所示. 圖3 數(shù)據(jù)中心負(fù)載度對比圖 隨著虛擬機(jī)數(shù)目的增加,3 種遷移策略下的數(shù)據(jù)中心負(fù)載度逐漸增加,由策略1 下的數(shù)據(jù)中心負(fù)載度曲線增長最快且波動最明顯,本文遷移策略下的數(shù)據(jù)中心負(fù)載度增長最慢且趨勢平緩,可見本文考慮虛擬機(jī)和節(jié)點(diǎn)過載資源的依賴關(guān)系和虛擬機(jī)負(fù)載貢獻(xiàn)度的虛擬機(jī)選擇算法配合根據(jù)虛擬機(jī)與目的節(jié)點(diǎn)資源匹配度和遷移代價的目的節(jié)點(diǎn)選擇算法在保持?jǐn)?shù)據(jù)中心負(fù)載均衡方面是有效的. 保證數(shù)據(jù)中心處于較高水平的服務(wù)質(zhì)量也是評價虛擬機(jī)遷移策略效果的必要的指標(biāo).本文通過分析平均SLAV 對3 種遷移策略下的服務(wù)質(zhì)量進(jìn)行評價,不同虛擬機(jī)數(shù)量下的平均SLAV 比較圖如圖4所示. 圖4 數(shù)據(jù)中心平均SLAV 對比圖 由圖4可見,隨著虛擬機(jī)數(shù)目的增加,3 種遷移策略下的數(shù)據(jù)中心平均SLAV 呈現(xiàn)不同程度的波動趨勢,策略1 的平均SLAV 曲線波動明顯,策略2 其次,本文策略具有最平穩(wěn)的變化趨勢,由此可見,本文策略可以有效地保證數(shù)據(jù)中心的SLAV 的違背率,并提供較為穩(wěn)定的服務(wù)質(zhì)量. 綜上所述,本文基于動態(tài)閾值的負(fù)載評估算法可以有效合理地對遷移時機(jī)進(jìn)行判斷并有效減少負(fù)載瞬時變化引起的遷移問題;基于負(fù)載類型感知的選擇策略包括根據(jù)虛擬機(jī)與節(jié)點(diǎn)過載資源的依賴關(guān)系與虛擬機(jī)負(fù)載貢獻(xiàn)度的虛擬機(jī)選擇算法與根據(jù)待遷移虛擬機(jī)與目的節(jié)點(diǎn)的資源匹配度與遷移代價的目的節(jié)點(diǎn)選擇算法在保證服務(wù)質(zhì)量與數(shù)據(jù)中心負(fù)載均衡方面是有效的. 本文針對數(shù)據(jù)中心異構(gòu)節(jié)點(diǎn)設(shè)計了一種基于虛擬機(jī)動態(tài)遷移的負(fù)載均衡策略,旨在通過解決異構(gòu)節(jié)點(diǎn)鐘各資源利用率不均衡問題達(dá)到數(shù)據(jù)中心負(fù)載均衡.設(shè)計了基于動態(tài)閾值的負(fù)載評估算法用于判斷遷移時機(jī)與基于負(fù)載類型感知的選擇策略.實(shí)驗(yàn)證明,本文遷移策略可以有效減少虛擬機(jī)遷移頻率,保證服務(wù)質(zhì)量并改善數(shù)據(jù)中心的負(fù)載均衡能力.


2.2 遷移觸發(fā)算法


3 基于負(fù)載類型感知的遷移選擇算法
3.1 虛擬機(jī)選擇算法







3.2 目的節(jié)點(diǎn)選擇算法



4 實(shí)驗(yàn)驗(yàn)證與分析
4.1 實(shí)驗(yàn)準(zhǔn)備


4.2 實(shí)驗(yàn)分析



5 結(jié)論與展望