本發(fā)明涉及云計(jì)算服務(wù)領(lǐng)域,尤其涉及一種基于流量親和性的OpenStack云平臺(tái)資源動(dòng)態(tài)調(diào)度系統(tǒng)和方法。
背景技術(shù):
云計(jì)算技術(shù)的產(chǎn)生與發(fā)展,改變?nèi)藗儗?duì)計(jì)算資源的使用方式。隨著云計(jì)算技術(shù)的日益發(fā)展,各種云計(jì)算平臺(tái)應(yīng)運(yùn)而生,云服務(wù)領(lǐng)域呈現(xiàn)百花齊放的形式。而OpenStack作為一種云計(jì)算平臺(tái),為云計(jì)算基礎(chǔ)設(shè)施服務(wù)提供解決方案,其以全開源、易擴(kuò)展的特點(diǎn),獲得工業(yè)界越來越多的關(guān)注。
云計(jì)算平臺(tái)主要功能是實(shí)現(xiàn)資源的管理和按需分配。在主流商業(yè)云管理平臺(tái)中均存在資源調(diào)度進(jìn)程,以實(shí)現(xiàn)對(duì)平臺(tái)物理資源的動(dòng)態(tài)調(diào)度管理?,F(xiàn)有OpenStack云計(jì)算管理平臺(tái)中僅有簡(jiǎn)單的虛擬機(jī)資源調(diào)度進(jìn)程N(yùn)ova-Scheduler,實(shí)現(xiàn)過濾稱重的初始放置算法,通過對(duì)物理機(jī)負(fù)載參數(shù)進(jìn)行量化比較,選擇得分最高的物理機(jī)進(jìn)行部署。
但是現(xiàn)在客戶端的業(yè)務(wù)越來越復(fù)雜,部分業(yè)務(wù)會(huì)考慮到業(yè)務(wù)虛擬機(jī)之間的流量親和性關(guān)系,以使得虛擬機(jī)之間的時(shí)延最小化,這種簡(jiǎn)單的選擇方法就無法滿足需求。
同時(shí)現(xiàn)有OpenStack云計(jì)算平臺(tái)中沒有實(shí)現(xiàn)資源負(fù)載均衡的模塊,對(duì)于物理機(jī)負(fù)載過高(熱點(diǎn))和物理機(jī)負(fù)載過低(冷點(diǎn))等情況無應(yīng)對(duì)方法,缺乏對(duì)資源利用率和能耗的有效管理。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種基于流量親和性的OpenStack云平臺(tái)資源動(dòng)態(tài)調(diào)度系統(tǒng)和方法,通過定義虛擬機(jī)之間的流量親和性,減少業(yè)務(wù)虛擬機(jī)之間的時(shí)延,提升業(yè)務(wù)的性能。
本發(fā)明提供了一種基于流量親和性的OpenStack云平臺(tái)資源動(dòng)態(tài)調(diào)度系統(tǒng),包括OpenStack云平臺(tái),所述的OpenStack云平臺(tái)執(zhí)行資源調(diào)度進(jìn)程,還包括:
系統(tǒng)負(fù)載監(jiān)控模塊,用于監(jiān)控和收集OpenStack云平臺(tái)集群中物理主機(jī)的負(fù)載信息,將負(fù)載信息提供給資源調(diào)度模塊,定時(shí)地根據(jù)集群負(fù)載信息,計(jì)算判斷當(dāng)前狀態(tài)下集群中是否存在冷點(diǎn)和熱點(diǎn),如果存在則向資源調(diào)度進(jìn)程發(fā)出冷點(diǎn)整合或熱點(diǎn)消除請(qǐng)求;
SDN監(jiān)控模塊,用于監(jiān)控和收集OpenStack云平臺(tái)集群中網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息、物理主機(jī)之間的流量信息和虛擬機(jī)實(shí)例之間的流量信息,將網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息和流量信息提供給資源調(diào)度模塊;
資源調(diào)度模塊,處理來自O(shè)penStack云平臺(tái)的客戶端的虛擬機(jī)實(shí)例初始放置請(qǐng)求和來自系統(tǒng)負(fù)載監(jiān)控模塊的冷點(diǎn)整合請(qǐng)求和熱點(diǎn)消除請(qǐng)求。
調(diào)度請(qǐng)求總共分為3類:初始放置請(qǐng)求、熱點(diǎn)消除請(qǐng)求和冷點(diǎn)整合請(qǐng)求。其中初始放置請(qǐng)求仍由原有OpenStack云平臺(tái)的客戶端發(fā)出,而熱點(diǎn)消除請(qǐng)求和冷點(diǎn)整合請(qǐng)求則由系統(tǒng)負(fù)載監(jiān)控模塊發(fā)出。系統(tǒng)負(fù)載監(jiān)控模塊定時(shí)地計(jì)算集群中節(jié)點(diǎn)的負(fù)載值,當(dāng)發(fā)現(xiàn)集群中存在熱點(diǎn)或者冷點(diǎn)時(shí),向虛擬機(jī)調(diào)度進(jìn)程發(fā)出熱點(diǎn)消除請(qǐng)求或者冷點(diǎn)整合請(qǐng)求。
本發(fā)明的資源調(diào)度模塊整合了原有OpenStack云平臺(tái)的虛擬機(jī)調(diào)度進(jìn)程(Nova-Scheduler),即將該進(jìn)程轉(zhuǎn)變?yōu)橘Y源調(diào)度請(qǐng)求的接收端,當(dāng)虛擬機(jī)調(diào)度進(jìn)程接受到調(diào)度請(qǐng)求時(shí),根據(jù)調(diào)度請(qǐng)求類型來調(diào)用資源調(diào)度模塊處理請(qǐng)求。資源調(diào)度模塊在處理調(diào)度請(qǐng)求時(shí),會(huì)向系統(tǒng)負(fù)載監(jiān)控模塊發(fā)出查詢負(fù)載信息請(qǐng)求,向SDN監(jiān)控模塊發(fā)出查詢網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和實(shí)時(shí)流量信息請(qǐng)求。在接收到相應(yīng)信息后,構(gòu)造流量模型,調(diào)用調(diào)度決策器開始執(zhí)行相應(yīng)調(diào)度算法,得出調(diào)度結(jié)果。最后資源調(diào)度模塊將結(jié)果返回到虛擬機(jī)調(diào)度進(jìn)程。
系統(tǒng)負(fù)載監(jiān)控模塊負(fù)責(zé)監(jiān)控集群負(fù)載,當(dāng)發(fā)現(xiàn)冷點(diǎn)和熱點(diǎn)時(shí)發(fā)出調(diào)度請(qǐng)求,并向資源調(diào)度模塊提供負(fù)載查詢功能。
SDN監(jiān)控模塊負(fù)責(zé)監(jiān)控集群網(wǎng)絡(luò),向資源調(diào)度模塊提供網(wǎng)絡(luò)拓?fù)浜蛯?shí)時(shí)流量查詢功能。
作為優(yōu)選,所述的資源調(diào)度模塊包括前端預(yù)處理部分和后端算法處理部分,
前端預(yù)處理部分解析請(qǐng)求類別并從系統(tǒng)負(fù)載監(jiān)控模塊和SDN監(jiān)控模塊獲得算法所需的信息;
后端算法處理部分根據(jù)請(qǐng)求類別調(diào)用相應(yīng)的算法進(jìn)行處理得到結(jié)果。
作為優(yōu)選,后端算法處理部分支持適配和擴(kuò)展。
基于所述的調(diào)度系統(tǒng),針對(duì)OpenStack云平臺(tái)客戶端發(fā)起的創(chuàng)建虛擬機(jī)的請(qǐng)求,為了滿足用戶設(shè)定的親和性關(guān)系和盡可能減少虛擬機(jī)間的時(shí)延,本發(fā)明還提供了一種基于流量親和性的OpenStack云平臺(tái)資源初始放置方法,包括:資源調(diào)度進(jìn)程接收到客戶端發(fā)送的建立虛擬機(jī)實(shí)例的請(qǐng)求信息后,根據(jù)從系統(tǒng)負(fù)載監(jiān)控模塊獲得的集群物理主機(jī)負(fù)載、物理機(jī)框組劃分和從SDN監(jiān)控模塊獲得的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息和節(jié)點(diǎn)間流量信息構(gòu)建流量權(quán)重圖作為初始放置算法的輸入;根據(jù)流量權(quán)重圖中的流量關(guān)系將虛擬機(jī)分組;根據(jù)虛擬機(jī)間的同組親和性關(guān)系,使用最大流最小割算法將虛擬機(jī)組進(jìn)行切割;根據(jù)虛擬機(jī)間的反親和性關(guān)系,找出虛擬機(jī)組中的核心虛擬機(jī);以親和性和流量關(guān)系連接虛擬機(jī)成邊,將虛擬機(jī)組構(gòu)成子圖,對(duì)子圖使用啟發(fā)式搜索,獲得所有虛擬機(jī)組的目標(biāo)物理機(jī),資源調(diào)度進(jìn)程將結(jié)果封裝并發(fā)送到相應(yīng)節(jié)點(diǎn)的部署進(jìn)程(Nova-Compute)。
作為優(yōu)選,建立虛擬機(jī)實(shí)例的請(qǐng)求信息包括用于建立虛擬機(jī)實(shí)例的配額信息、虛擬機(jī)實(shí)例的數(shù)量和虛擬機(jī)實(shí)例之間的流量和親和性關(guān)系。
本發(fā)明中物理機(jī)板指示1個(gè)物理機(jī)節(jié)點(diǎn);物理機(jī)框指示1個(gè)機(jī)架上的物理機(jī)群,連接到機(jī)架上的同一交換機(jī),相互之間的時(shí)延小;物理機(jī)組指示人為劃分的含有相同物理特征或功能的物理機(jī)群。
物理主機(jī)負(fù)載是以物理機(jī)為單位,監(jiān)控物理機(jī)節(jié)點(diǎn)上的CPU、內(nèi)存、磁盤和網(wǎng)絡(luò)帶寬的利用率,將物理機(jī)資源量化,從多個(gè)資源維度來描述節(jié)點(diǎn)的資源利用率,以此來定義物理節(jié)點(diǎn)負(fù)載,用于后續(xù)算法中的物理機(jī)狀態(tài)判定。
作為優(yōu)選,本發(fā)明中,物理主機(jī)負(fù)載的計(jì)算公式為:
式中,Loadpm為物理主機(jī)負(fù)載;vcpuused、memused、diskused和netused分別為該節(jié)點(diǎn)此時(shí)已經(jīng)使用的虛擬核、內(nèi)存、磁盤和網(wǎng)絡(luò)帶寬;vcputotal、memtotal、disktotal和nettotal分別為該節(jié)點(diǎn)總的可用虛擬核、內(nèi)存、磁盤和網(wǎng)絡(luò)帶寬;k1、k2、k3和k4為該節(jié)點(diǎn)各種資源的重要率;ratio1、ratio2、ratio3和ratio4為該節(jié)點(diǎn)各種資源允許的過載比率。
k1、k2、k3和k4表示不同物理資源的重要性,可調(diào)控應(yīng)對(duì)不同應(yīng)用場(chǎng)景;ratio1、ratio2、ratio3和ratio4的引入可以提高資源利用率。
本發(fā)明的初始放置方法中初始放置請(qǐng)求由OpenStack云平臺(tái)的客戶端發(fā)出,資源調(diào)度進(jìn)程接收到初始放置請(qǐng)求后根據(jù)集群的網(wǎng)絡(luò)拓?fù)洹⑽锢砉?jié)點(diǎn)流量和虛擬機(jī)之間的流量親和性關(guān)系,來決策虛擬機(jī)實(shí)例初始放置的目標(biāo)物理機(jī)節(jié)點(diǎn)。針對(duì)客戶端發(fā)起的創(chuàng)建虛擬機(jī)的請(qǐng)求,初始放置方法滿足了用戶設(shè)定的親和性關(guān)系(高優(yōu)先級(jí))和盡可能減少虛擬機(jī)間的時(shí)延的要求。
基于所述的調(diào)度系統(tǒng),針對(duì)系統(tǒng)負(fù)載監(jiān)控模塊發(fā)起的負(fù)載均衡請(qǐng)求,本發(fā)明還提供了一種基于流量親和性的OpenStack云平臺(tái)資源冷點(diǎn)整合或熱點(diǎn)消除方法,包括:資源調(diào)度進(jìn)程接收到系統(tǒng)負(fù)載監(jiān)控模塊發(fā)送的冷點(diǎn)整合或熱點(diǎn)消除請(qǐng)求信息后,根據(jù)從系統(tǒng)負(fù)載監(jiān)控模塊獲得的集群物理主機(jī)負(fù)載、物理機(jī)框組劃分和從SDN監(jiān)控模塊獲得的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息和節(jié)點(diǎn)間流量信息構(gòu)建流量權(quán)重圖作為冷點(diǎn)整合或熱點(diǎn)消除算法的輸入;結(jié)合原有的虛擬機(jī)流量和親和性關(guān)系,在滿足親和性的關(guān)系下將冷點(diǎn)主機(jī)上的虛擬機(jī)實(shí)例全部遷移到其它物理機(jī)上,完成遷移后關(guān)閉冷點(diǎn)主機(jī),將熱點(diǎn)主機(jī)上的虛擬機(jī)實(shí)例部分遷移使得熱點(diǎn)主機(jī)達(dá)到溫點(diǎn)狀態(tài)。
本發(fā)明中冷點(diǎn)、熱點(diǎn)和溫點(diǎn)用于衡量網(wǎng)絡(luò)流量或物理板節(jié)點(diǎn)負(fù)載利用率值所處的狀態(tài),一般情況下,用戶希望系統(tǒng)網(wǎng)絡(luò)帶寬或負(fù)載利用率能在一個(gè)預(yù)設(shè)的范圍,如(下界,上界),若物理板節(jié)點(diǎn)負(fù)載利用率大于預(yù)設(shè)的上界值,則稱系統(tǒng)存在熱點(diǎn),若小于預(yù)設(shè)的下界值,則稱為冷點(diǎn),處于兩者之間的成為溫和。
作為優(yōu)選,冷點(diǎn)整合或熱點(diǎn)消除請(qǐng)求信息包括冷點(diǎn)或熱點(diǎn)物理主機(jī)負(fù)載以及該物理主機(jī)上的虛擬機(jī)實(shí)例信息。
系統(tǒng)監(jiān)控模塊根據(jù)集群物理主機(jī)負(fù)載和預(yù)先設(shè)置的冷點(diǎn)、熱點(diǎn)標(biāo)準(zhǔn),判斷當(dāng)前狀態(tài)下集群中是否存在冷點(diǎn)或熱點(diǎn),若存在冷點(diǎn)或熱點(diǎn)則向資源調(diào)度進(jìn)程發(fā)送冷點(diǎn)整合或熱點(diǎn)消除。資源調(diào)度進(jìn)程接收到初始放置請(qǐng)求后根據(jù)集群的網(wǎng)絡(luò)拓?fù)?、物理?jié)點(diǎn)流量和該節(jié)點(diǎn)上虛擬機(jī)之間的流量親和性關(guān)系,將處于熱點(diǎn)狀態(tài)的物理機(jī)上的虛擬機(jī)實(shí)例遷移以達(dá)到溫點(diǎn)狀態(tài)實(shí)現(xiàn)負(fù)載均衡,將冷點(diǎn)狀態(tài)物理機(jī)上的虛擬機(jī)實(shí)例遷移以關(guān)閉物理節(jié)點(diǎn)實(shí)現(xiàn)減少能耗。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果為:
(1)本發(fā)明的調(diào)度系統(tǒng)通過系統(tǒng)負(fù)載監(jiān)控模塊獲得云平臺(tái)物理機(jī)集群的負(fù)載信息,通過SDN監(jiān)控模塊獲得云平臺(tái)物理機(jī)集群的網(wǎng)絡(luò)拓?fù)浜凸?jié)點(diǎn)流量信息,通過資源調(diào)度模塊實(shí)現(xiàn)基于流量親和性的資源動(dòng)態(tài)調(diào)度,滿足了特定業(yè)務(wù)的時(shí)延需求,實(shí)現(xiàn)了云平臺(tái)物理機(jī)集群的負(fù)載均衡和減少云平臺(tái)的能耗;
(2)初始放置方法通過定義虛擬機(jī)之間的流量親和性,減少業(yè)務(wù)虛擬機(jī)之間的時(shí)延,提升業(yè)務(wù)的性能;
(3)冷點(diǎn)整合或熱點(diǎn)消除方法可以使云平臺(tái)物理機(jī)集群的負(fù)載達(dá)到均衡和減少云平臺(tái)的能耗,增強(qiáng)了OpenStack云平臺(tái)的資源管理能力,實(shí)現(xiàn)云平臺(tái)的資源動(dòng)態(tài)調(diào)度功能。
附圖說明
圖1為本發(fā)明的調(diào)度系統(tǒng)的架構(gòu)示意圖;
圖2為初始放置方法的具體流程圖;
圖3為冷點(diǎn)整合方法的具體流程圖;
圖4為熱點(diǎn)消除方法的具體流程圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
本發(fā)明中涉及一下幾個(gè)關(guān)鍵概念:
1、物理機(jī)板、框、組:物理機(jī)板指示1個(gè)物理機(jī)節(jié)點(diǎn);物理機(jī)框指示1個(gè)機(jī)架上的物理機(jī)群,連接到機(jī)架上的同一交換機(jī),相互之間的時(shí)延小;物理機(jī)組指示人為劃分的含有相同物理特征或功能的物理機(jī)群;
2、物理機(jī)負(fù)載:以物理機(jī)為單位,監(jiān)控物理機(jī)節(jié)點(diǎn)上的CPU、內(nèi)存、磁盤和網(wǎng)卡帶寬等資源的利用率,將物理機(jī)資源量化,從多個(gè)資源維度來描述節(jié)點(diǎn)的資源利用率,以此來定義物理節(jié)點(diǎn)負(fù)載,用于后續(xù)算法中的物理機(jī)狀態(tài)判定。物理機(jī)負(fù)載計(jì)算公式如下:
式中,Loadpm為物理主機(jī)負(fù)載;vcpuused、memused、diskused和netused分別為該節(jié)點(diǎn)此時(shí)已經(jīng)使用的虛擬核、內(nèi)存、磁盤和網(wǎng)絡(luò)帶寬;vcputotal、memtotal、disktotal和nettotal分別為該節(jié)點(diǎn)總的可用虛擬核、內(nèi)存、磁盤和網(wǎng)絡(luò)帶寬;k1、k2、k3和k4為該節(jié)點(diǎn)各種資源的重要率;ratio1、ratio2、ratio3和ratio4為該節(jié)點(diǎn)各種資源允許的過載比率,即可用資源可以超出實(shí)際所有資源。
k1、k2、k3和k4表示不同物理資源的重要性,可調(diào)控應(yīng)對(duì)不同應(yīng)用場(chǎng)景;ratio1、ratio2、ratio3和ratio4的引入可以提高資源利用率。
3、冷點(diǎn)、熱點(diǎn)和溫點(diǎn):用于衡量網(wǎng)絡(luò)流量或物理板節(jié)點(diǎn)負(fù)載利用率值所處的狀態(tài),一般情況下,用戶希望系統(tǒng)網(wǎng)絡(luò)帶寬或負(fù)載利用率能在一個(gè)預(yù)設(shè)的范圍,如(下界,上界),若物理板節(jié)點(diǎn)負(fù)載利用率大于預(yù)設(shè)的上界值,則稱系統(tǒng)存在熱點(diǎn),若小于預(yù)設(shè)的下界值,則稱為冷點(diǎn),處于兩者之間的成為溫和。
本發(fā)明提供了一種基于流量親和性的OpenStack云平臺(tái)資源動(dòng)態(tài)調(diào)度系統(tǒng),如圖1所示,該系統(tǒng)包括云平臺(tái)的資源調(diào)度進(jìn)程,還包括:
a、系統(tǒng)負(fù)載監(jiān)控模塊:系統(tǒng)負(fù)載監(jiān)控模塊(比如ganglia集群監(jiān)視軟件)用于監(jiān)控和收集云平臺(tái)集群中物理主機(jī)的負(fù)載信息,為資源調(diào)度模塊提供調(diào)度算法所需的主機(jī)負(fù)載信息。同時(shí)定時(shí)地根據(jù)集群負(fù)載信息,計(jì)算判斷當(dāng)前狀態(tài)下集群中是否存在冷點(diǎn)和熱點(diǎn),如果存在則向資源調(diào)度進(jìn)程發(fā)出冷點(diǎn)整合或熱點(diǎn)消除請(qǐng)求,以維持集群的負(fù)載均衡。
b、SDN監(jiān)控模塊:SDN監(jiān)控模塊(比如OpenDaylight SDN軟件)用于監(jiān)控和收集云平臺(tái)集群中網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、物理主機(jī)之間的流量和虛擬機(jī)實(shí)例之間的流量等信息,為資源調(diào)度模塊提供調(diào)度算法所需的網(wǎng)絡(luò)拓?fù)浜土髁啃畔?。同時(shí)可以讓系統(tǒng)管理員管理云平臺(tái)的網(wǎng)絡(luò)資源,根據(jù)業(yè)務(wù)需求改變定制網(wǎng)絡(luò)拓?fù)浜蛶挕?/p>
c、資源調(diào)度模塊:資源調(diào)度模塊處理來自客戶端的虛擬機(jī)實(shí)例初始放置請(qǐng)求和來自系統(tǒng)監(jiān)控模塊的冷點(diǎn)整合請(qǐng)求和熱點(diǎn)消除請(qǐng)求。該模塊與OpenStack原有架構(gòu)兼容,云平臺(tái)通過Nova-Scheduler向資源調(diào)度模塊發(fā)送請(qǐng)求,模塊處理后將結(jié)果發(fā)回。該模塊可以分為前端預(yù)處理和后端算法處理兩部分,前端預(yù)處理解析請(qǐng)求類別并從系統(tǒng)負(fù)載監(jiān)控模塊和SDN監(jiān)控模塊獲得算法所需的信息,后端處理根據(jù)請(qǐng)求類型調(diào)用相應(yīng)的算法進(jìn)行處理得到結(jié)果。其中后端算法處理支持適配,用戶可以為相同類型的請(qǐng)求提供多種處理算法,并支持?jǐn)U展。
調(diào)度請(qǐng)求總共分為3類:初始放置請(qǐng)求、熱點(diǎn)消除請(qǐng)求和冷點(diǎn)整合請(qǐng)求。其中初始放置請(qǐng)求仍由原有OpenStack平臺(tái)的客戶端發(fā)出,而熱點(diǎn)消除請(qǐng)求和冷點(diǎn)整合請(qǐng)求則由負(fù)載監(jiān)控模塊發(fā)出。負(fù)載監(jiān)控模塊定時(shí)地計(jì)算集群中節(jié)點(diǎn)的負(fù)載值,當(dāng)發(fā)現(xiàn)集群中存在熱點(diǎn)或者冷點(diǎn)時(shí),向虛擬機(jī)調(diào)度進(jìn)程發(fā)出熱點(diǎn)消除請(qǐng)求或者冷點(diǎn)整合請(qǐng)求。
資源調(diào)度模塊整合了原有OpenStack平臺(tái)的虛擬機(jī)調(diào)度進(jìn)程(Nova-Scheduler),即將該進(jìn)程轉(zhuǎn)變?yōu)橘Y源調(diào)度請(qǐng)求的接收端,當(dāng)虛擬機(jī)調(diào)度進(jìn)程接受到調(diào)度請(qǐng)求時(shí),根據(jù)調(diào)度請(qǐng)求類型來調(diào)用資源調(diào)度模塊處理請(qǐng)求。資源調(diào)度模塊在處理調(diào)度請(qǐng)求時(shí),會(huì)向負(fù)載監(jiān)控模塊發(fā)出查詢負(fù)載信息請(qǐng)求,向SDN監(jiān)控模塊發(fā)出查詢網(wǎng)絡(luò)拓?fù)浜蛯?shí)時(shí)流量信息請(qǐng)求。在接收到相應(yīng)信息后,構(gòu)造流量模型,調(diào)用調(diào)度決策器開始執(zhí)行相應(yīng)調(diào)度算法,得出調(diào)度結(jié)果。最后調(diào)度模塊將結(jié)果返回到虛擬機(jī)調(diào)度進(jìn)程。
負(fù)載監(jiān)控模塊負(fù)責(zé)監(jiān)控集群負(fù)載,當(dāng)發(fā)現(xiàn)冷點(diǎn)和熱點(diǎn)時(shí)發(fā)出調(diào)度處理請(qǐng)求,并向監(jiān)控模塊提供負(fù)載查詢功能。
SDN監(jiān)控模塊負(fù)責(zé)監(jiān)控集群網(wǎng)絡(luò),向監(jiān)控模塊提供網(wǎng)絡(luò)拓?fù)浜蛯?shí)時(shí)流量查詢功能。
基于該調(diào)度系統(tǒng),本發(fā)明提供了一種基于流量親和性的OpenStack云平臺(tái)資源初始放置方法,包括:資源調(diào)度進(jìn)程接收客戶端發(fā)送的建立虛擬機(jī)實(shí)例的請(qǐng)求信息,所述請(qǐng)求信息包括用于建立虛擬機(jī)實(shí)例的配額信息、虛擬機(jī)實(shí)例的數(shù)量和虛擬機(jī)實(shí)例之間的流量和親和性關(guān)系。資源調(diào)度進(jìn)程根據(jù)從系統(tǒng)負(fù)載監(jiān)控模塊獲得的集群物理主機(jī)負(fù)載、物理機(jī)框組劃分和從SDN模塊獲得的網(wǎng)絡(luò)拓?fù)浜凸?jié)點(diǎn)間流量等信息構(gòu)建流量權(quán)重圖。先根據(jù)流量關(guān)系將虛擬機(jī)實(shí)例分組,根據(jù)同組親和性利用最大流最小割算法進(jìn)行分割,根據(jù)反親和性找出核心虛擬機(jī)。以親和性和流量關(guān)系連接虛擬機(jī)成邊,將虛擬機(jī)組構(gòu)成子圖,對(duì)子圖使用啟發(fā)式搜索,得到最終結(jié)果。
具體來說,資源調(diào)度進(jìn)程(Nova-Scheduler)接收到客戶端發(fā)起的虛擬機(jī)部署請(qǐng)求,從請(qǐng)求參數(shù)中獲取虛擬機(jī)實(shí)例的配額信息、虛擬機(jī)間流量信息和虛擬機(jī)間親和性關(guān)系作為初始放置算法的輸入。同時(shí)資源調(diào)度進(jìn)程向負(fù)載監(jiān)控模塊發(fā)出負(fù)載查詢請(qǐng)求,向SDN監(jiān)控模塊發(fā)出網(wǎng)絡(luò)拓?fù)?、流量和時(shí)延查詢請(qǐng)求。在接收到上述請(qǐng)求的反饋后,提取負(fù)載、網(wǎng)絡(luò)拓?fù)?、流量和時(shí)延等信息封裝成算法需求的相應(yīng)結(jié)構(gòu)作為初始放置算法的輸入,并將親和性關(guān)系存入數(shù)據(jù)庫中。當(dāng)算法的輸入構(gòu)造完畢后,開始初始放置的具體流程。
如圖2所示,初始放置的具體流程包括:
1)根據(jù)網(wǎng)絡(luò)拓?fù)浜蜁r(shí)延,構(gòu)造與每臺(tái)物理機(jī)時(shí)延較小的物理機(jī)排序;
2)根據(jù)虛擬機(jī)間流量關(guān)系,使用DFS搜索遍歷將虛擬機(jī)分組;
3)根據(jù)虛擬機(jī)間的同組親和性關(guān)系,使用最大流最小割算法將虛擬機(jī)組進(jìn)行切割;
4)根據(jù)虛擬機(jī)間的反親和性關(guān)系,找出虛擬機(jī)組中的核心虛擬機(jī);
5)對(duì)虛擬機(jī)組使用子圖IDA搜索,放置到物理機(jī)中;
6)如果存在不能放置的子圖,使用模擬退火算法將虛擬機(jī)組按照是能升序排序,將勢(shì)能最低的虛擬機(jī)組進(jìn)行切割分組,回到上一步;
7)最后獲得所有虛擬機(jī)組的目標(biāo)物理機(jī),
當(dāng)獲得算法的輸出即每個(gè)虛擬機(jī)對(duì)應(yīng)的目標(biāo)物理機(jī)后,資源調(diào)度進(jìn)程將結(jié)果封裝成云平臺(tái)原有初始放置消息的格式,發(fā)送到相應(yīng)節(jié)點(diǎn)的部署進(jìn)程(Nova-Compute)來啟動(dòng)虛擬機(jī)。
基于該調(diào)度系統(tǒng),本發(fā)明還提供了一種基于流量親和性的OpenStack云平臺(tái)冷點(diǎn)整合或熱點(diǎn)消除方法,包括:系統(tǒng)監(jiān)控模塊根據(jù)集群物理主機(jī)負(fù)載和預(yù)先設(shè)置的冷熱點(diǎn)標(biāo)準(zhǔn),判斷當(dāng)前狀態(tài)下集群中否存在冷點(diǎn)和熱點(diǎn),若存在冷點(diǎn)和熱點(diǎn)則發(fā)送熱點(diǎn)消除或冷點(diǎn)整合請(qǐng)求到資源調(diào)度進(jìn)程。資源調(diào)度進(jìn)程接收到請(qǐng)求信息,所述信息包括冷點(diǎn)和熱點(diǎn)物理主機(jī)負(fù)載以及該主機(jī)上的虛擬機(jī)實(shí)例信息。根據(jù)從系統(tǒng)監(jiān)控模塊獲得的集群物理主機(jī)負(fù)載、物理機(jī)框組劃分和網(wǎng)絡(luò)拓?fù)涞刃畔?gòu)建流量權(quán)重圖。并結(jié)合原有的虛擬機(jī)流量和親和性關(guān)系,在滿足親和性的關(guān)系下將冷點(diǎn)主機(jī)上的虛擬機(jī)實(shí)例全部遷移到其它物理機(jī)上,如果可以完成遷移,則關(guān)閉冷點(diǎn)主機(jī),將熱點(diǎn)主機(jī)上的虛擬機(jī)實(shí)例部分遷移使得主機(jī)達(dá)到溫點(diǎn)狀態(tài)。
具體地說,冷點(diǎn)整合方法為:負(fù)載監(jiān)控模塊定時(shí)地檢查集群負(fù)載情況,當(dāng)檢查到集群中存在冷點(diǎn)時(shí),向資源調(diào)度進(jìn)程發(fā)出冷點(diǎn)整合請(qǐng)求,請(qǐng)求參數(shù)中包含冷點(diǎn)物理機(jī)的負(fù)載信息和該節(jié)點(diǎn)上運(yùn)行的虛擬機(jī)配額信息。當(dāng)資源調(diào)度模塊接收到冷點(diǎn)整合請(qǐng)求后,從請(qǐng)求參數(shù)中獲取該節(jié)點(diǎn)上虛擬機(jī)實(shí)例的配額信息作為冷點(diǎn)整合算法的輸入。同時(shí)資源調(diào)度進(jìn)程向負(fù)載監(jiān)控模塊發(fā)出負(fù)載查詢請(qǐng)求,向SDN監(jiān)控模塊發(fā)出網(wǎng)絡(luò)拓?fù)?、流量和時(shí)延查詢請(qǐng)求。在接收到上述請(qǐng)求的反饋后,提取負(fù)載、網(wǎng)絡(luò)拓?fù)洹⒘髁亢蜁r(shí)延等信息封裝成算法需求的相應(yīng)結(jié)構(gòu),并從數(shù)據(jù)庫中獲取該節(jié)點(diǎn)上虛擬機(jī)間的親和性關(guān)系作為算法輸入。當(dāng)算法輸入構(gòu)造完畢后,開始處理具體流程。
如圖3所示,冷點(diǎn)整合的具體流程為:
1)將全部物理機(jī)按照負(fù)載值大小降序排序,選出其中處于溫點(diǎn)狀態(tài)的物理機(jī);
2)選擇一臺(tái)負(fù)載值最低的溫點(diǎn)物理機(jī)作為虛擬機(jī)可放置的候選物理機(jī);
3)遞歸地調(diào)用初始放置算法中的放置函數(shù)來放置虛擬機(jī);
4)如果虛擬機(jī)不能全部放置成功,則從剩余溫點(diǎn)物理機(jī)中選擇一臺(tái)負(fù)載值最低的溫點(diǎn)物理機(jī)到候選物理機(jī)中,回到上一步;
5)放置成功后關(guān)閉冷點(diǎn)物理機(jī),
當(dāng)獲得算法的輸出即每個(gè)虛擬機(jī)對(duì)應(yīng)的目標(biāo)物理機(jī)后,資源調(diào)度進(jìn)程將結(jié)果封裝成云平臺(tái)原有遷移消息的格式,發(fā)送到原先節(jié)點(diǎn)和相應(yīng)新節(jié)點(diǎn)的部署進(jìn)程(Nova-Compute)來進(jìn)行虛擬機(jī)遷移。
具體地說,熱點(diǎn)消除方法為:負(fù)載監(jiān)控模塊定時(shí)地檢查集群負(fù)載情況,當(dāng)檢查到集群中存在熱點(diǎn)時(shí),向資源調(diào)度進(jìn)程發(fā)出熱點(diǎn)消除請(qǐng)求,請(qǐng)求參數(shù)中包含熱點(diǎn)物理機(jī)的負(fù)載信息和該節(jié)點(diǎn)上運(yùn)行的虛擬機(jī)配額信息。當(dāng)資源調(diào)度模塊接收到熱點(diǎn)消除請(qǐng)求后,從請(qǐng)求參數(shù)中獲取該節(jié)點(diǎn)上虛擬機(jī)實(shí)例的配額信息作為熱點(diǎn)消除算法的輸入。同時(shí)資源調(diào)度進(jìn)程向負(fù)載監(jiān)控模塊發(fā)出負(fù)載查詢請(qǐng)求,向SDN監(jiān)控模塊發(fā)出網(wǎng)絡(luò)拓?fù)洹⒘髁亢蜁r(shí)延查詢請(qǐng)求。在接收到上述請(qǐng)求的反饋后,提取負(fù)載、網(wǎng)絡(luò)拓?fù)洹⒘髁亢蜁r(shí)延等信息封裝成算法需求的相應(yīng)結(jié)構(gòu),并從數(shù)據(jù)庫中獲取該節(jié)點(diǎn)上虛擬機(jī)間的親和性關(guān)系作為算法輸入。當(dāng)算法輸入構(gòu)造完畢后,開始處理具體流程。
如圖4所示,熱點(diǎn)消除的具體流程為:
1)將全部物理機(jī)按照負(fù)載值大小降序排序,選出其中處于溫點(diǎn)狀態(tài)的物理機(jī);
2)選擇一臺(tái)負(fù)載值最低的溫點(diǎn)物理機(jī)作為虛擬機(jī)可放置的候選物理機(jī);
3)遞歸地調(diào)用初始放置算法中的放置函數(shù)來放置虛擬機(jī),選取順序?yàn)樵瓱狳c(diǎn)物理機(jī)、候選物理機(jī);
4)如果虛擬機(jī)不能全部放置成功,則從剩余溫點(diǎn)物理機(jī)中選擇一臺(tái)負(fù)載值最低的溫點(diǎn)物理機(jī)到候選物理機(jī)中,回到上一步,
當(dāng)獲得算法的輸出即每個(gè)虛擬機(jī)對(duì)應(yīng)的目標(biāo)物理機(jī)后,判斷虛擬機(jī)算法前后的所在物理機(jī)是否一樣,不一樣則將虛擬機(jī)遷移到新目標(biāo)物理機(jī)上。資源調(diào)度進(jìn)程將結(jié)果封裝成云平臺(tái)原有遷移消息的格式,發(fā)送到原先節(jié)點(diǎn)和相應(yīng)新節(jié)點(diǎn)的部署進(jìn)程(Nova-Compute)來進(jìn)行虛擬機(jī)遷移。