本發(fā)明涉及虛擬機(jī)管理技術(shù)領(lǐng)域,特別是一種防御云平臺(tái)虛擬機(jī)啟動(dòng)風(fēng)暴的方法。
背景技術(shù):
隨著云計(jì)算行業(yè)日益發(fā)展,為了讓云主機(jī)更高效低耗運(yùn)行,采用鏡像快照形式創(chuàng)建虛擬機(jī),但是這個(gè)技術(shù)帶來了批量啟動(dòng)虛擬機(jī)的啟動(dòng)風(fēng)暴問題:
一是客戶在上班時(shí)間段,都會(huì)去啟動(dòng)虛擬機(jī),這時(shí)候可能會(huì)出現(xiàn)開機(jī)黑屏的情況;
二是虛擬機(jī)批量同時(shí)開啟帶來網(wǎng)絡(luò)IO阻塞問題;
三是虛擬機(jī)批量同時(shí)開啟會(huì)導(dǎo)致宿主機(jī)負(fù)載升高,影響宿主機(jī)上的虛擬機(jī)和業(yè)務(wù)運(yùn)行;
四是虛擬機(jī)開機(jī)失敗,影響客戶日常業(yè)務(wù)運(yùn)行。
為了解決虛擬機(jī)啟動(dòng)風(fēng)暴問題,需要一種防御云平臺(tái)虛擬機(jī)啟動(dòng)風(fēng)暴的方法,從而解決虛擬機(jī)同時(shí)開機(jī)黑屏和失敗等問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明解決的技術(shù)問題在于提供一種防御云平臺(tái)虛擬機(jī)啟動(dòng)風(fēng)暴的方法;解決防御虛擬機(jī)同時(shí)批量開機(jī)出現(xiàn)的啟動(dòng)風(fēng)暴問題,確??蛻舡h(huán)境可以正常使用,滿足大批量虛擬機(jī)同時(shí)啟動(dòng),增大虛擬機(jī)的穩(wěn)定性。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案是:
所述的方法包括如下步驟:
步驟1:將需要開機(jī)的虛擬機(jī)加入等待隊(duì)列中;
步驟2:動(dòng)態(tài)計(jì)算出物理機(jī)平均cpu負(fù)載和網(wǎng)絡(luò)IO;
步驟3:判斷步驟2兩組數(shù)據(jù)值是否達(dá)到預(yù)設(shè)高峰值;
步驟4:滿足步驟3的前提下,根據(jù)先進(jìn)先出和優(yōu)先級算法選擇一臺(tái)虛擬機(jī);
步驟5:執(zhí)行開機(jī)命令,讓線程進(jìn)去等待狀態(tài);
步驟6:檢測開機(jī)是否完成,如果返回失敗,則返回步驟2;
步驟7:檢測成功后,刪除對應(yīng)虛擬機(jī)的開機(jī)隊(duì)列。
所述的動(dòng)態(tài)計(jì)算是獲取N次數(shù)據(jù),分別去掉兩組最低和最高數(shù)值,然后再計(jì)算剩下N-4數(shù)據(jù)平均值。
所述等待隊(duì)列是基于分布式同步鎖的技術(shù)實(shí)現(xiàn)線程安全隊(duì)列;
所述cpu負(fù)載是cpu能夠并行處理的事務(wù)的數(shù)量,是cpu個(gè)數(shù)*cpu核數(shù)的值;
所述預(yù)設(shè)高峰值是根據(jù)日常最高負(fù)載平均值推算出來該物理機(jī)負(fù)載高峰值;
所述先進(jìn)先出和優(yōu)先級算法是指哪一個(gè)虛擬機(jī)先入隊(duì)列就可以先發(fā)出的原則,并且每一臺(tái)虛擬機(jī)都是賦予了一個(gè)權(quán)限,根據(jù)權(quán)限值和加入隊(duì)列時(shí)間來選擇出列的虛擬機(jī);
所述線程等待狀態(tài)是指云計(jì)算平臺(tái)系統(tǒng)當(dāng)前線程進(jìn)入阻塞狀態(tài)。
本發(fā)明通過監(jiān)控物理機(jī)負(fù)載和網(wǎng)絡(luò)IO值來實(shí)現(xiàn)虛擬機(jī)開機(jī)隊(duì)列等待,根據(jù)先進(jìn)先出及優(yōu)先級算法來分批篩選虛擬機(jī),實(shí)現(xiàn)滿足大批量虛擬機(jī)同時(shí)成功開啟,并且不影響宿主機(jī)上其他虛擬機(jī)和業(yè)務(wù)的運(yùn)行。本發(fā)明給大型桌面云環(huán)境提供了有效的支撐,有效防御了虛擬機(jī)啟動(dòng)風(fēng)暴問題,跟其他云平臺(tái)系統(tǒng)處理啟動(dòng)風(fēng)暴問題對比,他們有些是才去定時(shí)任務(wù)去開機(jī),這樣子的話會(huì)導(dǎo)致資源的浪費(fèi),客戶虛擬機(jī)不一定都需要每天定時(shí)去啟動(dòng),本發(fā)明就可以滿足客戶隨時(shí)啟動(dòng)虛擬機(jī)都可以防御虛擬機(jī)啟動(dòng)風(fēng)暴問題。本發(fā)明解決了虛擬機(jī)啟動(dòng)風(fēng)暴的同時(shí),也可以讓宿主機(jī)穩(wěn)定運(yùn)行虛擬機(jī),時(shí)刻監(jiān)控著負(fù)載來處理虛擬機(jī)操作,讓客戶云平臺(tái)更加節(jié)能,高效,穩(wěn)定運(yùn)行。
附圖說明
下面結(jié)合附圖對本發(fā)明進(jìn)一步說明:
圖1為本發(fā)明方法流程圖。
具體實(shí)施方式
如圖1所示,本發(fā)明的的基本步驟是:
步驟1:將需要開機(jī)的虛擬機(jī)加入等待隊(duì)列中;
步驟2:動(dòng)態(tài)計(jì)算出物理機(jī)平均cpu負(fù)載和網(wǎng)絡(luò)IO;
步驟3:判斷步驟2兩組數(shù)據(jù)值是否達(dá)到預(yù)設(shè)高峰值;
步驟4:滿足步驟3的前提下,根據(jù)先進(jìn)先出和優(yōu)先級算法選擇一臺(tái)虛擬機(jī);
步驟5:執(zhí)行開機(jī)命令,讓線程進(jìn)去等待狀態(tài);
步驟6:檢測開機(jī)是否完成,如果返回失敗,則返回步驟2;
步驟7:檢測成功后,刪除對應(yīng)虛擬機(jī)的開機(jī)隊(duì)列。
并且,動(dòng)態(tài)計(jì)算是獲取N次數(shù)據(jù),分別去掉兩組最低和最高數(shù)值,然后再計(jì)算剩下N-4數(shù)據(jù)平均值。cpu負(fù)載是cpu能夠并行處理的事務(wù)的數(shù)量,是cpu個(gè)數(shù)*cpu核數(shù)的值。根據(jù)日常最高負(fù)載平均值推算出來該物理機(jī)負(fù)載高峰值。指哪一個(gè)虛擬機(jī)先入隊(duì)列就可以先發(fā)出的原則,并且每一臺(tái)虛擬機(jī)都是賦予了一個(gè)權(quán)限,根據(jù)權(quán)限值和加入隊(duì)列時(shí)間來選擇出列的虛擬機(jī)。
相關(guān)獲取宿主機(jī)負(fù)載和防御代碼如下:
獲取宿主機(jī)負(fù)載代碼:
防御代碼: