張曉兵,朱仲馬
(中國電子科技集團(tuán)公司第二十八研究所,南京 210001)
云計(jì)算作為一種新型的計(jì)算模式,被廣泛應(yīng)用于多個(gè)領(lǐng)域,可通過互聯(lián)網(wǎng)將異構(gòu)的資源虛擬化為資源池,提供給用戶計(jì)算存儲(chǔ)服務(wù),還可通過云端服務(wù)器為用戶提供計(jì)算、存儲(chǔ)、軟件應(yīng)用服務(wù),按照服務(wù)類型分為SaaS(軟件即服務(wù))、PaaS(平臺(tái)即服務(wù))、IaaS(基礎(chǔ)設(shè)施即服務(wù))[1]。為提高云計(jì)算平臺(tái)資源利用率、保證云計(jì)算的服務(wù)能力,采用合適的資源調(diào)度算法十分關(guān)鍵[2]。
現(xiàn)有算法有以降低云計(jì)算數(shù)據(jù)中心能耗為目標(biāo)的節(jié)能資源調(diào)度方法[3],主要應(yīng)用于大型數(shù)據(jù)中心以減少資源能耗;有以提高系統(tǒng)資源利用率為目標(biāo)的資源管理方法,特點(diǎn)是確保所有物理資源都能得到充分的應(yīng)用;基于負(fù)載預(yù)測的資源調(diào)度算法[4-5],主要根據(jù)歷史負(fù)載信息,采用人工智能算法預(yù)測數(shù)據(jù)中心負(fù)載,進(jìn)行基本預(yù)測。現(xiàn)有資源調(diào)度算法主要依賴傳統(tǒng)資源調(diào)度算法[6],在云計(jì)算的特殊環(huán)境里,資源調(diào)度策略需要有針對(duì)性,不存在可滿足各個(gè)場景實(shí)際資源調(diào)度需求的通用算法。針對(duì)以上問題,提出兩種資源調(diào)度策略:資源分配負(fù)載均衡,通過監(jiān)控、業(yè)務(wù)場景分類以及負(fù)載預(yù)判等手段,實(shí)現(xiàn)資源分配階段的均衡策略;另外隨著主機(jī)的不斷運(yùn)行,主機(jī)負(fù)載也會(huì)發(fā)生很大變化。因此需要結(jié)合資源運(yùn)行時(shí)的動(dòng)態(tài)調(diào)度策略實(shí)現(xiàn)局部負(fù)載均衡,主要包含兩方面的實(shí)時(shí)負(fù)載均衡,以防止瞬時(shí)的負(fù)載變化影響系統(tǒng)整體負(fù)載,還可采用基于負(fù)載預(yù)測的算法,在主機(jī)業(yè)務(wù)空閑時(shí)提前完成負(fù)載遷移。
云計(jì)算系統(tǒng)主要包含控制器、計(jì)算節(jié)點(diǎn),其中控制器負(fù)責(zé)資源調(diào)度和分配,計(jì)算節(jié)點(diǎn)為虛擬機(jī)提供計(jì)算存儲(chǔ)資源[7]。資源調(diào)度的主要目的是確保整個(gè)系統(tǒng)資源能夠合理均分,確保資源最大化使用。造成資源分配不合理的主要原因包括:創(chuàng)建時(shí)不合理,只考慮資源分配情況,未考慮資源冷熱情況以及負(fù)載情況;使用過程中發(fā)生資源回收和申請(qǐng),可能導(dǎo)致整體負(fù)載出現(xiàn)不均衡;個(gè)別主機(jī)申請(qǐng)之后長期使用負(fù)載很低,導(dǎo)致資源浪費(fèi)。
調(diào)度算法分為離線調(diào)度算法(靜態(tài)調(diào)度算法)和在線調(diào)度算法(動(dòng)態(tài)調(diào)度算法)[8]。離線調(diào)度算法在調(diào)度之前已完成調(diào)度方法規(guī)劃,而在線調(diào)度算法是在系統(tǒng)運(yùn)行過程中動(dòng)態(tài)調(diào)整資源負(fù)載情況。在云計(jì)算環(huán)境中,無法預(yù)測資源的分配和回收,整個(gè)數(shù)據(jù)中心的負(fù)載情況隨時(shí)間變化可能出現(xiàn)很大波動(dòng),因此無法采用離線調(diào)度算法。
常見的動(dòng)態(tài)調(diào)度算法主要有4種:①最小負(fù)載優(yōu)先調(diào)度算法,選擇瞬時(shí)負(fù)載最小的物理主機(jī),只考慮瞬時(shí)最優(yōu)解,但是不會(huì)考慮系統(tǒng)整體的負(fù)載情況;②輪轉(zhuǎn)調(diào)度算法,所有主機(jī)按照順序依次遍歷分配系統(tǒng)資源;③面向服務(wù)優(yōu)先級(jí)的QoS調(diào)度策略[9],給虛擬機(jī)賦予動(dòng)態(tài)優(yōu)先級(jí),進(jìn)行資源調(diào)度,根據(jù)虛擬機(jī)工作負(fù)載和QoS需求進(jìn)行動(dòng)態(tài)調(diào)整;④基于負(fù)載均衡的裝箱優(yōu)化策略,將物理節(jié)點(diǎn)抽象成為箱子,虛擬機(jī)作為物品,采用遺傳算法解決如何分配虛擬機(jī),使物理主機(jī)數(shù)量最小以及虛擬機(jī)遷移次數(shù)最少。本文通過使用動(dòng)態(tài)遷移技術(shù),從兩個(gè)方面實(shí)現(xiàn)云計(jì)算資源動(dòng)態(tài)調(diào)度:分配虛擬機(jī)資源時(shí)采用主機(jī)負(fù)載及冷熱預(yù)測模型進(jìn)行主機(jī)選擇;系統(tǒng)運(yùn)行過程中采用基于實(shí)時(shí)負(fù)載、結(jié)合分時(shí)段預(yù)測負(fù)載相結(jié)合的模式。
虛擬機(jī)動(dòng)態(tài)調(diào)度的基本要求是能夠在用戶基本無感知的情況下,在系統(tǒng)內(nèi)部進(jìn)行資源調(diào)度和重新編排,主要依賴于兩種現(xiàn)有成熟的技術(shù),虛擬機(jī)遷移技術(shù)和資源監(jiān)控技術(shù)。虛擬機(jī)遷移技術(shù)能夠保證虛擬資源服務(wù)在線進(jìn)行主機(jī)之間的相互遷移,資源監(jiān)控技術(shù)能夠通過代理模式監(jiān)控平臺(tái)所有創(chuàng)建的虛擬主機(jī)和物理主機(jī)運(yùn)行狀態(tài)以及負(fù)載情況。一方面可以了解系統(tǒng)整體運(yùn)行狀態(tài),另外可以通過用戶無感知的手段進(jìn)行資源重新規(guī)劃,保證調(diào)度策略正常運(yùn)行。
虛擬機(jī)遷移是運(yùn)用云計(jì)算資源動(dòng)態(tài)調(diào)度策略[10]的技術(shù),為資源動(dòng)態(tài)調(diào)整提供可能。虛擬機(jī)遷移可實(shí)現(xiàn)虛擬機(jī)在不同宿主機(jī)間遷移,在遷移過程中源虛擬機(jī)通過內(nèi)存、CPU、網(wǎng)絡(luò)、存儲(chǔ)遷移技術(shù)實(shí)現(xiàn)不中斷服務(wù)。其中存儲(chǔ)遷移涉及到大文件的傳輸,如果采用NAS、SAN等存儲(chǔ)設(shè)備共享數(shù)據(jù),則無需進(jìn)行磁盤數(shù)據(jù)的傳輸?shù)?。根?jù)存儲(chǔ)是否遷移又分為兩種:基于共享存儲(chǔ)模式遷移和非共享存儲(chǔ)模式遷移。共享存儲(chǔ)遷移包含CPU狀態(tài)復(fù)制、網(wǎng)絡(luò)遷移、內(nèi)存拷貝、不遷移存儲(chǔ);非共享存儲(chǔ)遷移除了CPU、內(nèi)存外,還需要遷移網(wǎng)絡(luò)和磁盤塊,數(shù)據(jù)較大的磁盤在遷移過程中會(huì)占用大量網(wǎng)絡(luò)帶寬,因此對(duì)磁盤遷移時(shí)需謹(jǐn)慎,防止影響系統(tǒng)服務(wù)質(zhì)量。雖然虛擬機(jī)遷移技術(shù)已經(jīng)十分成熟,但遷移過程中虛擬機(jī)提供的服務(wù)會(huì)出現(xiàn)短暫中斷,另外也會(huì)有內(nèi)存開銷(遷移過程中,要在目標(biāo)主機(jī)上分配內(nèi)存空間拷貝源主機(jī)內(nèi)存)、帶寬開銷(非共享存儲(chǔ)遷移中,大量數(shù)據(jù)傳輸消耗網(wǎng)絡(luò)帶寬)。
圖1 虛擬機(jī)遷移
資源監(jiān)控技術(shù)是一種利用計(jì)算機(jī)控制等技術(shù)實(shí)現(xiàn)對(duì)現(xiàn)場環(huán)境數(shù)據(jù)存儲(chǔ)、采集和監(jiān)控的系統(tǒng),采用資源監(jiān)控即時(shí)運(yùn)行狀況。Zabbix是一種基于Web界面、提供分布式系統(tǒng)監(jiān)控功能的企業(yè)級(jí)開源解決方案,采用C/S模式采集數(shù)據(jù),監(jiān)控主機(jī)上安裝代理,通過Agent發(fā)送監(jiān)控?cái)?shù)據(jù),網(wǎng)絡(luò)設(shè)備不僅可通過SNMP方式采集,還可以由SSH、Telnet、IPMI、JMX等多種渠道采集,將采集到的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸給服務(wù)端,然后服務(wù)端把數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)庫中,再對(duì)數(shù)據(jù)進(jìn)行分析處理[11]。本文調(diào)度策略使用代理模式,需要在虛擬機(jī)模板中提前植入代理,通過代理采集虛擬機(jī)的CPU利用率、內(nèi)存利用率、磁盤利用率、網(wǎng)絡(luò)利用率作為虛擬機(jī)負(fù)載指標(biāo)。
由于整個(gè)云計(jì)算平臺(tái)的復(fù)雜性和多樣性,一個(gè)良好的資源調(diào)度策略能夠讓云計(jì)算平臺(tái)發(fā)揮更大的計(jì)算能力,提供高質(zhì)量的服務(wù),降低數(shù)據(jù)中心能耗?,F(xiàn)有資源調(diào)度策略在某些方面有獨(dú)特優(yōu)勢和特點(diǎn),但是對(duì)于不同的數(shù)據(jù)中心和應(yīng)用場景,調(diào)度策略不能夠照搬,必須按照當(dāng)前環(huán)境配置不同的參數(shù)以達(dá)到最優(yōu)解。資源調(diào)度的最終目標(biāo)是提高服務(wù)質(zhì)量QoS(包含網(wǎng)絡(luò)帶寬、服務(wù)性能、系統(tǒng)可靠性),使系統(tǒng)負(fù)載均衡[12](異構(gòu)資源整合之后實(shí)現(xiàn)提高系統(tǒng)的吞吐量,降低處理性能,提高服務(wù)質(zhì)量),自動(dòng)化調(diào)整機(jī)制(能夠?qū)崿F(xiàn)自動(dòng)化負(fù)載均衡,為系統(tǒng)提供自適應(yīng)調(diào)整能力,減少人工維護(hù)成本)。因此本文提出兩種策略:資源分配均衡策略和資源運(yùn)行時(shí)動(dòng)態(tài)調(diào)度策略。
資源分配均衡策略指在虛擬資源分配階段不僅要保證虛擬機(jī)創(chuàng)建任務(wù)能夠得到及時(shí)響應(yīng),也要保證虛擬機(jī)創(chuàng)建之后各個(gè)主機(jī)之間的負(fù)載能夠保持基本平衡。
當(dāng)有資源分配任務(wù)時(shí),任務(wù)調(diào)度器根據(jù)輪詢算法[13]把任務(wù)依次分配到不同控制節(jié)點(diǎn)上,減少不同控制節(jié)點(diǎn)的負(fù)載,同時(shí)多個(gè)控制節(jié)點(diǎn)也能夠保證系統(tǒng)高可用性,確保系統(tǒng)能夠一直提供服務(wù)。多個(gè)控制節(jié)點(diǎn)同時(shí)執(zhí)行任務(wù)可以保證用戶請(qǐng)求能夠在最短時(shí)間內(nèi)得到相應(yīng)的服務(wù)器處理。對(duì)于任務(wù)分配采用結(jié)合優(yōu)先級(jí)高低、先到先分配的原則進(jìn)行處理,既確保服務(wù)的公平性,也能夠保證特殊任務(wù)的服務(wù)質(zhì)量優(yōu)先級(jí)。
選擇計(jì)算主機(jī)的時(shí)候需要考慮諸多因素,包含F(xiàn)ram(主機(jī)內(nèi)存的資源剩余情況)、Fcore(主機(jī)核數(shù)資源的剩余情況)、Fdisk(主機(jī)磁盤的剩余情況)、Finstance(主機(jī)虛擬機(jī)數(shù)目)、Fmonitor(主機(jī)監(jiān)控采集到整體負(fù)載情況),根據(jù)以上5個(gè)指標(biāo)分配占用權(quán)重,計(jì)算主機(jī)優(yōu)先級(jí)為:
Pi=Fcore*Wc+Fram*Wr+Fdisk*Wd+
Finstance*Wi+Fmonitor*Wm
(1)
其中Wc+Wr+Wd+Wi+Wm=1,可以根據(jù)使用場景對(duì)CPU、內(nèi)存、磁盤、負(fù)載情況等不同因素的需求,靈活設(shè)置權(quán)重,增加對(duì)應(yīng)種類的資源對(duì)整體優(yōu)先級(jí)的影響比重。創(chuàng)建虛擬機(jī)時(shí)首先采集所有主機(jī)的優(yōu)先級(jí)指標(biāo),然后根據(jù)設(shè)定的權(quán)重因子計(jì)算不同主機(jī)優(yōu)先級(jí),分別為P1、P2、……、Pn,其中Pi值越小優(yōu)先級(jí)越高,根據(jù)創(chuàng)建虛擬機(jī)數(shù)目選擇Top M作為創(chuàng)建目標(biāo),同時(shí)也要考慮選擇對(duì)應(yīng)主機(jī)之后帶來的影響,確保負(fù)載變化不會(huì)太大。分配虛擬機(jī)資源時(shí),對(duì)虛擬機(jī)業(yè)務(wù)場景做標(biāo)簽分類,然后根據(jù)虛擬機(jī)應(yīng)用的業(yè)務(wù)場景進(jìn)行基本預(yù)測。例如計(jì)算密集型的應(yīng)用會(huì)更加關(guān)注內(nèi)存和磁盤信息,CPU使用較多,使內(nèi)核權(quán)重因子變大;在主機(jī)分配過程中對(duì)虛擬機(jī)業(yè)務(wù)進(jìn)行基本分類,結(jié)合宿主機(jī)整體負(fù)載狀況,一方面可以讓虛擬機(jī)發(fā)揮更大性能,為用戶提供更加優(yōu)質(zhì)的服務(wù),另外可以充分利用系統(tǒng)資源,保證系統(tǒng)資源能夠?qū)崿F(xiàn)均衡分配和合理調(diào)度。
圖2 資源分配策略
云平臺(tái)上的虛擬主機(jī)面對(duì)各種任務(wù),隨著時(shí)間的變化,虛擬資源負(fù)載情況會(huì)產(chǎn)生較大變化,導(dǎo)致物理主機(jī)負(fù)載出現(xiàn)不均衡?;谠搯栴}本文提出一種資源運(yùn)行時(shí)的動(dòng)態(tài)調(diào)度策略。
3.2.1 資源動(dòng)態(tài)調(diào)度模型
資源調(diào)度、分配問題涉及多個(gè)資源分配和規(guī)劃,屬于NP完全問題[14]。結(jié)合系統(tǒng)存儲(chǔ)的歷史負(fù)載數(shù)據(jù)及當(dāng)前實(shí)時(shí)負(fù)載狀態(tài),尋找一種既能夠?qū)崿F(xiàn)資源負(fù)載均衡分配的約束,又能盡量避免虛擬機(jī)動(dòng)態(tài)遷移的方案,同時(shí)還要避免虛擬機(jī)不停被遷移時(shí)出現(xiàn)系統(tǒng)抖動(dòng)。調(diào)度算法具有很好的全局收斂性,可以在資源負(fù)載均衡和虛擬機(jī)遷移代價(jià)之間尋找一個(gè)最優(yōu)解[15-16]。
系統(tǒng)主要監(jiān)控指標(biāo)包含CPU負(fù)載、內(nèi)存負(fù)載、磁盤使用情況、網(wǎng)絡(luò)流量,為每個(gè)負(fù)載因子賦予權(quán)重,主機(jī)綜合負(fù)載Load可表示為:
Loadi=Loadcpu*Wcpu+Loadmem*Wmem+
Loaddisk*Wdisk+Loadnet*Wnet
(2)
其中,Wcpu+Wmem+Wdisk+Wnet=1,通過代理采集物理機(jī)及虛擬機(jī)各項(xiàng)監(jiān)控指標(biāo),計(jì)算綜合負(fù)載值,同時(shí)對(duì)每個(gè)主機(jī)負(fù)載進(jìn)行排序。公式(2)能夠把抽象、零散的各項(xiàng)指標(biāo)數(shù)值整合為綜合負(fù)載信息,負(fù)載因子和值為固定值,但各個(gè)指標(biāo)值可隨實(shí)際業(yè)務(wù)需求變化。根據(jù)當(dāng)前集群運(yùn)行的業(yè)務(wù)類型情況進(jìn)行靈活配置,能夠滿足云上復(fù)雜的業(yè)務(wù)類型。為了實(shí)現(xiàn)資源運(yùn)行時(shí)的動(dòng)態(tài)調(diào)度,本文主要依賴兩種不同的主機(jī)負(fù)載信息:時(shí)負(fù)載信息和歷史負(fù)載信息。
(1)即時(shí)負(fù)載信息。主機(jī)當(dāng)前負(fù)載信息是主機(jī)短時(shí)間內(nèi)的負(fù)載均值,監(jiān)控代理采集指標(biāo)的時(shí)間間隔為T,采用最近N次采集的數(shù)據(jù)按照公式(2)分別計(jì)算其綜合負(fù)載值,然后求取平均值為當(dāng)前負(fù)載值。采用多次負(fù)載值求取平均值,能避免在監(jiān)控代理采集數(shù)據(jù)時(shí)系統(tǒng)瞬時(shí)負(fù)載過高,影響采集結(jié)果的正確性。使用即時(shí)負(fù)載信息是為確保當(dāng)某一主機(jī)在某一段時(shí)間內(nèi)發(fā)生大規(guī)模流量訪問時(shí),系統(tǒng)能夠?qū)崟r(shí)監(jiān)控到負(fù)載信息的變化,根據(jù)資源調(diào)度策略進(jìn)行資源遷移,確??煽?、穩(wěn)定的云服務(wù)。
(2)歷史負(fù)載信息。歷史負(fù)載信息主要存儲(chǔ)主機(jī)的歷史監(jiān)控指標(biāo)。首先將歷史監(jiān)控信息記錄下來,然后按照時(shí)間間隔T作為歷史負(fù)載信息的時(shí)間周期,對(duì)每兩個(gè)時(shí)間點(diǎn)間采集到的各項(xiàng)監(jiān)控指標(biāo)進(jìn)行處理,求取各項(xiàng)監(jiān)控指標(biāo)的平均值,作為該時(shí)間段內(nèi)的主機(jī)負(fù)載值,同時(shí)保留時(shí)間信息。經(jīng)過處理之后可以獲取一天內(nèi)任意某個(gè)時(shí)間段的主機(jī)負(fù)載指標(biāo)及主機(jī)一天之內(nèi)的負(fù)載變化規(guī)律,為主機(jī)負(fù)載預(yù)測提供歷史數(shù)據(jù)。
3.2.2 資源動(dòng)態(tài)調(diào)度策略
(1)實(shí)時(shí)負(fù)載均衡策略。由于系統(tǒng)負(fù)載隨著時(shí)間會(huì)發(fā)生很大變化,本文實(shí)時(shí)負(fù)載策略主要用于云計(jì)算平臺(tái)運(yùn)行的整個(gè)過程。按照實(shí)時(shí)監(jiān)控的CPU、內(nèi)存、磁盤以及網(wǎng)絡(luò)流量的負(fù)載信息,根據(jù)一定的策略完成每個(gè)周期內(nèi)資源調(diào)度。在已經(jīng)運(yùn)行的系統(tǒng)中按照每次間隔時(shí)間執(zhí)行一次實(shí)時(shí)負(fù)載均衡策略,在每個(gè)周期內(nèi)計(jì)算物理主機(jī)實(shí)時(shí)綜合負(fù)載,當(dāng)綜合負(fù)載的值超過設(shè)定的負(fù)載閾值后,需要執(zhí)行調(diào)度策略。其中以下問題需要重點(diǎn)關(guān)注:一個(gè)調(diào)度周期需要遷移多少臺(tái)以及選擇哪幾臺(tái)虛擬機(jī)遷移才能使得遷移代價(jià)最小,同時(shí)實(shí)現(xiàn)服務(wù)質(zhì)量保證和遷移次數(shù)最小的一個(gè)折中考慮;遷移的目標(biāo)主機(jī)如何選擇,以確保遷移之后目標(biāo)主機(jī)負(fù)載不出現(xiàn)抖動(dòng),以免產(chǎn)生新的高負(fù)載主機(jī),造成無用遷移。
圖3 實(shí)時(shí)負(fù)載均衡策略流程
實(shí)時(shí)負(fù)載均衡策略為周期性任務(wù),如果一個(gè)調(diào)度周期性遷移的虛擬機(jī)數(shù)目太多,會(huì)占用大量網(wǎng)絡(luò)帶寬,產(chǎn)生不必要的資源消耗。如果一個(gè)調(diào)度周期內(nèi)遷移數(shù)目太少,則可能需要進(jìn)行多個(gè)周期調(diào)度才能實(shí)現(xiàn)負(fù)載均衡,且時(shí)間過長,不能及時(shí)對(duì)系統(tǒng)負(fù)載突變產(chǎn)生及時(shí)響應(yīng)。遷移數(shù)量需要根據(jù)當(dāng)前負(fù)載情況決定,通過運(yùn)維監(jiān)控系統(tǒng)可以了解系統(tǒng)內(nèi)計(jì)算主機(jī)以及虛擬機(jī)負(fù)載情況,因此負(fù)載的整體情況決定每個(gè)周期內(nèi)遷移的虛擬機(jī)數(shù)目不能一成不變,需要根據(jù)實(shí)際情況動(dòng)態(tài)調(diào)整。通過實(shí)驗(yàn)結(jié)合數(shù)據(jù)中心的實(shí)際運(yùn)行情況,可以得出虛擬機(jī)在實(shí)際遷移過程中如果涉及到數(shù)據(jù)遷移(采用非共享存儲(chǔ)的模式),會(huì)占用大量網(wǎng)絡(luò)帶寬,因此本文對(duì)虛擬機(jī)遷移提供專用網(wǎng)絡(luò),不占用虛擬機(jī)業(yè)務(wù)網(wǎng)帶寬。遷移時(shí)主機(jī)選擇也是一個(gè)重要因素。主機(jī)資源分為冷資源和熱資源,由于主機(jī)運(yùn)行的任務(wù)類型各式各樣,運(yùn)行任務(wù)的目的也各有不同,因此會(huì)存在冷熱之分。冷資源指主機(jī)提供的服務(wù)訪問頻率低、系統(tǒng)負(fù)載總是保持在較低值;熱資源指主機(jī)提供的服務(wù)訪問頻率高,主機(jī)負(fù)載一直處于或者在某一特定的時(shí)間段內(nèi)負(fù)載值較高,因此需要記錄虛擬機(jī)結(jié)合時(shí)間維度的冷熱狀況。
選擇某一臺(tái)負(fù)載超標(biāo)的計(jì)算主機(jī),計(jì)算各項(xiàng)負(fù)載在閾值之上超出的數(shù)量為Mi=Mcpu*Wcpu+Mmem*Wmem+Mdisk*Wdisk+Mnet*Wnet,其中M代表超出閾值的數(shù)量。需要對(duì)該主機(jī)之上虛擬機(jī)的負(fù)載進(jìn)行排序,首先選出該時(shí)間段的冷資源,遷移雖然能夠確保服務(wù)不中斷,但是還是會(huì)產(chǎn)生短暫的服務(wù)不響應(yīng),影響虛擬主機(jī)服務(wù)質(zhì)量,遷移冷資源不會(huì)對(duì)正在物理節(jié)點(diǎn)運(yùn)行的虛擬主機(jī)提供的服務(wù)產(chǎn)生太大影響,同時(shí)也能避免熱資源沖突,以免服務(wù)器壓力過大,因此選擇遷移冷資源。遷移主機(jī)的數(shù)量根據(jù)超出閾值的負(fù)載量而定,從負(fù)載最高的冷資源往下確定遷移主機(jī)的數(shù)量。確定完需要遷移虛擬機(jī)的物理主機(jī)以及需要遷移的虛擬機(jī)后,選擇目標(biāo)主機(jī)。需要從負(fù)載最低的物理機(jī)開始選擇目標(biāo)主機(jī),通過算法模擬遷移之后的負(fù)載變化,始終選擇負(fù)載最小的物理機(jī)進(jìn)行遷移。在模擬過程中,首先選擇負(fù)載最小的物理機(jī)遷移一臺(tái)虛擬機(jī),然后整體物理機(jī)服務(wù)發(fā)生變化,重新對(duì)集群內(nèi)物理機(jī)負(fù)載進(jìn)行排序,選擇負(fù)載最小的物理機(jī)進(jìn)行下一次遷移,以此類推,確保集群整體不會(huì)發(fā)生震蕩,也可以一次性標(biāo)記完所有虛擬機(jī)遷移目標(biāo)。
(2)預(yù)測負(fù)載遷移策略。實(shí)時(shí)負(fù)載均衡策略作為一種短周期性的策略能夠避免某些服務(wù)突發(fā)訪問量帶來的負(fù)載壓力,為減少實(shí)時(shí)負(fù)載策略的虛擬機(jī)調(diào)度數(shù)量,提出一種長周期基于虛擬機(jī)負(fù)載預(yù)測的主機(jī)調(diào)度策略。
通過監(jiān)控代理不間斷采集虛擬主機(jī)負(fù)載情況,隨著時(shí)間累計(jì),可以采集到每天每個(gè)時(shí)間段的主機(jī)負(fù)載,收集物理機(jī)主機(jī)及虛擬主機(jī)負(fù)載情況。把主機(jī)在一天指定時(shí)間段作為一個(gè)定點(diǎn),可以收集到該時(shí)間點(diǎn)內(nèi),在若干天內(nèi)的變化趨勢或者變化規(guī)律,預(yù)測未來變化趨勢。
未來負(fù)載預(yù)測[17-18]有幾種通用的算法。其中,線性回歸(Liner Regression)、邏輯回歸(Logistic Regression)、多項(xiàng)式回歸(Polynomial Regression)主要用于擬合數(shù)據(jù)點(diǎn)的曲線,橫軸表示連續(xù)時(shí)間間隔,縱軸表示預(yù)測時(shí)間段內(nèi)在一定時(shí)間段的平均負(fù)載。在本系統(tǒng)采用傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)結(jié)合ARIMA算法[19],預(yù)測未來一天的主機(jī)負(fù)載情況和時(shí)間變化序列。隨著時(shí)間的不斷累積,可以得到的歷史數(shù)據(jù)會(huì)越來越多,可以使用大量的歷史數(shù)據(jù)構(gòu)建出訓(xùn)練模型。通過時(shí)間預(yù)測,可以推測未來各個(gè)主機(jī)的負(fù)載變化情況和各個(gè)時(shí)間段內(nèi)的冷熱資源,盡量合理地將負(fù)載分配到各個(gè)服務(wù)器節(jié)點(diǎn),按照系統(tǒng)冷熱時(shí)間錯(cuò)峰分配主機(jī),一方面能夠確保主機(jī)性能最大限度發(fā)揮,另一方面夠避免在同一個(gè)時(shí)間段內(nèi)同一個(gè)主機(jī)內(nèi)出現(xiàn)較多的熱資源,以免產(chǎn)生資源競爭沖突[20]。預(yù)測負(fù)載遷移策略執(zhí)行一次可能會(huì)需要更多時(shí)間,損耗更多資源,因此執(zhí)行頻率更低。另外還需要從監(jiān)控?cái)?shù)據(jù)中預(yù)測在一段時(shí)間內(nèi)系統(tǒng)整體負(fù)載最低的時(shí)間點(diǎn),時(shí)間段可以以周或月為單位進(jìn)行預(yù)測。
本文提出一套完整的云計(jì)算系統(tǒng)資源調(diào)度策略以確保云計(jì)算平臺(tái)服務(wù)質(zhì)量,結(jié)合實(shí)際生產(chǎn)環(huán)境進(jìn)行驗(yàn)證,但是由于不同數(shù)據(jù)中心環(huán)境差異性較大,實(shí)際運(yùn)行的業(yè)務(wù)系統(tǒng)類型也存在巨大差別,因此具體參數(shù)需要根據(jù)實(shí)際環(huán)境進(jìn)行調(diào)整。云計(jì)算系統(tǒng)資源調(diào)度自動(dòng)化執(zhí)行是未來發(fā)展趨勢,結(jié)合人工智能等相應(yīng)的算法能夠讓算法在歷史數(shù)據(jù)中不斷學(xué)習(xí),提高系統(tǒng)內(nèi)部資源調(diào)度的合理性。