本申請(qǐng)涉及數(shù)據(jù)傳輸技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)處理方法、電子設(shè)備及集群。
背景技術(shù):
在當(dāng)前主流的云基礎(chǔ)設(shè)施集群中,通常存在一個(gè)或多個(gè)的中心控制器,用來(lái)調(diào)度集群的整體資源,例如:在創(chuàng)建虛擬業(yè)務(wù)時(shí),控制器會(huì)根據(jù)當(dāng)前的集群內(nèi)部資源情況,選擇一個(gè)資源占用率最低的主機(jī),將新業(yè)務(wù)遷移上去,做到集群內(nèi)部的資源均勻分布;或者,控制器啟動(dòng)一個(gè)定期,一旦超時(shí)則決定當(dāng)前虛擬機(jī)的重新分配。
而在大規(guī)模無(wú)中心的集群中,由于沒(méi)有一個(gè)統(tǒng)一的控制器或管理者,使得由控制器統(tǒng)一調(diào)度資源的方案無(wú)法適用,導(dǎo)致集群中無(wú)法實(shí)現(xiàn)資源調(diào)度,導(dǎo)致集群內(nèi)資源失衡。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)的目的是提供一種數(shù)據(jù)處理方法、電子設(shè)備及集群,用以解決現(xiàn)有技術(shù)中的大規(guī)模無(wú)中心的集群資源失衡的技術(shù)問(wèn)題。
本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)處理方法,應(yīng)用于集群中的主機(jī),所述方法包括:
讀取集群的資源記錄信息,所述資源記錄信息包括所述集群中每臺(tái)主機(jī)的資源信息;
基于所述資源信息,判斷是否需要遷出虛擬機(jī)或遷入虛擬機(jī)。
上述方法,優(yōu)選的,所述基于所述資源信息,判斷是否需要遷出虛擬機(jī)或遷入虛擬機(jī),包括:
在所述資源信息中所有主機(jī)的資源平均占用量小于當(dāng)前主機(jī)的當(dāng)前資源占用量時(shí),標(biāo)記所述當(dāng)前主機(jī)為需要遷出虛擬機(jī)的狀態(tài);
在所述資源信息中所有主機(jī)的資源平均占用量大于當(dāng)前主機(jī)的當(dāng)前資源占用量時(shí),標(biāo)記所述當(dāng)前主機(jī)為可遷入虛擬機(jī)的狀態(tài)。
上述方法,優(yōu)選的,在標(biāo)記所述當(dāng)前主機(jī)為需要遷出虛擬機(jī)的狀態(tài)之后,還包括:
確定所述當(dāng)前主機(jī)中需要遷出的第一虛擬機(jī)。
上述方法,優(yōu)選的,在確定所述當(dāng)前主機(jī)中需要遷出的第一虛擬機(jī)之后,所述方法還包括:
基于所述第一虛擬機(jī)所需要的資源占用量,在集群的其他主機(jī)中查找處于可遷入虛擬機(jī)的狀態(tài)且資源可用量滿足預(yù)設(shè)要求的第一主機(jī),由所述第一主機(jī)或所述當(dāng)前主機(jī)更新所述當(dāng)前主機(jī)的資源信息、所述第一主機(jī)的資源信息及所述第一虛擬機(jī)的虛擬機(jī)信息,使得所述第一虛擬機(jī)遷出所述當(dāng)前主機(jī)并遷入所述第一主機(jī)。
上述方法,優(yōu)選的,在標(biāo)記所述當(dāng)前主機(jī)為可遷入虛擬機(jī)的狀態(tài)之后,還包括:
在集群的其他主機(jī)中查找處于需要遷出虛擬機(jī)的狀態(tài)的第二主機(jī),所述第二主機(jī)中具有第二虛擬機(jī)需要遷出,由所述第二主機(jī)或所述當(dāng)前主機(jī)修改所述當(dāng)前主機(jī)的資源信息、所述第二主機(jī)的資源信息及所述第二虛擬機(jī)的虛擬機(jī)信息,使得所述第二虛擬機(jī)遷出所述第二主機(jī)并遷入所述當(dāng)前主機(jī)。
上述方法,優(yōu)選的,讀取集群的資源記錄信息,包括:
每隔預(yù)設(shè)的時(shí)間間隔,讀取集群的資源記錄信息。
上述方法,優(yōu)選的,所述資源記錄信息中各主機(jī)的資源信息由主機(jī)分別進(jìn)行存儲(chǔ)。
上述方法,優(yōu)選的,還包括:
生成待創(chuàng)建的虛擬機(jī)的資源信息并存儲(chǔ)到所述資源記錄信息;
基于所述資源記錄信息,在所述集群中查找處于可遷入虛擬機(jī)的狀態(tài)且資源可用量滿足預(yù)設(shè)要求的第三主機(jī),由所述第三主機(jī)更新所述第三主機(jī)的資源信息及所述待創(chuàng)建的虛擬機(jī)的資源信息,使得所述待創(chuàng)建的虛擬機(jī)創(chuàng)建在所述第三主機(jī)上。
本申請(qǐng)還提供了一種電子設(shè)備,包括:
輸入接口,用于讀取集群的資源記錄信息,所述資源記錄信息包括所述集群中每臺(tái)主機(jī)的資源信息;
處理器,用于基于所述資源信息,判斷是否需要遷出虛擬機(jī)或遷入虛擬機(jī)。
本申請(qǐng)還提供了一種集群,包括數(shù)據(jù)庫(kù)及多個(gè)主機(jī),其中:
數(shù)據(jù)庫(kù),用于存儲(chǔ)資源記錄信息,所述資源記錄信息包含集群中每臺(tái)主機(jī)的資源信息;
主機(jī),用于讀取所述資源記錄信息,并基于所述資源信息,判斷是否需要遷出虛擬機(jī)或遷入虛擬機(jī)。
上述集群,優(yōu)選的:
所述主機(jī)具體用于:在所述資源信息中所有主機(jī)的資源平均占用量小于當(dāng)前主機(jī)的當(dāng)前資源占用量時(shí),標(biāo)記所述當(dāng)前主機(jī)為需要遷出虛擬機(jī)的狀態(tài);在所述資源信息中所有主機(jī)的資源平均占用量大于當(dāng)前主機(jī)的當(dāng)前資源占用量時(shí),標(biāo)記所述當(dāng)前主機(jī)為可遷入虛擬機(jī)的狀態(tài)。
由上述方案可知,本申請(qǐng)?zhí)峁┑囊环N數(shù)據(jù)處理方法、電子設(shè)備及集群,由集群中的主機(jī)讀取集群的資源記錄信息,由此來(lái)讀取到集群中包含每臺(tái)主機(jī)的資源信息,進(jìn)而再基于這些資源信息來(lái)判斷當(dāng)前的主機(jī)是否需要遷出虛擬機(jī)還是需要遷入虛擬機(jī),實(shí)現(xiàn)虛擬機(jī)資源的調(diào)度。本申請(qǐng)中無(wú)需在集群中存在統(tǒng)一的控制器或管理者,而是將資源調(diào)度的工作分配到每個(gè)主機(jī)上,由每個(gè)主機(jī)通過(guò)判斷集群中所有主機(jī)的資源信息來(lái)確定當(dāng)前主機(jī)是否需要進(jìn)行資源調(diào)度,如虛擬機(jī)遷出或虛擬機(jī)遷入等,從而實(shí)現(xiàn)資源調(diào)度,做到集群內(nèi)整體的資源平衡,實(shí)現(xiàn)本申請(qǐng)目的。
附圖說(shuō)明
為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請(qǐng)實(shí)施例一提供的一種數(shù)據(jù)處理方法的實(shí)現(xiàn)流程圖;
圖2與圖3分別為本申請(qǐng)實(shí)施例的應(yīng)用示例圖;
圖4~圖7分別為本申請(qǐng)實(shí)施例一的部分流程圖;
圖8為本申請(qǐng)實(shí)施例二提供的一種電子設(shè)備的結(jié)構(gòu)示意圖;
圖9為本申請(qǐng)實(shí)施例三提供的一種集群的結(jié)構(gòu)示意圖;
圖10~圖14分別為本申請(qǐng)實(shí)施例的其他應(yīng)用示例圖。
具體實(shí)施方式
下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
參考圖1,為本申請(qǐng)實(shí)施例一提供的一種數(shù)據(jù)處理方法的實(shí)現(xiàn)流程圖,適用于大規(guī)模無(wú)中心的服務(wù)器集群的主機(jī)中,該集群中包含有多個(gè)主機(jī),如圖2中所示,每個(gè)主機(jī)均上能夠運(yùn)行虛擬機(jī),為用戶提供各種服務(wù)。
本實(shí)施例中的方法可以運(yùn)行在集群中的每臺(tái)主機(jī)上,包括以下步驟:
步驟101:讀取集群的資源記錄信息。
其中,資源記錄信息可以包括有集群中每臺(tái)主機(jī)的資源信息。資源信息可以包含有多個(gè)維度的信息,如虛擬中央處理器(centralprocessingunit,cpu)核數(shù)、虛擬內(nèi)存大小、磁盤空間、出口帶寬等信息,如圖3中主機(jī)node1~node4各自的虛擬cpu核數(shù)、虛擬內(nèi)存、磁盤空間及出口帶寬的總數(shù)和當(dāng)前資源占用量所示。
以主機(jī)node2為例,各維度信息的總數(shù)total為:
虛擬cpu核數(shù)vcpu:100;虛擬內(nèi)存大小vmem:100g;磁盤空間disc:10t;出口帶寬bandwidth:20000g;
各維度信息的當(dāng)前資源占用量used為:
虛擬cpu核數(shù)vcpu:0;虛擬內(nèi)存大小vmem:0;磁盤空間disc:0;出口帶寬bandwidth:0。
需要說(shuō)明的是,資源記錄信息能夠表征集群中每臺(tái)主機(jī)的當(dāng)前資源狀態(tài)。
步驟102:基于資源信息,判斷是否需要遷出虛擬機(jī)或遷入虛擬機(jī)。
也就是說(shuō),在集群中,每個(gè)主機(jī)均可以作為資源調(diào)度的主體,基于整個(gè)集群中的所有主機(jī)的當(dāng)前資源狀態(tài)來(lái)進(jìn)行虛擬機(jī)資源的調(diào)度,例如,從別的主機(jī)中遷入虛擬機(jī),或者遷出虛擬機(jī)到別的主機(jī)中,實(shí)現(xiàn)資源的平衡調(diào)度。
由上述方案可知,本申請(qǐng)實(shí)施例一提供的一種數(shù)據(jù)處理方法,由集群中的主機(jī)讀取集群的資源記錄信息,由此來(lái)讀取到集群中包含每臺(tái)主機(jī)的資源信息,進(jìn)而再基于這些資源信息來(lái)判斷當(dāng)前的主機(jī)是否需要遷出虛擬機(jī)還是需要遷入虛擬機(jī),實(shí)現(xiàn)虛擬機(jī)資源的調(diào)度。本實(shí)施例中無(wú)需在集群中存在統(tǒng)一的控制器或管理者,而是將資源調(diào)度的工作分配到每個(gè)主機(jī)上,由每個(gè)主機(jī)通過(guò)判斷集群中所有主機(jī)的資源信息來(lái)確定當(dāng)前主機(jī)是否需要進(jìn)行資源調(diào)度,如虛擬機(jī)遷出或虛擬機(jī)遷入等,從而實(shí)現(xiàn)資源調(diào)度,做到集群內(nèi)整體的資源平衡,實(shí)現(xiàn)實(shí)施例目的。
同時(shí),本實(shí)施例中,虛擬機(jī)遷移的觸發(fā)由集群中的主機(jī)發(fā)起,而不是統(tǒng)一調(diào)度觸發(fā),因此虛擬機(jī)遷移的時(shí)間可以很容易分散開,降低集群內(nèi)部大規(guī)模虛擬機(jī)遷移的情況出現(xiàn)的概率。
在一種實(shí)現(xiàn)方式中,資源記錄信息中各主機(jī)的資源信息是由主機(jī)自己來(lái)分別進(jìn)行存儲(chǔ)的。例如,圖2中的每臺(tái)主機(jī)在上線進(jìn)入集群之后,主機(jī)將其資源信息寫入到數(shù)據(jù)庫(kù)中,集群中所有主機(jī)的資源信息構(gòu)成了集群的資源記錄信息,提供給進(jìn)行資源均衡調(diào)度的主機(jī)進(jìn)行讀取。
而執(zhí)行資源均衡調(diào)度的每臺(tái)主機(jī)在讀取集群的資源記錄信息時(shí),可以每隔預(yù)設(shè)的時(shí)間間隔,來(lái)讀取集群的資源記錄信息。
其中,時(shí)間間隔的大小可以根據(jù)主機(jī)自身的需求進(jìn)行設(shè)置。
例如,在集群中的每臺(tái)主機(jī)均設(shè)置一個(gè)定時(shí)器,在定時(shí)器記錄到一個(gè)時(shí)間間隔即定時(shí)器超時(shí)后,主機(jī)讀取一次集群的資源記錄信息,進(jìn)而進(jìn)行一次資源的均衡調(diào)度。也就是說(shuō),本實(shí)施例中,集群的每臺(tái)主機(jī)可以定期進(jìn)行一次資源調(diào)度,進(jìn)一步實(shí)現(xiàn)集群整體的資源平衡性。
在一種實(shí)現(xiàn)方式中,集群中進(jìn)行資源均衡調(diào)度的主機(jī)在基于資源信息判斷是否需要遷出虛擬機(jī)或嵌入虛擬機(jī)時(shí),可以通過(guò)以下步驟實(shí)現(xiàn),如圖4中所示:
步驟121:判斷資源信息中所有主機(jī)的資源平均占用量與當(dāng)前主機(jī)的當(dāng)前資源占用量之間的大??;
步驟122:在資源信息中所有主機(jī)的資源平均占用量小于當(dāng)前主機(jī)的當(dāng)前資源占用量時(shí),標(biāo)記當(dāng)前主機(jī)為需要遷出虛擬機(jī)的狀態(tài),也就是說(shuō),當(dāng)前主機(jī)需要向其他主機(jī)遷移虛擬機(jī)。
步驟123:在資源信息中所有主機(jī)的資源平均占用量大于當(dāng)前主機(jī)的當(dāng)前資源占用量時(shí),標(biāo)記當(dāng)前主機(jī)為需要遷入虛擬機(jī)的狀態(tài),也就是說(shuō),其他主機(jī)可以向當(dāng)前主機(jī)遷移虛擬機(jī)。
而在資源信息中所有主機(jī)的資源平均占用量等于當(dāng)前主機(jī)的當(dāng)前資源占用量時(shí),當(dāng)前主機(jī)可以不做任何動(dòng)作,因?yàn)榇藭r(shí)當(dāng)前主機(jī)在集群中的資源占用是相對(duì)均衡的狀態(tài)。
在當(dāng)前主機(jī)為需要遷出虛擬機(jī)的狀態(tài)時(shí),本實(shí)施例中可以通過(guò)確定當(dāng)前主機(jī)中需要遷出的第一虛擬機(jī),進(jìn)而將第一虛擬機(jī)遷入到相應(yīng)的第一主機(jī)中,如圖5中所示,在步驟122之后,該方法還可以包括以下步驟:
步驟103:確定當(dāng)前主機(jī)中需要遷出的第一虛擬機(jī)。
其中,本實(shí)施例中,當(dāng)前主機(jī)可以根據(jù)其當(dāng)前資源占用量超過(guò)集群中所有主機(jī)的資源平均占用量的量來(lái)確定第一虛擬機(jī)。例如,當(dāng)前主機(jī)所確定的第一虛擬機(jī)被遷出后,當(dāng)前主機(jī)的當(dāng)前資源占用量小于或等于集群中所有主機(jī)的資源平均占用量。
步驟104:基于第一虛擬機(jī)所需要的資源占用量,在集群的其他主機(jī)中查找處于可遷入虛擬機(jī)的狀態(tài)且資源可用量滿足預(yù)設(shè)要求的第一主機(jī)。
步驟105:更新當(dāng)前主機(jī)的資源信息、第一主機(jī)的資源信息及第一虛擬機(jī)的虛擬機(jī)信息,使得第一虛擬機(jī)遷出當(dāng)前主機(jī)并遷入第一主機(jī),由此,完成第一虛擬機(jī)的遷移。
或者,當(dāng)前主機(jī)的資源信息、第一主機(jī)的資源信息及第一虛擬機(jī)的虛擬機(jī)信息除了可以由當(dāng)前主機(jī)自己來(lái)更新之外,還可以由第一主機(jī)來(lái)更新。
其中,預(yù)設(shè)要求是指:第一主機(jī)的資源可用量能夠滿足遷入第一主機(jī)的第一虛擬機(jī)所需要的資源,例如,第一主機(jī)的資源可用量大于或等于說(shuō)是第一虛擬機(jī)所需要的資源占用量。
例如:當(dāng)前主機(jī)的資源信息可以更新為不包含第一虛擬機(jī)的資源信息;第一主機(jī)的資源信息被更新后為包含第一虛擬機(jī)的資源信息;第一虛擬機(jī)的虛擬機(jī)信息被更新為屬于第一主機(jī)的虛擬機(jī)信息,由此,完成第一虛擬機(jī)從當(dāng)前主機(jī)遷入第一主機(jī)的過(guò)程,實(shí)現(xiàn)資源的均衡調(diào)度。
在當(dāng)前主機(jī)為可遷入虛擬機(jī)的狀態(tài)時(shí),當(dāng)前主機(jī)可以在集群的其他主機(jī)中遷入第二虛擬機(jī),具體的,在步驟123之后,該方法還可以包括以下步驟,如圖6中所示:
步驟106:在集群的其他主機(jī)中查找處于需要遷出虛擬機(jī)的狀態(tài)的第二主機(jī)。
其中,第二主機(jī)中具有第二虛擬機(jī)需要遷出。
需要說(shuō)明的是,第二主機(jī)中需要遷出的第二虛擬機(jī),可以是第二主機(jī)在進(jìn)行資源均衡調(diào)度時(shí)所確定的,例如,第二主機(jī)基于集群中每臺(tái)主機(jī)的資源信息判斷出第二主機(jī)的當(dāng)前資源占用量大于集群中所有主機(jī)的資源平均占用量時(shí),第二主機(jī)確定需要遷出的第二虛擬機(jī)。
步驟107:修改當(dāng)前主機(jī)的資源信息、第二主機(jī)的資源信息及第二虛擬機(jī)的虛擬機(jī)信息,使得第二虛擬機(jī)遷出第二主機(jī)并遷入當(dāng)前主機(jī)。
或者,當(dāng)前主機(jī)的資源信息、第二主機(jī)的資源信息及第二虛擬機(jī)的虛擬機(jī)信息除了可以由當(dāng)前主機(jī)自己來(lái)更新之外,還可以由第二主機(jī)來(lái)更新。
例如:當(dāng)前主機(jī)的資源信息可以更新為包含第二虛擬機(jī)的資源信息;第二主機(jī)的資源信息被更新后為不包含第二虛擬機(jī)的資源信息;第二虛擬機(jī)的虛擬機(jī)信息被更新為屬于當(dāng)前主機(jī)的虛擬機(jī)信息,由此,完成第一虛擬機(jī)從第二主機(jī)遷入當(dāng)前主機(jī)的過(guò)程,實(shí)現(xiàn)資源的均衡調(diào)度。
在一種實(shí)現(xiàn)方式中,集群中除了存在虛擬機(jī)遷移的情況,還會(huì)有新建虛擬機(jī)的情況,因此,為了實(shí)現(xiàn)新建虛擬機(jī)時(shí)也同樣能夠達(dá)到資源均衡,本實(shí)施例中提出以下方案,如圖7中所示,步驟如下:
步驟701:生成待創(chuàng)建的虛擬機(jī)的資源信息并存儲(chǔ)到資源記錄信息。
步驟702:基于資源記錄信息,在集群中查找處于可遷入虛擬機(jī)的狀態(tài)且資源可用量滿足預(yù)設(shè)要求的第三主機(jī)。
由此,由第三主機(jī)更新第三主機(jī)的資源信息以及待創(chuàng)建的虛擬機(jī)的資源信息,使得待創(chuàng)建的虛擬機(jī)創(chuàng)建在第三主機(jī)上。
其中,第三主機(jī)可以是當(dāng)前主機(jī),也可以是集群中的其他主機(jī)。
而第三主機(jī)的資源信息更新為包含該待創(chuàng)建的虛擬機(jī)的信息;待創(chuàng)建的虛擬機(jī)的資源信息更新為屬于第三主機(jī)的資源信息。
也就是說(shuō),當(dāng)前主機(jī)可以基于資源記錄信息中集群所有主機(jī)的資源信息來(lái)確定第三虛擬機(jī)所創(chuàng)建的主機(jī),可以是集群中處于可遷入虛擬機(jī)的狀態(tài)且資源可用量能夠滿足待創(chuàng)建的虛擬機(jī)所需要的資源占用量的主機(jī),即第三主機(jī)。
參考圖8,為本申請(qǐng)實(shí)施例二提供的一種電子設(shè)備的結(jié)構(gòu)示意圖,該電子設(shè)備可以為云基礎(chǔ)設(shè)備集群中的主機(jī)。
在本實(shí)施例中,該電子設(shè)備可以包括以下結(jié)構(gòu):
輸入接口801,用于讀取集群的資源記錄信息。
其中,資源記錄信息包括集群中每臺(tái)主機(jī)的資源信息,具體內(nèi)容可以參考圖3所示及前文相應(yīng)內(nèi)容。
需要說(shuō)明的是,輸入接口801可以為能夠讀取數(shù)據(jù)庫(kù)中資源信息的接口實(shí)現(xiàn)。
處理器802,用于基于資源信息,判斷是否需要遷出虛擬機(jī)或者遷入虛擬機(jī)。
也就是說(shuō),在集群中,每個(gè)主機(jī)均可以作為資源調(diào)度的主體電子設(shè)備,基于整個(gè)集群中的所有主機(jī)的當(dāng)前資源狀態(tài)來(lái)進(jìn)行虛擬機(jī)資源的調(diào)度,例如,從別的主機(jī)中遷入虛擬機(jī),或者遷出虛擬機(jī)到別的主機(jī)中,實(shí)現(xiàn)資源的平衡調(diào)度。
由上述方案可知,本申請(qǐng)實(shí)施例二提供的一種電子設(shè)備,由集群中的主機(jī)讀取集群的資源記錄信息,由此來(lái)讀取到集群中包含每臺(tái)主機(jī)的資源信息,進(jìn)而再基于這些資源信息來(lái)判斷當(dāng)前的主機(jī)是否需要遷出虛擬機(jī)還是需要遷入虛擬機(jī),實(shí)現(xiàn)虛擬機(jī)資源的調(diào)度。本實(shí)施例中無(wú)需在集群中存在統(tǒng)一的控制器或管理者,而是將資源調(diào)度的工作分配到每個(gè)主機(jī)上,由每個(gè)主機(jī)通過(guò)判斷集群中所有主機(jī)的資源信息來(lái)確定當(dāng)前主機(jī)是否需要進(jìn)行資源調(diào)度,如虛擬機(jī)遷出或虛擬機(jī)遷入等,從而實(shí)現(xiàn)資源調(diào)度,做到集群內(nèi)整體的資源平衡,實(shí)現(xiàn)實(shí)施例目的。
同時(shí),本實(shí)施例中,虛擬機(jī)遷移的觸發(fā)由集群中的主機(jī)發(fā)起,而不是統(tǒng)一調(diào)度觸發(fā),因此虛擬機(jī)遷移的時(shí)間可以很容易分散開,降低集群內(nèi)部大規(guī)模虛擬機(jī)遷移的情況出現(xiàn)的概率。
在一種實(shí)現(xiàn)方式中,輸入接口801可以每隔預(yù)設(shè)的時(shí)間間隔,讀取集群的資源記錄信息。
而資源記錄信息中各個(gè)主機(jī)的資源信息是有主機(jī)自己分別進(jìn)行存儲(chǔ)的,再由進(jìn)行資源均衡調(diào)度的主機(jī)進(jìn)行讀取。
在一種實(shí)現(xiàn)方式中,處理器802在基于所述資源信息,判斷是否需要遷出虛擬機(jī)或遷入虛擬機(jī),可以通過(guò)以下方式實(shí)現(xiàn):
在所述資源信息中所有主機(jī)的資源平均占用量小于當(dāng)前主機(jī)的當(dāng)前資源占用量時(shí),標(biāo)記所述當(dāng)前主機(jī)為需要遷出虛擬機(jī)的狀態(tài),確定當(dāng)前主機(jī)中需要遷出的第一虛擬機(jī),并基于所述第一虛擬機(jī)所需要的資源占用量,在集群的其他主機(jī)中查找處于可遷入虛擬機(jī)的狀態(tài)且資源可用量滿足預(yù)設(shè)要求的第一主機(jī),由所述第一主機(jī)或所述當(dāng)前主機(jī)更新所述當(dāng)前主機(jī)的資源信息、所述第一主機(jī)的資源信息及所述第一虛擬機(jī)的虛擬機(jī)信息,使得所述第一虛擬機(jī)遷出所述當(dāng)前主機(jī)并遷入所述第一主機(jī);
在所述資源信息中所有主機(jī)的資源平均占用量大于當(dāng)前主機(jī)的當(dāng)前資源占用量時(shí),標(biāo)記所述當(dāng)前主機(jī)為可遷入虛擬機(jī)的狀態(tài),并在集群的其他主機(jī)中查找處于需要遷出虛擬機(jī)的狀態(tài)的第二主機(jī),所述第二主機(jī)中具有第二虛擬機(jī)需要遷出,由所述第二主機(jī)或所述當(dāng)前主機(jī)修改所述當(dāng)前主機(jī)的資源信息、所述第二主機(jī)的資源信息及所述第二虛擬機(jī)的虛擬機(jī)信息,使得所述第二虛擬機(jī)遷出所述第二主機(jī)并遷入所述當(dāng)前主機(jī)。
而處理器802在創(chuàng)建新的虛擬機(jī)時(shí),可以通過(guò)以下方式實(shí)現(xiàn):
生成待創(chuàng)建的虛擬機(jī)的資源信息并存儲(chǔ)到所述資源記錄信息,基于所述資源記錄信息,在所述集群中查找處于可遷入虛擬機(jī)的狀態(tài)且資源可用量滿足預(yù)設(shè)要求的第三主機(jī),由所述第三主機(jī)更新所述第三主機(jī)的資源信息及所述待創(chuàng)建的虛擬機(jī)的資源信息,使得所述待創(chuàng)建的虛擬機(jī)創(chuàng)建在所述第三主機(jī)上。
而第三主機(jī)可以是當(dāng)前的電子設(shè)備即當(dāng)前主機(jī),也可以為集群中除了當(dāng)前主機(jī)之外的其他主機(jī)。
參考圖9,為本申請(qǐng)實(shí)施例三提供的一種集群的結(jié)構(gòu)示意圖,在集群中可以包括數(shù)據(jù)庫(kù)901和多個(gè)主機(jī)902,每個(gè)主機(jī)902均與數(shù)據(jù)庫(kù)901相連接,其中:
數(shù)據(jù)庫(kù)901,用于存儲(chǔ)資源記錄信息。
其中,資源記錄信息包含集群中每臺(tái)主機(jī)的資源信息。每臺(tái)主機(jī)的資源信息由主機(jī)自己各自上傳存儲(chǔ)。
集群中還可以包含另一數(shù)據(jù)庫(kù),來(lái)對(duì)數(shù)據(jù)庫(kù)901中的信息進(jìn)行備份存儲(chǔ)。
主機(jī)902,用于讀取所述資源記錄信息,并基于所述資源信息,判斷是否需要遷出虛擬機(jī)或遷入虛擬機(jī)。
在具體實(shí)現(xiàn)中,主機(jī)902具體用于:在所述資源信息中所有主機(jī)的資源平均占用量小于當(dāng)前主機(jī)902的當(dāng)前資源占用量時(shí),標(biāo)記所述當(dāng)前主機(jī)為需要遷出虛擬機(jī)的狀態(tài);在所述資源信息中所有主機(jī)的資源平均占用量大于當(dāng)前主機(jī)902的當(dāng)前資源占用量時(shí),標(biāo)記所述當(dāng)前主機(jī)902為可遷入虛擬機(jī)的狀態(tài)。
在主機(jī)902標(biāo)記自己為需要遷出虛擬機(jī)的狀態(tài)之后,還可以確定該主機(jī)中需要遷出的第一虛擬機(jī),并基于所述第一虛擬機(jī)所需要的資源占用量,在集群的其他主機(jī)中查找處于可遷入虛擬機(jī)的狀態(tài)且資源可用量滿足預(yù)設(shè)要求的主機(jī),如第一主機(jī),由所述第一主機(jī)或所述當(dāng)前主機(jī)902更新所述當(dāng)前主機(jī)902的資源信息、所述第一主機(jī)的資源信息及所述第一虛擬機(jī)的虛擬機(jī)信息,使得所述第一虛擬機(jī)遷出所述當(dāng)前主機(jī)902并遷入所述第一主機(jī)。
而主機(jī)902在標(biāo)記所述當(dāng)前主機(jī)為可遷入虛擬機(jī)的狀態(tài)之后,還可以在集群的其他主機(jī)中查找處于需要遷出虛擬機(jī)的狀態(tài)的第二主機(jī),所述第二主機(jī)中具有第二虛擬機(jī)需要遷出,由所述第二主機(jī)或所述當(dāng)前主機(jī)902修改所述當(dāng)前主機(jī)902的資源信息、所述第二主機(jī)的資源信息及所述第二虛擬機(jī)的虛擬機(jī)信息,使得所述第二虛擬機(jī)遷出所述第二主機(jī)并遷入所述當(dāng)前主機(jī)902。
需要說(shuō)明的是,主機(jī)902可以每隔預(yù)設(shè)的時(shí)間間隔,讀取集群的資源記錄信息,從而進(jìn)行資源調(diào)度。也就是說(shuō),在集群中每臺(tái)主機(jī)可以定期進(jìn)行資源均衡調(diào)度,進(jìn)一步實(shí)現(xiàn)資源均衡性。
以下以圖9中所示的集群為例,對(duì)本實(shí)施例中的資源均衡調(diào)度進(jìn)行舉例說(shuō)明:
對(duì)于集群中的主機(jī)可以設(shè)定兩種角色:
賣家:需要遷出虛擬機(jī)的主機(jī);
買家:可以遷入虛擬機(jī)的主機(jī)。
在虛擬機(jī)的信息中,包括一個(gè)交易狀態(tài)dealstate,用來(lái)描述主機(jī)之間的虛擬機(jī)交易狀態(tài),其中:
forsale:出售狀態(tài),表明該虛擬機(jī)處于待售狀態(tài),即該虛擬機(jī)處于需要從當(dāng)前所在主機(jī)遷出到其他主機(jī)的狀態(tài);
deal:交易結(jié)束,說(shuō)明賣家和買家之間已經(jīng)完成交易約定,可以開始進(jìn)行虛擬機(jī)遷移或創(chuàng)建的實(shí)際操作。
而還可以有l(wèi)ocation表明虛擬機(jī)所屬的主機(jī)。
在集群的數(shù)據(jù)庫(kù)中,記錄每臺(tái)主機(jī)的資源信息和交易信息,通過(guò)數(shù)據(jù)庫(kù)的資源記錄信息來(lái)完成數(shù)據(jù)交易,如圖10中的集群整體的部署拓?fù)鋱D所示。
集群中的數(shù)據(jù)庫(kù)可以為cassandra數(shù)據(jù)庫(kù),也可使用集中式數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)作為無(wú)中心云基礎(chǔ)設(shè)施的數(shù)據(jù)存儲(chǔ)服務(wù),保存主機(jī)的資源信息和虛擬機(jī)信息,如資源被占用數(shù)量、虛擬機(jī)數(shù)量、每個(gè)虛擬機(jī)所占的資源等。
而在每個(gè)主機(jī)上線即加入集群之后,將本機(jī)的資源信息寫入到數(shù)據(jù)庫(kù)中。資源信息可能有多個(gè)維度,如虛擬cpu核數(shù),虛擬內(nèi)存大小,磁盤空間,出口帶寬等。
本實(shí)施例的集群在超融合基礎(chǔ)設(shè)施云場(chǎng)景中,虛擬機(jī)的創(chuàng)建可以在每個(gè)主機(jī)發(fā)起,在主機(jī)創(chuàng)建虛擬機(jī)或者資源占用過(guò)多時(shí),主機(jī)從資源列表中查找合適的買家主機(jī),遵循以下規(guī)則:
1、賣家總是選擇資源可有量或資源保有量最多的,且狀態(tài)處于空閑狀態(tài)的買家(空閑狀態(tài)是指沒(méi)有處于交易狀態(tài));
2、若交易過(guò)程中,買家出現(xiàn)故障,賣家需要重新選擇買家,并重新觸發(fā)交易;
3、若交易過(guò)程中,賣家出現(xiàn)故障,則需要重新觸發(fā)虛擬機(jī)的加入。
以host1和host2之間的交易為例,對(duì)賣家觸發(fā)交易的示例進(jìn)行說(shuō)明,如圖11和圖12中所示:
1、外部觸發(fā)host1創(chuàng)建/遷移虛機(jī);
2、host1創(chuàng)建一個(gè)虛擬機(jī)4的數(shù)據(jù)條目,如虛擬機(jī)的占用資源的信息,dealstate為forsale,location為空,虛擬機(jī)state為tobuild(待創(chuàng)建,而running表示已經(jīng)創(chuàng)建正在運(yùn)行),同時(shí)從數(shù)據(jù)庫(kù)中查詢集群資源使用情況,選擇一個(gè)資源保有量最多,且處于交易空閑狀態(tài)的主機(jī)host2(host2可能是host1,也可能是其他主機(jī));
3、host1發(fā)起向host2的通訊,告知有虛擬機(jī)資源需要交易,host2可以回復(fù)接受,若host2回復(fù)拒絕,則host1從主機(jī)列表中重新選擇一個(gè)主機(jī),重新觸發(fā)交易,若此時(shí)無(wú)主機(jī)可用返回創(chuàng)建失??;
4、host2接受交易后,改寫之前host1創(chuàng)建的數(shù)據(jù)條目,如占用資源的所屬主機(jī),將dealstate修改為deal,location修改為host2自己的標(biāo)識(shí);
5、host2完成虛擬機(jī)的創(chuàng)建,若是遷移的情況,則和host1完成遷移的動(dòng)作。此時(shí)虛擬機(jī)條目為host2維護(hù),并依創(chuàng)建狀態(tài)修改虛機(jī)的數(shù)據(jù)條目。
其中,本實(shí)施例中還可以在賣家一方銷毀虛擬機(jī)并啟動(dòng)虛擬機(jī)等。
需要說(shuō)明的是,集群中每個(gè)主機(jī)的虛擬機(jī)管理模型都會(huì)存在一個(gè)優(yōu)化定時(shí)器,在定時(shí)器超時(shí)之后,會(huì)觸發(fā)一次資源的均衡調(diào)度操作。
以上為賣家觸發(fā)交易模型,當(dāng)優(yōu)化定時(shí)器超時(shí)后,賣家主機(jī)會(huì)將多余虛擬機(jī)的dealstate狀態(tài)修改為forsale,并從主機(jī)列表中查找合適的買家主機(jī),并重復(fù)上面創(chuàng)建虛機(jī)的流程。
還有一種為買家觸發(fā)交易模型,即當(dāng)賣家優(yōu)化定時(shí)器超時(shí)后,只將自己多余的虛擬機(jī)修改交易狀態(tài),相當(dāng)于在市場(chǎng)中掛牌銷售,等待買家交易。而當(dāng)買家主機(jī)的優(yōu)化定時(shí)器超時(shí)后,會(huì)在虛擬機(jī)列表中查找待售的虛擬機(jī),由買家主動(dòng)向賣家發(fā)起交易。
以host1和host2之間的交易為例,對(duì)買家觸發(fā)交易的示例進(jìn)行說(shuō)明,如圖13和圖14中所示:
1、host1優(yōu)化定時(shí)器超時(shí);
2、host1查詢?nèi)仲Y源使用情況,確認(rèn)自己為賣家,需要出售虛擬機(jī);
3、host1將自己多余的虛擬機(jī)的交易狀態(tài)修改為forsale;
4、host2的優(yōu)化定時(shí)器超時(shí);
5、host1查詢?nèi)仲Y源使用情況,確認(rèn)自己為買家,需要收購(gòu)虛擬機(jī);
6、host2查詢虛機(jī)出售信息,并選擇了host1的虛機(jī)作為收購(gòu)對(duì)象;
7、host2發(fā)起和host1的通訊,交易虛擬機(jī),若交易失敗則重新選擇虛擬機(jī)交易對(duì)象;
8、host2將虛擬機(jī)的location修改為host2,將交易狀態(tài)修改給deal;
9、交易雙方完成虛擬機(jī)的遷移工作;
10、host2開始維護(hù)虛擬機(jī)狀態(tài)和數(shù)據(jù)庫(kù)條目。
其中,本實(shí)施例中還可以在賣家一方銷毀虛擬機(jī)并啟動(dòng)虛擬機(jī)等。
由上述方案可知,本實(shí)施例中適用于超融合云基礎(chǔ)設(shè)施場(chǎng)景中,無(wú)中心調(diào)度的情況,而虛擬機(jī)遷移的觸發(fā)由主機(jī)發(fā)起,而不是由統(tǒng)一調(diào)度觸發(fā),因此遷移時(shí)間可以很容易分散開,較少概率出現(xiàn)集群內(nèi)部大規(guī)模遷移的情況;另外,交易模型很容易記錄虛擬機(jī)的遷移記錄,而主機(jī)之間的點(diǎn)對(duì)點(diǎn)遷移,即使發(fā)生了故障影響也很小,且有較多的手段進(jìn)行修復(fù);而交易模型動(dòng)態(tài)的展現(xiàn)了集群內(nèi)部的資源利用,可以提供更加豐富的資源利用數(shù)據(jù)及資源流動(dòng)數(shù)據(jù)。
需要說(shuō)明的是,本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上對(duì)本發(fā)明所提供的一種數(shù)據(jù)處理方法、電子設(shè)備及集群進(jìn)行了詳細(xì)介紹,對(duì)所公開的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。