本發(fā)明涉及虛擬技術(shù),尤指一種恢復(fù)虛擬機(jī)的方法和裝置。
背景技術(shù):
openstack是一個(gè)由美國(guó)國(guó)家航空航天局(nasa,nationalaeronauticsandspace)和rackspace合作研發(fā)并發(fā)起的,以apache許可證授權(quán)的自由軟件和開(kāi)放源代碼云計(jì)算管理平臺(tái)項(xiàng)目,openstack通過(guò)各種互補(bǔ)的服務(wù)提供了基礎(chǔ)設(shè)施即服務(wù)(iaas)的解決方案,是一個(gè)旨在為公共及私有云的建設(shè)與管理提供軟件的開(kāi)源項(xiàng)目。
openstack對(duì)虛擬機(jī)的實(shí)現(xiàn)中,當(dāng)計(jì)算節(jié)點(diǎn)異常宕機(jī)時(shí),計(jì)算節(jié)點(diǎn)上的虛擬機(jī)無(wú)法運(yùn)行,雖然虛擬機(jī)的業(yè)務(wù)可能考慮了主備虛擬機(jī)的切換,但也需要把故障計(jì)算節(jié)點(diǎn)上的虛擬機(jī)及時(shí)在可用的計(jì)算節(jié)點(diǎn)上重新啟動(dòng)起來(lái),這種場(chǎng)景下的虛擬機(jī)重生,就是虛擬機(jī)的異地重生。虛擬機(jī)在異地重生時(shí)會(huì)根據(jù)這個(gè)虛擬機(jī)在數(shù)據(jù)庫(kù)中保存的原始信息,在目的計(jì)算節(jié)點(diǎn)上部署起來(lái)。
現(xiàn)有的恢復(fù)虛擬機(jī)的方法大致包括:
計(jì)算節(jié)點(diǎn)發(fā)生故障后,控制節(jié)點(diǎn)接收到來(lái)自用戶(hù)所在的計(jì)算節(jié)點(diǎn)的進(jìn)行異地重生的請(qǐng)求,判斷出滿(mǎn)足進(jìn)行異地重生的條件(如用戶(hù)是否具有發(fā)起異地重生的權(quán)限、虛擬機(jī)是否滿(mǎn)足異地重生的條件等),在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找進(jìn)行異地重生的請(qǐng)求中的需要進(jìn)行重生的虛擬機(jī)對(duì)應(yīng)的操作狀態(tài),當(dāng)查找到的操作狀態(tài)為空狀態(tài)時(shí),將進(jìn)行重生的虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中的操作狀態(tài)更改為正在重建虛擬機(jī),并向目的計(jì)算節(jié)點(diǎn)發(fā)送進(jìn)行異地重生的消息;其中,進(jìn)行異地重生的消息中包括需要進(jìn)行重生的虛擬機(jī)的進(jìn)行重生所需要的信息;目的計(jì)算節(jié)點(diǎn)根據(jù)進(jìn)行異地重生的消息中的進(jìn)行重生所需要的信息進(jìn)行虛擬機(jī)的重生,并將進(jìn)行重生的虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中的計(jì)算節(jié)點(diǎn) 更改為目的計(jì)算節(jié)點(diǎn)。
現(xiàn)有的恢復(fù)虛擬機(jī)的方法中,在進(jìn)行虛擬機(jī)的重生過(guò)程中,當(dāng)發(fā)生故障的計(jì)算節(jié)點(diǎn)因電源等非計(jì)算節(jié)點(diǎn)本身原因下電時(shí),一段時(shí)間后可能會(huì)在環(huán)境恢復(fù)或者人為干預(yù)的情況下重新上電,計(jì)算節(jié)點(diǎn)在上電過(guò)程中,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)、虛擬機(jī)狀態(tài)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找計(jì)算節(jié)點(diǎn)為自身,且虛擬機(jī)狀態(tài)為運(yùn)行狀態(tài)對(duì)應(yīng)的虛擬機(jī)和操作狀態(tài),將查找到的操作狀態(tài)為空狀態(tài)的虛擬機(jī)對(duì)應(yīng)的操作狀態(tài)更改為上電狀態(tài),并把查找到的操作狀態(tài)為空狀態(tài)的虛擬機(jī)啟動(dòng)起來(lái),這樣,就會(huì)導(dǎo)致發(fā)生故障的計(jì)算節(jié)點(diǎn)和目的計(jì)算節(jié)點(diǎn)同時(shí)配置同一個(gè)虛擬機(jī),造成互聯(lián)網(wǎng)協(xié)議(ip,internetprotocol)地址等一系列資源和流程的沖突,甚至可能會(huì)導(dǎo)致虛擬機(jī)的業(yè)務(wù)無(wú)法正常運(yùn)行。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問(wèn)題,本發(fā)明提出了一種恢復(fù)虛擬機(jī)的方法和裝置,能夠減少不同的兩個(gè)計(jì)算節(jié)點(diǎn)對(duì)同一個(gè)虛擬機(jī)的恢復(fù)操作導(dǎo)致的沖突。
為了達(dá)到上述目的,本發(fā)明提出了一種恢復(fù)虛擬機(jī)的方法,包括:
控制節(jié)點(diǎn)檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài);判斷出查找到的第一操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為目標(biāo)計(jì)算節(jié)點(diǎn);
控制節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài),判斷出查找到的第二操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)更改為正在重建虛擬機(jī),并向目的計(jì)算節(jié)點(diǎn)發(fā)送進(jìn)行異地重生的消息。
可選的,所述控制節(jié)點(diǎn)檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生后,在所述查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài)之前還包括:
所述控制節(jié)點(diǎn)判斷出滿(mǎn)足異地重生的條件。
可選的,當(dāng)所述控制節(jié)點(diǎn)判斷出所述第二操作狀態(tài)為非空狀態(tài)時(shí),該方法還包括:
所述控制節(jié)點(diǎn)將所述需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為更改之前的計(jì)算節(jié)點(diǎn)。
可選的,所述對(duì)應(yīng)關(guān)系還包括虛擬機(jī)狀態(tài),所述控制節(jié)點(diǎn)檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生包括:
所述控制節(jié)點(diǎn)檢測(cè)到計(jì)算節(jié)點(diǎn)下電,在所述對(duì)應(yīng)關(guān)系中查找下電的計(jì)算節(jié)點(diǎn)對(duì)應(yīng)的虛擬機(jī)和虛擬機(jī)狀態(tài),判斷出查找到的虛擬機(jī)狀態(tài)為運(yùn)行狀態(tài),確定需要對(duì)查找到的虛擬機(jī)進(jìn)行異地重生。
本發(fā)明還提出了一種恢復(fù)虛擬機(jī)的方法,包括:
計(jì)算節(jié)點(diǎn)在發(fā)生故障后重新上電過(guò)程中,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài);判斷出查找到的第一計(jì)算節(jié)點(diǎn)為自身,且查找到的第一操作狀態(tài)為空狀態(tài),將虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài)更改為上電狀態(tài);
計(jì)算節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找虛擬機(jī)對(duì)應(yīng)的第二計(jì)算節(jié)點(diǎn)和第二操作狀態(tài),判斷出查找到的第二計(jì)算節(jié)點(diǎn)為自身,且查找到的第二操作狀態(tài)為上電狀態(tài),啟動(dòng)虛擬機(jī)。
可選的,當(dāng)所述計(jì)算節(jié)點(diǎn)判斷出所述第二計(jì)算節(jié)點(diǎn)不是自身時(shí),該方法還包括:
所述計(jì)算節(jié)點(diǎn)將所述虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)更改為空狀態(tài)。
可選的,所述對(duì)應(yīng)關(guān)系還包括虛擬機(jī)狀態(tài),所述查找虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài)包括:
所述計(jì)算節(jié)點(diǎn)在所述對(duì)應(yīng)關(guān)系中查找虛擬機(jī)狀態(tài)為運(yùn)行狀態(tài)的虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作節(jié)點(diǎn)。
本發(fā)明還提出了一種控制節(jié)點(diǎn),至少包括:
檢測(cè)模塊,用于檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生;
第一查找模塊,用于在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài);接收到第一通知消息, 在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài);
第一更改模塊,用于判斷出查找到的第一操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為目標(biāo)計(jì)算節(jié)點(diǎn),向查找模塊發(fā)送第一通知消息;判斷出查找到的第二操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)更改為正在重建虛擬機(jī),并向目的計(jì)算節(jié)點(diǎn)發(fā)送進(jìn)行異地重生的消息。
可選的,所述第一查找模塊具體用于:
判斷出滿(mǎn)足異地重生的條件,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài);接收到第一通知消息,在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)。
可選的,所述第一更改模塊還用于:
判斷出所述第二操作狀態(tài)為非空狀態(tài),將所述需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為更改之前的計(jì)算節(jié)點(diǎn)。
可選的,所述對(duì)應(yīng)關(guān)系還包括虛擬機(jī)狀態(tài),所述檢測(cè)模塊具體用于:
檢測(cè)到計(jì)算節(jié)點(diǎn)下電,在所述對(duì)應(yīng)關(guān)系中查找下電的計(jì)算節(jié)點(diǎn)對(duì)應(yīng)的虛擬機(jī)和虛擬機(jī)狀態(tài),判斷出查找到的虛擬機(jī)狀態(tài)為運(yùn)行狀態(tài),確定需要對(duì)查找到的虛擬機(jī)進(jìn)行異地重生。
本發(fā)明還提出了一種計(jì)算節(jié)點(diǎn),至少包括:
第二查找模塊,用于在發(fā)生故障后重新上電過(guò)程中,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài);接收到第二通知消息,在對(duì)應(yīng)關(guān)系中查找虛擬機(jī)對(duì)應(yīng)的第二計(jì)算節(jié)點(diǎn)和第二操作狀態(tài);
第二更改模塊,用于判斷出查找到的第一計(jì)算節(jié)點(diǎn)為自身,且查找到的第一操作狀態(tài)為空狀態(tài),將虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài)更改為上電狀態(tài),向第二查找模塊發(fā)送第二通知消息;判斷出查找到的第二計(jì)算節(jié)點(diǎn)為自身,且查找到的第二操作狀態(tài)為上電狀態(tài),啟動(dòng)虛擬機(jī)。
可選的,所述第二更改模塊還用于:
判斷出所述第二計(jì)算節(jié)點(diǎn)不是自身,將所述虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)更改為空狀態(tài)。
與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)方案包括:控制節(jié)點(diǎn)檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài);判斷出查找到的第一操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為目標(biāo)計(jì)算節(jié)點(diǎn);控制節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài),判斷出查找到的第二操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)更改為正在重建虛擬機(jī),并向目的計(jì)算節(jié)點(diǎn)發(fā)送進(jìn)行異地重生的消息。通過(guò)本發(fā)明的方案,控制節(jié)點(diǎn)在修改需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)前后均先判斷需要進(jìn)行異地重生的虛擬機(jī)的操作狀態(tài)是否為空狀態(tài),若均為空狀態(tài),則進(jìn)行異地重生,避免了發(fā)生故障的計(jì)算節(jié)點(diǎn)在控制節(jié)點(diǎn)修改需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)的過(guò)程中修改需要進(jìn)行異地重生的虛擬機(jī)的操作狀態(tài),從而減少了不同的兩個(gè)計(jì)算節(jié)點(diǎn)對(duì)同一個(gè)虛擬機(jī)的恢復(fù)操作導(dǎo)致的沖突。
附圖說(shuō)明
下面對(duì)本發(fā)明實(shí)施例中的附圖進(jìn)行說(shuō)明,實(shí)施例中的附圖是用于對(duì)本發(fā)明的進(jìn)一步理解,與說(shuō)明書(shū)一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限制。
圖1為本發(fā)明恢復(fù)虛擬機(jī)的方法的流程圖;
圖2為本發(fā)明另一種恢復(fù)虛擬機(jī)的方法的流程圖;
圖3為本發(fā)明控制節(jié)點(diǎn)的結(jié)構(gòu)組成示意圖;
圖4為本發(fā)明計(jì)算節(jié)點(diǎn)的結(jié)構(gòu)組成示意圖。
具體實(shí)施方式
為了便于本領(lǐng)域技術(shù)人員的理解,下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的描 述,并不能用來(lái)限制本發(fā)明的保護(hù)范圍。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的各種方式可以相互組合。
參見(jiàn)圖1,本發(fā)明提出了一種恢復(fù)虛擬機(jī)的方法,包括:
步驟100、控制節(jié)點(diǎn)檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài);判斷出查找到的第一操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為目標(biāo)計(jì)算節(jié)點(diǎn)。
本步驟中,控制節(jié)點(diǎn)可以定時(shí)檢測(cè)是否需要對(duì)虛擬機(jī)進(jìn)行異地重生。
本步驟中,對(duì)應(yīng)關(guān)系還包括虛擬機(jī)狀態(tài),控制節(jié)點(diǎn)檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生包括:
控制節(jié)點(diǎn)檢測(cè)到計(jì)算節(jié)點(diǎn)下電,在對(duì)應(yīng)關(guān)系中查找下電的計(jì)算節(jié)點(diǎn)對(duì)應(yīng)的虛擬機(jī)和虛擬機(jī)狀態(tài),判斷出查找到的虛擬機(jī)狀態(tài)為運(yùn)行狀態(tài),確定需要對(duì)查找到的虛擬機(jī)進(jìn)行異地重生。
其中,控制節(jié)點(diǎn)可以采用帶外管理檢測(cè)計(jì)算節(jié)點(diǎn)是否下電,具體實(shí)現(xiàn)屬于本領(lǐng)域技術(shù)人員的公知技術(shù),并不用于限定本發(fā)明的保護(hù)范圍,這里不再贅述。
本步驟中,控制節(jié)點(diǎn)檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生后,在查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài)之前還包括:
所述控制節(jié)點(diǎn)判斷出滿(mǎn)足異地重生的條件。
其中,如何判斷是否滿(mǎn)足異地重生的條件屬于本領(lǐng)域技術(shù)人員的公知技術(shù),并不用于限定本發(fā)明的保護(hù)范圍,這里不再贅述。
本步驟中,對(duì)應(yīng)關(guān)系可以由控制節(jié)點(diǎn)自身保存,也可以保存在系統(tǒng)中的一個(gè)專(zhuān)門(mén)用戶(hù)存儲(chǔ)數(shù)據(jù)的計(jì)算節(jié)點(diǎn)中。控制節(jié)點(diǎn)可以向該計(jì)算節(jié)點(diǎn)獲取對(duì)應(yīng)關(guān)系。
本步驟中,目標(biāo)計(jì)算節(jié)點(diǎn)可以由用戶(hù)輸入,也可以由控制節(jié)點(diǎn)分配。
本步驟中,當(dāng)控制節(jié)點(diǎn)判斷出查找到的第一操作狀態(tài)為非空狀態(tài)時(shí),結(jié) 束本流程。
步驟101、控制節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài),判斷出查找到的第二操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)更改為正在重建虛擬機(jī),并向目的計(jì)算節(jié)點(diǎn)發(fā)送進(jìn)行異地重生的消息。
本步驟中,當(dāng)控制節(jié)點(diǎn)判斷出第二操作狀態(tài)為非空狀態(tài)時(shí),控制節(jié)點(diǎn)將需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為更改之前的計(jì)算節(jié)點(diǎn)。也就是說(shuō),如果第二操作狀態(tài)為非空狀態(tài)(如正在創(chuàng)建虛擬機(jī)等),則將需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為步驟100中更改之前的計(jì)算節(jié)點(diǎn),即不對(duì)需要進(jìn)行異地重生的虛擬機(jī)進(jìn)行異地重生。
步驟100和步驟101中,第一操作狀態(tài)和第二操作狀態(tài)僅僅是為了區(qū)別不同時(shí)間查找到的虛擬機(jī)的操作狀態(tài),第一操作狀態(tài)和第二操作狀態(tài)可能相同,也可能不同。
通過(guò)本發(fā)明的方法,控制節(jié)點(diǎn)在修改需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)前后均先判斷需要進(jìn)行異地重生的虛擬機(jī)的操作狀態(tài)是否為空狀態(tài),若均為空狀態(tài),則進(jìn)行異地重生,避免了發(fā)生故障的計(jì)算節(jié)點(diǎn)在控制節(jié)點(diǎn)修改需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)的過(guò)程中修改需要進(jìn)行異地重生的虛擬機(jī)的操作狀態(tài),從而減少了不同的兩個(gè)計(jì)算節(jié)點(diǎn)對(duì)同一個(gè)虛擬機(jī)的恢復(fù)操作導(dǎo)致的沖突。
參見(jiàn)圖2,本發(fā)明還提出了一種恢復(fù)虛擬機(jī)的方法,包括:
步驟200、計(jì)算節(jié)點(diǎn)在發(fā)生故障后重新上電過(guò)程中,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài);判斷出查找到的第一計(jì)算節(jié)點(diǎn)為自身,且查找到的第一操作狀態(tài)為空狀態(tài),將虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài)更改為上電狀態(tài)。
本步驟中,計(jì)算節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài)之前可以先在對(duì)應(yīng)關(guān)系中查找自身對(duì)應(yīng)的虛擬機(jī),然后在確定是否啟動(dòng)查找到的虛擬機(jī)之前,先執(zhí)行查找查找到的虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài)的步驟。
也可以遍歷系統(tǒng)中的所有虛擬機(jī),查找系統(tǒng)中的虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài),本發(fā)明不做限定。
本步驟中,當(dāng)查找到的第一計(jì)算節(jié)點(diǎn)不是自身時(shí),結(jié)束本流程。
本步驟中,對(duì)應(yīng)關(guān)系還包括虛擬機(jī)狀態(tài),查找虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài)包括:計(jì)算節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找虛擬機(jī)狀態(tài)為運(yùn)行狀態(tài)的虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作節(jié)點(diǎn)。
步驟201、計(jì)算節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找虛擬機(jī)對(duì)應(yīng)的第二計(jì)算節(jié)點(diǎn)和第二操作狀態(tài),判斷出查找到的第二計(jì)算節(jié)點(diǎn)為自身,且查找到的第二操作狀態(tài)為上電狀態(tài),啟動(dòng)虛擬機(jī)。
本步驟中,當(dāng)計(jì)算節(jié)點(diǎn)判斷出第二計(jì)算節(jié)點(diǎn)不是自身時(shí),計(jì)算節(jié)點(diǎn)將虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)更改為空狀態(tài)。
步驟200和步驟201中,第一計(jì)算節(jié)點(diǎn)和第二計(jì)算節(jié)點(diǎn)僅僅是為了區(qū)別不同時(shí)間查找到的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn),第一計(jì)算節(jié)點(diǎn)和第二計(jì)算節(jié)點(diǎn)可能相同,也可能不同;第一操作狀態(tài)和第二操作狀態(tài)僅僅是為了區(qū)別不同時(shí)間查找到的虛擬機(jī)的操作狀態(tài),第一操作狀態(tài)和第二操作狀態(tài)可能相同,也可能不同。
通過(guò)本發(fā)明的方法,計(jì)算節(jié)點(diǎn)在修改虛擬機(jī)的操作狀態(tài)前后均判斷虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)是否是自身,若均為自身,則啟動(dòng)虛擬機(jī),避免了控制節(jié)點(diǎn)在計(jì)算節(jié)點(diǎn)修改虛擬機(jī)對(duì)應(yīng)的操作狀態(tài)的過(guò)程中修改虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn),從而減少了不同的兩個(gè)計(jì)算節(jié)點(diǎn)對(duì)同一個(gè)虛擬機(jī)的恢復(fù)操作導(dǎo)致的沖突。
下面通過(guò)幾個(gè)具體實(shí)施例詳細(xì)說(shuō)明本發(fā)明的方法。
第一實(shí)施例,某一個(gè)計(jì)算節(jié)點(diǎn)發(fā)生故障后,控制節(jié)點(diǎn)檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生,判斷出滿(mǎn)足異地重生的條件,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài);判斷出查找到的第一操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為目標(biāo)計(jì)算節(jié)點(diǎn)。
發(fā)生故障的計(jì)算節(jié)點(diǎn)重新上電過(guò)程中,在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地 重生的虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài),判斷出查找到的第一計(jì)算節(jié)點(diǎn)為目標(biāo)計(jì)算節(jié)點(diǎn)而非自身,結(jié)束啟動(dòng)需要進(jìn)行異地重生的虛擬機(jī)的流程。
控制節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài),判斷出查找到的第二操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)更改為正在重建虛擬機(jī),并向目的計(jì)算節(jié)點(diǎn)發(fā)送進(jìn)行異地重生的消息。
第二實(shí)施例,某一個(gè)計(jì)算節(jié)點(diǎn)發(fā)生故障后,控制節(jié)點(diǎn)檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生,判斷出滿(mǎn)足異地重生的條件,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài)。
發(fā)生故障的計(jì)算節(jié)點(diǎn)重新上電過(guò)程中,在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài)。
控制節(jié)點(diǎn)判斷出查找到的第一操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為目標(biāo)計(jì)算節(jié)點(diǎn)。發(fā)生故障的計(jì)算節(jié)點(diǎn)判斷出查找到的第一計(jì)算節(jié)點(diǎn)為自身,且查找到的第一操作狀態(tài)為空狀態(tài),將虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài)更改為上電狀態(tài)。
控制節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài),判斷出查找到的第二操作狀態(tài)為非空狀態(tài),結(jié)束異地重生的流程。
發(fā)生故障的計(jì)算節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找虛擬機(jī)對(duì)應(yīng)的第二計(jì)算節(jié)點(diǎn)和第二操作狀態(tài),判斷出查找到的第二計(jì)算節(jié)點(diǎn)不是自身,結(jié)束啟動(dòng)需要進(jìn)行異地重生的虛擬機(jī)的流程。
第三實(shí)施例,某一個(gè)計(jì)算節(jié)點(diǎn)發(fā)生故障后,在重新上電的過(guò)程中,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài);判斷出查找到的第一計(jì)算節(jié)點(diǎn)為自身,且查找到的第一操作狀態(tài)為空狀態(tài),將虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài)更改為上電狀態(tài)。
控制節(jié)點(diǎn)檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生,判斷出滿(mǎn)足異地重生的條件,在對(duì)應(yīng)關(guān)系中查找虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài),判斷出查找到的第一操 作狀態(tài)為非空狀態(tài),結(jié)束進(jìn)行異地重生的流程。
計(jì)算節(jié)點(diǎn)在對(duì)應(yīng)關(guān)系中查找虛擬機(jī)對(duì)應(yīng)的第二計(jì)算節(jié)點(diǎn)和第二操作狀態(tài),判斷出查找到的第二計(jì)算節(jié)點(diǎn)為自身,且查找到的第二操作狀態(tài)為上電狀態(tài),啟動(dòng)虛擬機(jī)。
參見(jiàn)圖3,本發(fā)明還提出了一種控制節(jié)點(diǎn),至少包括:
檢測(cè)模塊,用于檢測(cè)到需要對(duì)虛擬機(jī)進(jìn)行異地重生;
第一查找模塊,用于判斷出滿(mǎn)足異地重生的條件,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài);接收到第一通知消息,在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài);
第一更改模塊,用于判斷出查找到的第一操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為目標(biāo)計(jì)算節(jié)點(diǎn),向查找模塊發(fā)送第一通知消息;判斷出查找到的第二操作狀態(tài)為空狀態(tài),將對(duì)應(yīng)關(guān)系中需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)更改為正在重建虛擬機(jī),并向目的計(jì)算節(jié)點(diǎn)發(fā)送進(jìn)行異地重生的消息。
本發(fā)明的控制節(jié)點(diǎn)中,第一查找模塊具體用于:
判斷出滿(mǎn)足異地重生的條件,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài);接收到第一通知消息,在對(duì)應(yīng)關(guān)系中查找需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)。
本發(fā)明的控制節(jié)點(diǎn)中,第一更改模塊還用于:
判斷出第二操作狀態(tài)為非空狀態(tài),將需要進(jìn)行異地重生的虛擬機(jī)對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)更改為更改之前的計(jì)算節(jié)點(diǎn)。
本發(fā)明的控制節(jié)點(diǎn)中,對(duì)應(yīng)關(guān)系還包括虛擬機(jī)狀態(tài),檢測(cè)模塊具體用于:
檢測(cè)到計(jì)算節(jié)點(diǎn)下電,在對(duì)應(yīng)關(guān)系中查找下電的計(jì)算節(jié)點(diǎn)對(duì)應(yīng)的虛擬機(jī)和虛擬機(jī)狀態(tài),判斷出查找到的虛擬機(jī)狀態(tài)為運(yùn)行狀態(tài),確定需要對(duì)查找到的虛擬機(jī)進(jìn)行異地重生。
參見(jiàn)圖4,本發(fā)明還提出了一種計(jì)算節(jié)點(diǎn),至少包括:
第二查找模塊,用于在發(fā)生故障后重新上電過(guò)程中,在虛擬機(jī)、計(jì)算節(jié)點(diǎn)和操作狀態(tài)之間的對(duì)應(yīng)關(guān)系中,查找虛擬機(jī)對(duì)應(yīng)的第一計(jì)算節(jié)點(diǎn)和第一操作狀態(tài);接收到第二通知消息,在對(duì)應(yīng)關(guān)系中查找虛擬機(jī)對(duì)應(yīng)的第二計(jì)算節(jié)點(diǎn)和第二操作狀態(tài);
第二更改模塊,用于判斷出查找到的第一計(jì)算節(jié)點(diǎn)為自身,且查找到的第一操作狀態(tài)為空狀態(tài),將虛擬機(jī)對(duì)應(yīng)的第一操作狀態(tài)更改為上電狀態(tài),向第二查找模塊發(fā)送第二通知消息;判斷出查找到的第二計(jì)算節(jié)點(diǎn)為自身,且查找到的第二操作狀態(tài)為上電狀態(tài),啟動(dòng)虛擬機(jī)。
本發(fā)明的計(jì)算節(jié)點(diǎn)中,第二更改模塊還用于:
判斷出第二計(jì)算節(jié)點(diǎn)不是自身,將虛擬機(jī)對(duì)應(yīng)的第二操作狀態(tài)更改為空狀態(tài)。
需要說(shuō)明的是,以上所述的實(shí)施例僅是為了便于本領(lǐng)域的技術(shù)人員理解而已,并不用于限制本發(fā)明的保護(hù)范圍,在不脫離本發(fā)明的發(fā)明構(gòu)思的前提下,本領(lǐng)域技術(shù)人員對(duì)本發(fā)明所做出的任何顯而易見(jiàn)的替換和改進(jìn)等均在本發(fā)明的保護(hù)范圍之內(nèi)。