牟宏蕾,楊波,郝亞飛
(中國(guó)移動(dòng)通信集團(tuán)設(shè)計(jì)院有限公司黑龍江分公司,黑龍江 哈爾濱150080)
4G時(shí)代,運(yùn)營(yíng)商在從語(yǔ)音經(jīng)營(yíng)向流量經(jīng)營(yíng)和數(shù)字化經(jīng)營(yíng)的轉(zhuǎn)型過(guò)程中,原有的客戶、渠道、產(chǎn)品、合作伙伴等商業(yè)要素的內(nèi)涵、外延均已不同。新的商業(yè)模式和信息新技術(shù)的發(fā)展,均推動(dòng)著業(yè)務(wù)支撐系統(tǒng)的云化演進(jìn),如圖1所示。
而云平臺(tái)中普遍存在著資源浪費(fèi)和閑置的情況。以黑龍江O域?yàn)槔瑸楸WC系統(tǒng)的穩(wěn)定性,云平臺(tái)根據(jù)忙時(shí)業(yè)務(wù)需求進(jìn)行虛擬機(jī)的配置部署。各應(yīng)用獨(dú)立占用預(yù)分配的計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)資源,從而在業(yè)務(wù)非忙時(shí)產(chǎn)生大量資源浪費(fèi)現(xiàn)象。另外,應(yīng)用的上線、更新、擴(kuò)容等資源調(diào)整依賴人為操作,浪費(fèi)了大量的人力。
為了提高資源利用率,提升云資源的運(yùn)維效率,本文針對(duì)業(yè)務(wù)支撐系統(tǒng)不同場(chǎng)景的需求對(duì)云資源的動(dòng)態(tài)調(diào)度進(jìn)行了探索。
2.1.1 適用場(chǎng)景
網(wǎng)絡(luò)支撐客服系統(tǒng)(以下簡(jiǎn)稱客服系統(tǒng))Web應(yīng)用有著顯著的負(fù)載變化特點(diǎn),在客服業(yè)務(wù)流程中,隨著客戶的投訴量等變化,系統(tǒng)的負(fù)載變化明顯。在平時(shí),客服量基本保持在一定水平;在忙時(shí)或者重大事件發(fā)生時(shí),客服系統(tǒng)負(fù)荷顯著上升;在閑時(shí)(如晚間話務(wù)量減少時(shí)),會(huì)出現(xiàn)負(fù)載的大范圍下降。
圖1 業(yè)務(wù)支撐系統(tǒng)演進(jìn)
根據(jù)此類業(yè)務(wù)的負(fù)載變化特點(diǎn),有針對(duì)性地動(dòng)態(tài)調(diào)節(jié)資源供給量,以達(dá)到資源隨著業(yè)務(wù)量變化聯(lián)動(dòng)的效果,保持資源使用率維持在較高水準(zhǔn),提高資源平均利用率。
2.1.2 調(diào)度方案
通過(guò)引入業(yè)務(wù)服務(wù)等級(jí)管理的概念,進(jìn)行資源的動(dòng)態(tài)調(diào)整。通過(guò)虛擬機(jī)服務(wù)等級(jí)的定義和各種選項(xiàng)的組合,影響虛擬機(jī)在創(chuàng)建和運(yùn)行時(shí)的狀態(tài),從而區(qū)別對(duì)待不同的虛擬機(jī)。在業(yè)務(wù)申請(qǐng)時(shí),可以根據(jù)自身業(yè)務(wù)的需求而選擇不同的服務(wù)等級(jí)。
虛擬機(jī)在創(chuàng)建時(shí)如果指定了服務(wù)等級(jí),則在資源調(diào)度系統(tǒng)中調(diào)度時(shí),會(huì)將服務(wù)等級(jí)定義參數(shù)作為調(diào)度的參考因素之一?;A(chǔ)服務(wù)等級(jí)定義有如下種類。
·計(jì)算類資源:包括資源池、集群、資源標(biāo)簽及內(nèi)存預(yù)留。
·網(wǎng)絡(luò)類資源:包括設(shè)置網(wǎng)絡(luò)、網(wǎng)絡(luò)限速。
·存儲(chǔ)類資源:設(shè)置存儲(chǔ)標(biāo)簽,對(duì)底層的存儲(chǔ)設(shè)施進(jìn)行標(biāo)簽化。在創(chuàng)建虛擬機(jī)時(shí),通過(guò)不同存儲(chǔ)標(biāo)簽的選擇,影響虛擬機(jī)所使用的存儲(chǔ)設(shè)施。根據(jù)存儲(chǔ)設(shè)施的配置,可以設(shè)置如SSD存儲(chǔ)、SCSI存儲(chǔ)、本地(local)存儲(chǔ)等。
·高可用性:虛擬機(jī)HA。在創(chuàng)建VM時(shí),可以選擇啟動(dòng)HA功能。從而運(yùn)行的VM在出現(xiàn)故障時(shí),可以自動(dòng)被云平臺(tái)重建并遷移到其他hypervisor上面運(yùn)行,避免關(guān)鍵性業(yè)務(wù)中斷。
調(diào)度系統(tǒng)在調(diào)度虛擬機(jī)資源時(shí),將根據(jù)服務(wù)等級(jí)的定義自動(dòng)選擇合適的hypervisor主機(jī)、網(wǎng)絡(luò)以及存儲(chǔ)類型。在分配hypervisor主機(jī)資源時(shí),根據(jù)SLA的定義,預(yù)留主機(jī)CPU和內(nèi)存資源,確保虛擬機(jī)運(yùn)行性能。
在虛擬機(jī)運(yùn)行過(guò)程中,引入了動(dòng)態(tài)的資源分配預(yù)測(cè)和動(dòng)態(tài)調(diào)整兩種技術(shù)。云平臺(tái)通過(guò)申請(qǐng)資源與實(shí)際使用率,獲取實(shí)際的資源占用情況;再通過(guò)比較hypervisor主機(jī)當(dāng)前的資源占用情況和上一個(gè)周期的資源占用情況,經(jīng)過(guò)多點(diǎn)計(jì)算,獲取hypervisor資源的使用趨勢(shì),實(shí)時(shí)評(píng)估hypervisor承載的虛擬機(jī)業(yè)務(wù)在未來(lái)幾個(gè)周期內(nèi)對(duì)資源的需求趨勢(shì)。通過(guò)預(yù)留參數(shù)控制預(yù)留資源,確保hypervisor本身的性能穩(wěn)定可靠。在動(dòng)態(tài)資源分配預(yù)測(cè)中,如果hypervisor資源占用趨勢(shì)趨于向上 (即業(yè)務(wù)占用資源加大),則預(yù)留參數(shù)值較大,實(shí)時(shí)預(yù)留資源同時(shí)加大,保證業(yè)務(wù)新資源的申請(qǐng)可以即刻獲得;如果資源占用趨勢(shì)趨于向下(即業(yè)務(wù)釋放資源),則預(yù)留參數(shù)值較小,實(shí)時(shí)預(yù)留資源減少。
2.1.3 調(diào)度流程
步驟1業(yè)務(wù)申請(qǐng)?zhí)摂M機(jī):應(yīng)用業(yè)務(wù)動(dòng)態(tài)申請(qǐng)資源,實(shí)現(xiàn)業(yè)務(wù)直接與平臺(tái)的對(duì)接,簡(jiǎn)化資源申請(qǐng)流程。
步驟2云管理平臺(tái)根據(jù)預(yù)測(cè)算法計(jì)算分配量:通過(guò)應(yīng)用在平臺(tái)上設(shè)置的參數(shù)(業(yè)務(wù)等級(jí)、負(fù)載性能設(shè)定指標(biāo)等),實(shí)現(xiàn)每個(gè)應(yīng)用的資源個(gè)性化管理分配。
步驟3云管理平臺(tái)選擇適當(dāng)?shù)膆ypervisor運(yùn)行業(yè)務(wù)虛擬機(jī):根據(jù)應(yīng)用設(shè)定的資源等級(jí)信息,對(duì)應(yīng)開通相應(yīng)的資源,確保重點(diǎn)應(yīng)用優(yōu)質(zhì)資源保障。
步驟4云管理平臺(tái)在運(yùn)行期監(jiān)測(cè)業(yè)務(wù)虛擬機(jī)資源需求:平臺(tái)根據(jù)應(yīng)用的發(fā)展與負(fù)載性能的變化及時(shí)調(diào)整資源分配策略。
步驟5云管理平臺(tái)動(dòng)態(tài)調(diào)整虛擬機(jī)資源:平臺(tái)根據(jù)調(diào)度策略及時(shí)更新應(yīng)用的資源供給。
圖2 應(yīng)用架構(gòu)
2.2.1 適用場(chǎng)景
客服系統(tǒng)WAP話單處理模塊使用的是Hadoop架構(gòu),有著大數(shù)據(jù)應(yīng)用的顯著特點(diǎn),即數(shù)據(jù)量不斷擴(kuò)大,需要資源的橫向擴(kuò)展能力很強(qiáng),并且可以達(dá)到無(wú)限擴(kuò)展能力。此類大數(shù)據(jù)類型應(yīng)用需要資源的特點(diǎn)是資源在擴(kuò)展后隨時(shí)可加入,資源的使用情況是可預(yù)計(jì)的?;谶@類應(yīng)用的特點(diǎn),給出基于規(guī)劃擴(kuò)容的動(dòng)態(tài)調(diào)度機(jī)制。
2.2.2 調(diào)度方案
引入自動(dòng)伸縮組的概念,將一組相關(guān)業(yè)務(wù)的虛擬機(jī)作為整體來(lái)看待。同時(shí),通過(guò)監(jiān)控和分析它們的性能指標(biāo)以及各業(yè)務(wù)自動(dòng)伸縮組配置的各種策略,實(shí)時(shí)調(diào)整伸縮組內(nèi)的資源數(shù)量,如圖2所示。
在使用橫向擴(kuò)展方式對(duì)應(yīng)用性能進(jìn)行管理時(shí),應(yīng)用在運(yùn)行過(guò)程中主要有兩種策略:擴(kuò)容 (scale-out)和收縮(scale-in)。
在配置擴(kuò)容策略時(shí),用戶可以指定擴(kuò)容的條件(規(guī)則引擎),配置擴(kuò)容時(shí)進(jìn)行VM創(chuàng)建或者進(jìn)行物理機(jī)部署。同時(shí),如果伸縮組配置了負(fù)載均衡器,還需要指定負(fù)載均衡器和配置負(fù)載均衡器的方式。
在配置收縮策略時(shí),用戶需要指定收縮時(shí)選取被回收的節(jié)點(diǎn)的算法,如最新優(yōu)先算法、最老優(yōu)先算法或者隨機(jī)算法。在回收了節(jié)點(diǎn)后,如果伸縮組配置了負(fù)載均衡器,也需要指定更新負(fù)載均衡的方式。
針對(duì)不同的業(yè)務(wù)類型,Web類或者Hadoop分布式類需要在配置時(shí)選擇不同的策略和后續(xù)處理方式。伸縮策略是一種插件機(jī)制,在有新類型的業(yè)務(wù)需要添加時(shí),可以進(jìn)行擴(kuò)充。
2.2.3 調(diào)度流程
步驟1納管Hadoop集群:通過(guò)應(yīng)用監(jiān)控采集Hadoop的運(yùn)行數(shù)據(jù)。
步驟2以組為單位對(duì)Hadoop集群的整體運(yùn)行情況進(jìn)行分析和評(píng)估:如果Hadoop需要進(jìn)行擴(kuò)容,則利用物理機(jī)自動(dòng)部署功能,從物理機(jī)資源池中分配合適的物理機(jī)資源,同時(shí)自動(dòng)完成操作系統(tǒng)安裝和網(wǎng)絡(luò)配置等工作,并自動(dòng)在新的物理機(jī)上完成Hadoop的各種業(yè)務(wù)服務(wù)的部署安裝,使得Hadoop集群的資源實(shí)現(xiàn)自動(dòng)擴(kuò)展的功能。
2.3.1 適用場(chǎng)景
有些業(yè)務(wù)系統(tǒng)具有周期性的特點(diǎn),而且隨著業(yè)務(wù)的增長(zhǎng),會(huì)不定時(shí)地增加資源需求。這種業(yè)務(wù)不適用于負(fù)載性能調(diào)度和規(guī)劃擴(kuò)容調(diào)度方案,可通過(guò)API的調(diào)用和相應(yīng)信息反饋的判定來(lái)解決這種業(yè)務(wù)系統(tǒng)的資源需求。
2.3.2 調(diào)度方案
業(yè)務(wù)系統(tǒng)根據(jù)自身相關(guān)任務(wù)的特點(diǎn)建立任務(wù)模型和長(zhǎng)期有效的學(xué)習(xí)機(jī)制,通過(guò)對(duì)自身業(yè)務(wù)的不斷學(xué)習(xí),收集每個(gè)任務(wù)資源消耗,從而不斷地更新任務(wù)模型,使得每個(gè)任務(wù)模型能持續(xù)優(yōu)化,為每個(gè)任務(wù)建立一個(gè)比較準(zhǔn)確的資源消耗值。
通過(guò)對(duì)自身任務(wù)策略的分析和每個(gè)任務(wù)的資源消耗,對(duì)未來(lái)一段時(shí)間內(nèi)的資源消耗進(jìn)行預(yù)估,將預(yù)估值與系統(tǒng)的當(dāng)前資源量進(jìn)行對(duì)比,當(dāng)預(yù)估值大于系統(tǒng)當(dāng)前資源量時(shí),將差值換算成虛擬機(jī)的數(shù)量,調(diào)用云平臺(tái)的資源申請(qǐng)API,實(shí)現(xiàn)資源的自動(dòng)申請(qǐng)。如果預(yù)估值小于系統(tǒng)當(dāng)前資源量時(shí),將差值換算成虛擬機(jī)的數(shù)量,調(diào)用云平臺(tái)的資源釋放API,實(shí)現(xiàn)資源的自動(dòng)釋放。系統(tǒng)架構(gòu)如圖3所示。
各模塊功能如下。
任務(wù)管理:主要包括任務(wù)策略管理、任務(wù)生成、任務(wù)分發(fā)等功能。該模塊根據(jù)任務(wù)策略生成相應(yīng)的處理任務(wù),并按照動(dòng)態(tài)負(fù)載均衡策略把任務(wù)分發(fā)到虛擬機(jī)的任務(wù)執(zhí)行(業(yè)務(wù)主機(jī))節(jié)點(diǎn);同時(shí),對(duì)處理任務(wù)的執(zhí)行狀態(tài)進(jìn)行監(jiān)控。
模型管理:將各類處理任務(wù)抽象出任務(wù)特征值,對(duì)其進(jìn)行建模,將任務(wù)學(xué)習(xí)管理模塊監(jiān)測(cè)、學(xué)習(xí)到的整個(gè)任務(wù)運(yùn)行周期內(nèi)資源消耗信息更新到任務(wù)模型管理的數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)對(duì)任務(wù)模型的管理,并支持向外擴(kuò)展。
任務(wù)學(xué)習(xí):根據(jù)任務(wù)調(diào)度管理模塊中的任務(wù)策略以及任務(wù)基本信息,生成學(xué)習(xí)任務(wù),下發(fā)至學(xué)習(xí)機(jī),學(xué)習(xí)機(jī)針對(duì)學(xué)習(xí)任務(wù)定期上報(bào)采樣數(shù)據(jù),采樣數(shù)據(jù)提供給任務(wù)模型管理模塊進(jìn)行任務(wù)模型的更新修正。
資源監(jiān)控:主要實(shí)現(xiàn)虛擬機(jī)資源負(fù)載的實(shí)時(shí)監(jiān)控功能、任務(wù)實(shí)時(shí)采樣數(shù)據(jù)的收集。
資源決策:計(jì)算當(dāng)前各虛擬機(jī)的運(yùn)行負(fù)載、當(dāng)前運(yùn)行任務(wù)、剩余任務(wù)、預(yù)執(zhí)行任務(wù)、任務(wù)模型等信息,通過(guò)綜合評(píng)估判決是否進(jìn)行VM資源的申請(qǐng)或釋放。在實(shí)時(shí)監(jiān)測(cè)各任務(wù)執(zhí)行節(jié)點(diǎn)的基礎(chǔ)上,預(yù)測(cè)未來(lái)一段時(shí)間(時(shí)間可進(jìn)行配置)的系統(tǒng)運(yùn)行狀況,實(shí)現(xiàn)虛擬機(jī)提前申請(qǐng)以及延后釋放的功能。
圖3 系統(tǒng)架構(gòu)
資源調(diào)度:根據(jù)資源決策模塊的分析結(jié)果,調(diào)用云平臺(tái)提供的API,實(shí)現(xiàn)虛擬機(jī)的申請(qǐng)和銷毀,同時(shí),將虛擬機(jī)的信息發(fā)送給任務(wù)調(diào)度管理模塊,實(shí)現(xiàn)處理任務(wù)的動(dòng)態(tài)調(diào)度,保證在申請(qǐng)和銷毀虛擬機(jī)上的任務(wù)動(dòng)態(tài)調(diào)整。
2.3.3 調(diào)度流程
步驟1任務(wù)生成:任務(wù)調(diào)度管理模塊根據(jù)任務(wù)策略定時(shí)啟動(dòng)處理任務(wù),并按照動(dòng)態(tài)負(fù)載均衡策略把任務(wù)分發(fā)到云平臺(tái)虛擬機(jī)的任務(wù)執(zhí)行節(jié)點(diǎn);對(duì)任務(wù)的執(zhí)行狀態(tài)進(jìn)行監(jiān)控,并通知任務(wù)學(xué)習(xí)模塊進(jìn)行任務(wù)的資源消耗監(jiān)測(cè)。
步驟2任務(wù)建模:任務(wù)模型管理模塊在每個(gè)應(yīng)用任務(wù)第一次運(yùn)行時(shí),根據(jù)任務(wù)的特征建立任務(wù)模型,包括:任務(wù)標(biāo)識(shí)、任務(wù)屬性、采集時(shí)間點(diǎn)、資源CPU消耗、內(nèi)存消耗、硬盤消耗等,并將相關(guān)信息通過(guò)數(shù)據(jù)表的形式保存到任務(wù)模型數(shù)據(jù)庫(kù)中。首次執(zhí)行的任務(wù)建立的新模型只有任務(wù)的相關(guān)信息,無(wú)資源消耗信息,資源消耗信息在任務(wù)學(xué)習(xí)模塊中逐步采集更新。
步驟3任務(wù)學(xué)習(xí):任務(wù)學(xué)習(xí)管理模塊收到任務(wù)調(diào)度管理模塊發(fā)送的任務(wù)啟動(dòng)消息后,根據(jù)任務(wù)標(biāo)識(shí),對(duì)在任務(wù)執(zhí)行節(jié)點(diǎn)上的任務(wù)每5 s(可配置調(diào)整)進(jìn)行一次資源消耗監(jiān)測(cè),并記錄監(jiān)測(cè)到的數(shù)據(jù),直至任務(wù)完成。
步驟4任務(wù)模型修正:任務(wù)學(xué)習(xí)管理模塊記錄每次監(jiān)測(cè)到的資源消耗數(shù)據(jù),計(jì)算出每次任務(wù)執(zhí)行的時(shí)長(zhǎng)、平均及最大CPU消耗、平均及最大內(nèi)存消耗、硬盤消耗。通過(guò)任務(wù)模型修正的算法,通過(guò)計(jì)算可得到一個(gè)相對(duì)平穩(wěn)正常的資源消耗預(yù)測(cè)數(shù)據(jù),用于該任務(wù)的資源消耗估計(jì),如果波動(dòng)超過(guò)10%(門限可配置調(diào)整),則作為學(xué)習(xí)異常的錯(cuò)誤拋出,進(jìn)行人工干預(yù)。
步驟5資源分析決策:資源決策模塊在任務(wù)到來(lái)時(shí),決策模塊根據(jù)任務(wù)模型管理模塊中的任務(wù)資源二維表,按照任務(wù)資源消耗算法,得到任務(wù)資源消耗,將該任務(wù)資源消耗的數(shù)據(jù)預(yù)測(cè)和現(xiàn)存的資源進(jìn)行對(duì)比,得到是否需要申請(qǐng)或釋放的結(jié)果。資源占用指標(biāo)暫定為CPU使用率、內(nèi)存使用率、磁盤占用率,可后續(xù)進(jìn)行擴(kuò)展。
虛擬機(jī)資源申請(qǐng):未來(lái)每5 min的資源占用(連續(xù)N個(gè)5 min周期)均大于系統(tǒng)總資源(監(jiān)控模塊獲取當(dāng)前系統(tǒng)占用資源和空閑資源)時(shí),則需要進(jìn)行虛擬機(jī)的申請(qǐng),超過(guò)當(dāng)前系統(tǒng)資源的部分最終換算成需要申請(qǐng)的虛擬機(jī)臺(tái)數(shù)。
虛擬機(jī)資源釋放:將1個(gè)大周期內(nèi)(1 h)未來(lái)每5 min的峰值資源占用和系統(tǒng)總資源進(jìn)行對(duì)比,如峰值資源按照任務(wù)資源消耗算法換算的虛擬機(jī)數(shù)量大于現(xiàn)有的虛擬機(jī)臺(tái)數(shù),則釋放虛擬機(jī)。為了規(guī)避虛擬機(jī)釋放過(guò)多導(dǎo)致的應(yīng)用問(wèn)題,系統(tǒng)設(shè)置一個(gè)虛擬機(jī)釋放的門限N,設(shè)定1 h內(nèi)最多減少N臺(tái)虛擬機(jī)(N可根據(jù)應(yīng)用特點(diǎn)來(lái)動(dòng)態(tài)設(shè)定)。
步驟6資源動(dòng)態(tài)調(diào)度:根據(jù)資源決策模塊判斷的申請(qǐng)/釋放結(jié)果調(diào)用云平臺(tái)的API,實(shí)現(xiàn)虛擬機(jī)的申請(qǐng)和釋放,同時(shí),調(diào)用任務(wù)調(diào)度管理模塊的消息,實(shí)現(xiàn)對(duì)申請(qǐng)/釋放虛擬機(jī)的應(yīng)用任務(wù)的動(dòng)態(tài)分發(fā)調(diào)度,各應(yīng)用服務(wù)的啟動(dòng)事先部署在云平臺(tái)模板中,在申請(qǐng)?zhí)摂M機(jī)時(shí),將任務(wù)需要的虛擬機(jī)模板發(fā)送到云平臺(tái)上,這樣,在云平臺(tái)接收到虛擬機(jī)申請(qǐng)后,會(huì)根據(jù)模板部署虛擬機(jī),虛擬機(jī)使用模板附帶的自動(dòng)腳本來(lái)啟動(dòng)應(yīng)用服務(wù)。
2.4.1 適用場(chǎng)景
有些業(yè)務(wù)有顯著的時(shí)間特點(diǎn),在不同的時(shí)間段有不同的資源需求,如網(wǎng)管網(wǎng)絡(luò)支撐客服Web業(yè)務(wù)和桌面云業(yè)務(wù),均在工作時(shí)間高發(fā)使用,而在晚上使用量會(huì)驟然下降。這類業(yè)務(wù)應(yīng)用基于時(shí)間特點(diǎn)呈現(xiàn)的波峰波谷資源使用特點(diǎn),需要使用時(shí)分復(fù)用的算法,將不同時(shí)間段內(nèi)空閑出來(lái)的資源復(fù)用起來(lái)。
2.4.2 調(diào)度方案
通過(guò)彈性伸縮組定義時(shí)間策略的方式進(jìn)行時(shí)間維度的調(diào)度。在不同的時(shí)間段內(nèi),可以定義啟動(dòng)、停止、創(chuàng)建、刪除虛擬機(jī)的策略,使得不同應(yīng)用在不同時(shí)段使用相同的資源,達(dá)到資源高效利用的目的,如圖4所示。
自動(dòng)伸縮組是將邏輯上對(duì)等的一組機(jī)器資源組織成一個(gè)邏輯上的“大機(jī)器”。通過(guò)對(duì)資源、伸縮策略、負(fù)載評(píng)估算法、負(fù)載均衡等的配置和管理,提供橫向的擴(kuò)展或者收縮能力。
·當(dāng)業(yè)務(wù)配置的時(shí)間點(diǎn)到達(dá)時(shí),則由時(shí)間策略管理模塊發(fā)出策略觸發(fā)事件。
·伸縮組根據(jù)配置的方案,進(jìn)行擴(kuò)容。
·伸縮組同時(shí)根據(jù)相關(guān)業(yè)務(wù)的時(shí)間重疊性,回收重疊業(yè)務(wù)已經(jīng)分配的資源(如果業(yè)務(wù)的資源分配在擴(kuò)容時(shí)間段內(nèi))。
·當(dāng)業(yè)務(wù)配置的回收策略時(shí)間點(diǎn)到達(dá)時(shí),時(shí)間策略管理模塊發(fā)出策略觸發(fā)事件。
·伸縮組根據(jù)配置的方案,進(jìn)行資源回收。
圖4 基于任務(wù)時(shí)間的資源調(diào)度
·伸縮組同時(shí)根據(jù)業(yè)務(wù)的時(shí)間重疊性,擴(kuò)容重疊業(yè)務(wù)的資源分配(如果業(yè)務(wù)在擴(kuò)容時(shí)間段內(nèi))。
2.4.3 調(diào)度流程
步驟1自動(dòng)伸縮組配置時(shí)間策略。
步驟2應(yīng)用A的時(shí)間策略觸發(fā):應(yīng)用A根據(jù)業(yè)務(wù)需求,擴(kuò)張資源,占據(jù)資源,提供服務(wù)。
步驟3應(yīng)用A結(jié)束時(shí)間策略觸發(fā):應(yīng)用A根據(jù)業(yè)務(wù)需求,減少資源占用。
步驟4應(yīng)用B的時(shí)間策略觸發(fā):計(jì)算應(yīng)用A資源池資源空閑量,創(chuàng)建應(yīng)用B業(yè)務(wù)VM,應(yīng)用B占據(jù)資源運(yùn)行。
步驟5應(yīng)用B結(jié)束時(shí)間策略觸發(fā):應(yīng)用B結(jié)束業(yè)務(wù)占用的VM,釋放占用的資源。
實(shí)施基于負(fù)載性能調(diào)度后,Web集群由從物理機(jī)遷移至虛擬機(jī)環(huán)境。Web集群使用了基于負(fù)載性能調(diào)度對(duì)Web集群服器CPU、內(nèi)存、每秒服務(wù)請(qǐng)求數(shù)量進(jìn)行監(jiān)控,當(dāng)這些指標(biāo)達(dá)到閾值上、下限時(shí),自動(dòng)調(diào)整Web集群節(jié)點(diǎn)數(shù)量。表1為實(shí)施前、實(shí)施后計(jì)算資源對(duì)比情況。
表1 方案實(shí)施前后對(duì)比
基于負(fù)載性能的彈性調(diào)度,只需要在被管理集群上部署監(jiān)控模塊,定時(shí)向云平臺(tái)上報(bào)性能數(shù)據(jù),由云平臺(tái)根據(jù)彈性調(diào)度策略分析引擎進(jìn)行評(píng)估,并進(jìn)一步?jīng)Q定開通或回收虛擬機(jī),完成彈性調(diào)度。應(yīng)用系統(tǒng)只需要提供性能采集接口,無(wú)須增加應(yīng)用系統(tǒng)額外的開發(fā)工作,適合在私有云大部分應(yīng)用系統(tǒng)上進(jìn)行推廣。
統(tǒng)一采集是網(wǎng)管系統(tǒng)的核心業(yè)務(wù),因此,每個(gè)虛擬機(jī)CPU、內(nèi)存分配方式為100%預(yù)留,以保證有足夠的計(jì)算資源,承載突發(fā)業(yè)務(wù)流量。
實(shí)施基于業(yè)務(wù)申請(qǐng)調(diào)度時(shí),創(chuàng)建了一組基于彈性調(diào)度的虛擬機(jī),與原有統(tǒng)一采集集群并行運(yùn)行。其資源動(dòng)態(tài)調(diào)配比較復(fù)雜,需考慮到采集任務(wù)的隊(duì)列長(zhǎng)度、傳輸時(shí)延等業(yè)務(wù)運(yùn)行指標(biāo)。表2為實(shí)施前、實(shí)施后計(jì)算資源對(duì)比情況。
表2 方案實(shí)施前后對(duì)比
當(dāng)應(yīng)用系統(tǒng)計(jì)算資源調(diào)配不僅依賴于系統(tǒng)性能指標(biāo),而且依賴于業(yè)務(wù)運(yùn)行指標(biāo),彈性調(diào)度算法相對(duì)復(fù)雜時(shí),更適合使用基于業(yè)務(wù)申請(qǐng)的彈性調(diào)度。如果應(yīng)用系統(tǒng)的業(yè)務(wù)運(yùn)行指標(biāo)可以方便地進(jìn)行量化,可以將應(yīng)用系統(tǒng)的業(yè)務(wù)運(yùn)行KPI擴(kuò)展至私有云平臺(tái),由私有云平臺(tái)實(shí)現(xiàn)基于負(fù)載性能的彈性調(diào)度,以減少應(yīng)用系統(tǒng)的開發(fā)、部署工作量。
在一般情況下,Hadoop集群在運(yùn)行一段時(shí)間之后,有資源擴(kuò)充的需求,沒(méi)有資源回收的需求。但在擴(kuò)充Hadoop集群時(shí),需要準(zhǔn)備IP網(wǎng)絡(luò)、存儲(chǔ)網(wǎng)絡(luò)環(huán)境,手工安裝Hadoop節(jié)點(diǎn),再將計(jì)算節(jié)點(diǎn)擴(kuò)充至Hadoop集群,工作量大,操作復(fù)雜。
基于規(guī)劃擴(kuò)容的資源調(diào)度解決了這個(gè)問(wèn)題,在Hadoop集群運(yùn)行過(guò)程中,通過(guò)采集Hadoop運(yùn)行性能信息,定期制作Hadoop集群節(jié)點(diǎn)需求趨勢(shì)評(píng)估報(bào)告,由基礎(chǔ)架構(gòu)管理員根據(jù)評(píng)估報(bào)告制定擴(kuò)容規(guī)劃,擴(kuò)充物理機(jī)計(jì)算節(jié)點(diǎn)至Hadoop集群,節(jié)省了大量的手工操作。
在調(diào)度方案實(shí)施之前,桌面云系統(tǒng)使用詳情見表3。
表3 方案實(shí)施前運(yùn)行情況
采用網(wǎng)管應(yīng)用、桌面云聯(lián)動(dòng)方式:在桌面云系統(tǒng)業(yè)務(wù)閑時(shí),運(yùn)行網(wǎng)管MR補(bǔ)采、報(bào)表匯總等功能實(shí)時(shí)性要求不是非常高的應(yīng)用。為保證二者之間的物理隔離,在同一個(gè)hypervisor上,網(wǎng)管業(yè)務(wù)、桌面云業(yè)務(wù)使用不同的物理網(wǎng)卡、FC卡連接各自的IP網(wǎng)絡(luò)、存儲(chǔ)網(wǎng)絡(luò),并在夜間采取如下措施盤活計(jì)算資源:將空閑桌面休眠或關(guān)閉,釋放CPU、內(nèi)存計(jì)算資源;集中遷移非空閑桌面應(yīng)用至指定hypervisor,釋放其他hypervisor CPU、內(nèi)存計(jì)算資源;在業(yè)務(wù)人員上班前,恢復(fù)已休眠桌面或啟動(dòng)空閑桌面。表4為桌面云系統(tǒng)實(shí)施定時(shí)資源釋放與回收之后的資源使用率性能。
表4 方案實(shí)施后運(yùn)行情況
除桌面云系統(tǒng)外,基于任務(wù)時(shí)間調(diào)度可進(jìn)一步推廣至具有明顯時(shí)間特性的資源池/應(yīng)用系統(tǒng),如業(yè)務(wù)支撐系統(tǒng)的CRM、BOSS等應(yīng)用系統(tǒng),主要集中在白天使用計(jì)算資源,而經(jīng)營(yíng)分析系統(tǒng)集中在夜間使用資源。這一類資源池/應(yīng)用系統(tǒng)都適合采用基于任務(wù)時(shí)間的彈性調(diào)度,完成在時(shí)間上互補(bǔ)的應(yīng)用系統(tǒng)相互填峰削谷,使計(jì)算資源錯(cuò)峰使用。
如何實(shí)現(xiàn)云資源使用的按需分配和動(dòng)態(tài)管理是業(yè)務(wù)支撐系統(tǒng)云化中面臨的重要問(wèn)題,本文基于負(fù)載性能、規(guī)劃擴(kuò)容、業(yè)務(wù)申請(qǐng)及任務(wù)時(shí)間4個(gè)場(chǎng)景對(duì)資源動(dòng)態(tài)調(diào)度方案進(jìn)行了探索與實(shí)踐,為今后業(yè)務(wù)支撐系統(tǒng)云化的資源調(diào)度提供了可借鑒的經(jīng)驗(yàn)和思路。
[1]宋維佳,馬皓,肖臻,等.虛擬化數(shù)據(jù)中心資源調(diào)度研究[J].廣西大學(xué)學(xué)報(bào),2011(S1):329-333.SONG W J,MA H,XIAO Z,et al.A survey of resource scheduling for virtualized data center[J].Journal of Guangxi University,2011(S1):329-333.
[2]陳睦,黃黎明,李先鋒.云計(jì)算中虛擬機(jī)磁盤遷移時(shí)機(jī)優(yōu)化策略[J].計(jì)算機(jī)工程與設(shè)計(jì),2014(2):525-530.CHEN M,HUANG L M,LI X F.Disk migration timing optimization mechanism in cloud computing[J].Computer Engineering and Design,2014(2):525-530.
[3]郭濤,劉菲軍,杜垚,等.云計(jì)算環(huán)境下虛擬機(jī)部署策略的優(yōu)化[J].計(jì)算機(jī)應(yīng)用研究,2012(9):3425-3431.GUO T,LIU F J,DU Y,et al.Virtual machine deployment optimization in cloud[J].Application Research of Computers,2012(9):3425-3431.