一種虛擬機故障處理方法和設(shè)備的制作方法
【專利摘要】本發(fā)明公開了一種虛擬機故障處理方法和設(shè)備,該方法包括:虛擬路由器利用NQA功能探測VM是否發(fā)生故障;在所述VM發(fā)生故障時,所述虛擬路由器確定所述VM的故障類型;所述虛擬路由器向物理主機發(fā)送故障通知消息;所述物理主機在確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進行故障處理。本發(fā)明實施例中,VM不需要安裝HA工具,能夠快速恢復網(wǎng)絡(luò)連通,并可以避免業(yè)務(wù)應(yīng)用中斷。
【專利說明】一種虛擬機故障處理方法和設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種虛擬機故障處理方法和設(shè)備。
【背景技術(shù)】
[0002]虛擬化技術(shù)是指計算機元件在虛擬基礎(chǔ)上運行,而不是在真實基礎(chǔ)上運行,虛擬 化技術(shù)可以擴大硬件容量,簡化軟件的重新配置過程。在虛擬化技術(shù)中,通常使用虛擬平臺 的HA (High Availability,高可用性)技術(shù)來提高業(yè)務(wù)應(yīng)用的可靠性。如圖1所示,為虛 擬平臺的HA技術(shù)的組網(wǎng)示意圖。該網(wǎng)絡(luò)中包括多個物理主機,各物理主機上運行多個VM (Virtual Machine,虛擬機),且相關(guān)業(yè)務(wù)應(yīng)用將安裝在VM上,以通過VM為用戶提供各種應(yīng) 用服務(wù)。
[0003]虛擬平臺的HA技術(shù)的網(wǎng)絡(luò)分為控制網(wǎng)絡(luò)和業(yè)務(wù)網(wǎng)絡(luò),虛擬平臺的物理主機的控 制接口連接到控制網(wǎng)絡(luò)中,且各物理主機之間通過控制網(wǎng)絡(luò)進行通信;虛擬平臺的物理主 機的業(yè)務(wù)接口連接到業(yè)務(wù)網(wǎng)絡(luò)中,且物理主機上的VM將通過業(yè)務(wù)接口連接到業(yè)務(wù)網(wǎng)絡(luò)中, 以對外提供業(yè)務(wù)服務(wù)。此外,控制網(wǎng)絡(luò)和業(yè)務(wù)網(wǎng)絡(luò)之間是相互隔離的,即控制網(wǎng)絡(luò)和業(yè)務(wù)網(wǎng) 絡(luò)之間不能進行通信。
[0004]現(xiàn)有技術(shù)中,在基于虛擬平臺的HA技術(shù)來保證業(yè)務(wù)應(yīng)用的高可靠性時,采用如下 方式來保證業(yè)務(wù)的可用性。1、物理主機備份功能:虛擬平臺的多臺物理主機之間建立HA集 群,每臺物理主機配有一個HA代理,各物理主機的HA代理在控制網(wǎng)絡(luò)中周期性發(fā)送心跳報 文,并檢測HA集群內(nèi)其它物理主機的心跳報文。如果在某一周期內(nèi)沒有檢測到其它物理主 機的心跳報文,則認為該物理主機故障,并將該其它物理主機上運行的所有VM遷移到HA集 群的其它物理主機上,從而保證物理主機故障情況下的業(yè)務(wù)可用性。2、VM檢測/備份功能: 各VM中安裝HA工具,各VM的HA工具周期性向物理主機發(fā)送心跳報文,如果在一定時間段 內(nèi)物理主機沒有收到HA工具的心跳報文,則判斷該HA工具對應(yīng)的VM異常,對VM進行重啟 或者重新配置,以防止VM故障。
[0005]在上述實現(xiàn)方式中,各VM均需要安裝HA工具,如果VM由于使用非標準操作系統(tǒng) 導致無法安裝HA工具,則無法實現(xiàn)VM檢測/備份功能。HA工具能夠發(fā)送心跳報文時,并不 能保證VM可以提供正常業(yè)務(wù)應(yīng)用,因此物理主機無法準確及時對VM進行重啟或者重新配 置,從而導致業(yè)務(wù)應(yīng)用中斷。此外,各物理主機的HA代理只能在控制網(wǎng)絡(luò)中發(fā)送心跳報文, 無法在業(yè)務(wù)網(wǎng)絡(luò)中發(fā)送心跳報文,因此當業(yè)務(wù)網(wǎng)絡(luò)出現(xiàn)異常時不能通過物理主機備份功能 進行解決。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實施例提供一種虛擬機故障處理方法和設(shè)備,以避免在VM上安裝HA工具, 避免業(yè)務(wù)應(yīng)用中斷,且在業(yè)務(wù)網(wǎng)絡(luò)異常時對VM進行故障處理。
[0007]為了達到上述目的,本發(fā)明實施例提供一種虛擬機故障處理方法,該方法應(yīng)用于 包括多個物理主機的高可用性HA網(wǎng)絡(luò)中,各物理主機上運行有虛擬機VM,且所述多個物理主機中的一個物理主機上運行有虛擬路由器,所述方法包括以下步驟:
[0008]所述虛擬路由器利用網(wǎng)絡(luò)質(zhì)量分析NQA功能探測VM是否發(fā)生故障;
[0009]在所述VM發(fā)生故障時,所述虛擬路由器確定所述VM的故障類型;
[0010]所述虛擬路由器向物理主機發(fā)送故障通知消息,所述故障通知消息中攜帶所述VM 的地址信息以及所述VM的故障類型;
[0011]由所述物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM 時,利用所述VM的故障類型對所述VM進行故障處理。
[0012]所述虛擬路由器探測VM是否發(fā)生故障,以及確定所述VM的故障類型的過程,具體 包括:
[0013]當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能支持的業(yè)務(wù)應(yīng)用時,所述虛擬路由器向所述 VM發(fā)送業(yè)務(wù)探測報文;如果未收到業(yè)務(wù)探測響應(yīng)報文,則確定所述VM發(fā)生故障;所述虛擬 路由器向所述VM發(fā)送網(wǎng)絡(luò)探測報文;如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM的故障 類型為網(wǎng)絡(luò)連接故障;如果收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM的故障類型為VM業(yè)務(wù)異 常;
[0014]當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能不支持的業(yè)務(wù)應(yīng)用時,所述虛擬路由器向所述 VM發(fā)送網(wǎng)絡(luò)探測報文;如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM發(fā)生故障,并確定所 述VM的故障類型為網(wǎng)絡(luò)連接故障。
[0015]所述虛擬路由器向物理主機發(fā)送故障通知消息的過程,具體包括:
[0016]當在所述虛擬路由器上配置HA工具時,所述虛擬路由器通過所述HA工具向本虛 擬路由器所在的物理主機發(fā)送故障通知消息;由所述物理主機在利用所述VM的地址信息 確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進行故障處 理;在利用所述VM的地址信息確定所述VM不是運行在本物理主機的VM時,通過心跳消息 將所述VM的地址信息以及所述VM的故障類型通知給其它物理主機;或者,
[0017]當在所述虛擬路由器上配置HA代理時,所述虛擬路由器通過所述HA代理向所有 物理主機發(fā)送故障通知消息;由各物理主機在利用所述VM的地址信息確定所述VM為運行 在本物理主機的VM時,利用所述VM的故障類型對所述VM進行故障處理;在利用所述VM的 地址信息確定所述VM不是運行在本物理主機的VM時,丟棄本物理主機收到的故障通知消 肩、O
[0018]所述物理主機利用所述VM的故障類型對所述VM進行故障處理的過程,具體包括: 在所述VM的故障類型為VM業(yè)務(wù)異常時,所述物理主機重啟所述VM或者重新配置所述VM ; 或者,在所述VM的故障類型為網(wǎng)絡(luò)連接故障時,所述物理主機將所述VM遷移到所述HA網(wǎng) 絡(luò)中的其它物理主機上。
[0019]本發(fā)明實施例提供一種虛擬路由器,應(yīng)用于包括多個物理主機的高可用性HA網(wǎng) 絡(luò)中,各物理主機上運行有虛擬機VM,且所述多個物理主機中的一個物理主機上運行有虛 擬路由器,所述虛擬路由器具體包括:
[0020]探測模塊,用于利用網(wǎng)絡(luò)質(zhì)量分析NQA功能探測VM是否發(fā)生故障;
[0021]確定模塊,用于在所述VM發(fā)生故障時,確定所述VM的故障類型;
[0022]發(fā)送模塊,用于向物理主機發(fā)送故障通知消息,所述故障通知消息中攜帶所述VM 的地址信息以及所述VM的故障類型;[0023]由所述物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM 時,利用所述VM的故障類型對所述VM進行故障處理。
[0024]所述探測模塊,具體用于當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能支持的業(yè)務(wù)應(yīng)用時, 向所述VM發(fā)送業(yè)務(wù)探測報文;如果未收到業(yè)務(wù)探測響應(yīng)報文,則向所述VM發(fā)送網(wǎng)絡(luò)探測報 文;或者,當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能不支持的業(yè)務(wù)應(yīng)用時,向所述VM發(fā)送網(wǎng)絡(luò)探 測報文;
[0025]所述確定模塊,具體用于當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能支持的業(yè)務(wù)應(yīng)用時, 如果未收到業(yè)務(wù)探測響應(yīng)報文,則確定所述VM發(fā)生故障;在向所述VM發(fā)送網(wǎng)絡(luò)探測報文之 后,如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM的故障類型為網(wǎng)絡(luò)連接故障;如果收到 網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM的故障類型為VM業(yè)務(wù)異常;或者,當所述VM上的業(yè)務(wù)應(yīng) 用為NQA功能不支持的業(yè)務(wù)應(yīng)用時,如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM發(fā)生故 障,并確定所述VM的故障類型為網(wǎng)絡(luò)連接故障。
[0026]所述發(fā)送模塊,具體用于當在所述虛擬路由器上配置HA工具時,通過所述HA工具 向本虛擬路由器所在的物理主機發(fā)送故障通知消息;由所述物理主機在利用所述VM的地 址信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進行 故障處理;在利用所述VM的地址信息確定所述VM不是運行在本物理主機的VM時,通過心 跳消息將所述VM的地址信息以及所述VM的故障類型通知給其它物理主機;或者,
[0027]當在所述虛擬路由器上配置HA代理時,通過所述HA代理向所有物理主機發(fā)送故 障通知消息;由各物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的 VM時,利用所述VM的故障類型對所述VM進行故障處理;在利用所述VM的地址信息確定所 述VM不是運行在本物理主機的VM時,丟棄本物理主機收到的故障通知消息。
[0028]本發(fā)明實施例提供一種物理主機,應(yīng)用于包括多個物理主機的高可用性HA網(wǎng)絡(luò) 中,各物理主機上運行有虛擬機VM,且本物理主機上運行有虛擬路由器,所述物理主機具體 包括:
[0029]接收模塊,用于接收來自虛擬路由器的故障通知消息,所述故障通知消息中攜帶 VM的地址信息以及VM的故障類型;其中,所述故障通知消息是所述虛擬路由器利用網(wǎng)絡(luò)質(zhì) 量分析NQA功能探測到VM發(fā)生故障后發(fā)送的;
[0030]處理模塊,用于在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM 時,利用所述VM的故障類型對所述VM進行故障處理。
[0031]所述接收模塊,具體用于當在所述虛擬路由器上配置HA工具時,接收所述虛擬路 由器通過所述HA工具向本物理主機發(fā)送的故障通知消息;或者,
[0032]當在所述虛擬路由器上配置HA代理時,接收所述虛擬路由器通過所述HA代理向 本物理主機發(fā)送的故障通知消息;
[0033]所述處理模塊,具體用于當收到虛擬路由器通過HA工具發(fā)送的故障通知消息時, 在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故障 類型對所述VM進行故障處理;在利用所述VM的地址信息確定所述VM不是運行在本物理主 機的VM時,通過心跳消息將所述VM的地址信息以及所述VM的故障類型通知給其它物理主 機;或者,
[0034]當收到虛擬路由器通過HA代理發(fā)送的故障通知消息時,在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進行故障 處理;在利用所述VM的地址信息確定所述VM不是運行在本物理主機的VM時,丟棄本物理 主機收到的故障通知消息。
[0035]所述處理模塊,具體用于在所述VM的故障類型為VM業(yè)務(wù)異常時,重啟所述VM或 者重新配置所述VM ;或者,在所述VM的故障類型為網(wǎng)絡(luò)連接故障時,將所述VM遷移到所述 HA網(wǎng)絡(luò)中的其它物理主機上。
[0036]與現(xiàn)有技術(shù)相比,本發(fā)明實施例至少具有以下優(yōu)點:本發(fā)明實施例中,虛擬路由器 通過使用NQA (Network Quality Analyzer,網(wǎng)絡(luò)質(zhì)量分析)功能探測VM是否發(fā)生故障,并 在VM發(fā)生故障時,向物理主機發(fā)送攜帶VM的地址信息和故障類型的故障通知消息,由物 理主機在利用VM的地址信息確定VM為運行在本物理主機的VM時,利用VM的故障類型對 VM進行故障處理。在上述實現(xiàn)方式中,VM不需要安裝HA工具就可以實現(xiàn)VM檢測/備份功 能,從而避免在各VM上安裝HA工具。虛擬路由器作為業(yè)務(wù)網(wǎng)絡(luò)的接入設(shè)備,能夠使用NQA 功能探測VM與業(yè)務(wù)網(wǎng)絡(luò)的連通性,并在業(yè)務(wù)網(wǎng)絡(luò)出現(xiàn)異常時將VM遷移到其它物理主機上 運行,快速恢復網(wǎng)絡(luò)連通。VM不需要使用HA工具發(fā)送心跳報文,使得物理主機能準確及時 的對VM進行重啟或重新配置,從而避免業(yè)務(wù)應(yīng)用中斷,實現(xiàn)不同狀況下業(yè)務(wù)應(yīng)用的快速恢 復。
【專利附圖】
【附圖說明】
[0037]圖1是現(xiàn)有技術(shù)中虛擬平臺的HA技術(shù)的組網(wǎng)示意圖;
[0038]圖2是本發(fā)明實施例提供的一種虛擬機故障處理方法流程示意圖;
[0039]圖3是本發(fā)明實施例提出的在虛擬路由器上配置HA工具的網(wǎng)絡(luò)示意圖;
[0040]圖4是本發(fā)明實施例提出的在虛擬路由器上配置HA代理的網(wǎng)絡(luò)示意圖
[0041]圖5是本發(fā)明實施例提供的一種虛擬路由器的結(jié)構(gòu)示意圖;
[0042]圖6是本發(fā)明實施例提供的一種物理主機的結(jié)構(gòu)示意圖。
【具體實施方式】
[0043]針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明實施例一提供一種虛擬機故障處理方法,該 方法應(yīng)用于包括多個物理主機的HA網(wǎng)絡(luò)(即基于虛擬平臺的HA技術(shù))中,各物理主機上運 行有VM(可以運行多個VM),且多個物理主機加入到同一個HA集群。進一步的,在這多個物 理主機中,有一個物理主機上運行有虛擬路由器(vRouter),且該虛擬路由器上配置了 NQA 功能。
[0044]在上述應(yīng)用場景下,如圖2所示,該方法包括以下步驟:
[0045]步驟201,虛擬路由器利用NQA功能探測VM是否發(fā)生故障;在VM發(fā)生故障時,虛擬 路由器確定VM的故障類型,并執(zhí)行步驟202 ;在VM未發(fā)生故障時,結(jié)束流程,或循環(huán)探測。 VM的故障類型為VM業(yè)務(wù)異常或者網(wǎng)絡(luò)連接故障。
[0046]本發(fā)明實施例中,虛擬路由器探測VM是否發(fā)生故障,并在VM發(fā)生故障時,確定VM 的故障類型的過程,具體包括但不限于如下情況:
[0047]情況一、當VM上的業(yè)務(wù)應(yīng)用為NQA功能支持的業(yè)務(wù)應(yīng)用時,虛擬路由器向VM發(fā)送 業(yè)務(wù)探測報文;如果未收到業(yè)務(wù)探測響應(yīng)報文,則確定VM發(fā)生故障;如果收到業(yè)務(wù)探測響應(yīng)報文,則確定VM未發(fā)生故障。進一步的,在未收到業(yè)務(wù)探測響應(yīng)報文時,虛擬路由器向 VM發(fā)送網(wǎng)絡(luò)探測報文;如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定VM的故障類型為網(wǎng)絡(luò)連接故 障;如果收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定VM的故障類型為VM業(yè)務(wù)異常。
[0048]情況二、當VM上的業(yè)務(wù)應(yīng)用為NQA功能不支持的業(yè)務(wù)應(yīng)用時,虛擬路由器向VM發(fā) 送網(wǎng)絡(luò)探測報文;如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則虛擬路由器確定VM發(fā)生故障,并確定 VM的故障類型為網(wǎng)絡(luò)連接故障;如果收到網(wǎng)絡(luò)探測響應(yīng)報文,則虛擬路由器確定VM未發(fā)生 故障。
[0049]進一步的,虛擬路由器上配置的NQA功能支持的業(yè)務(wù)應(yīng)用具體包括但不限于: ICMP (Internet Control Message Protocol, Internet 控制報文協(xié)議)業(yè)務(wù)應(yīng)用、DHCP (Dynamic Host Configuration Protocol,動態(tài)主機配置協(xié)議)業(yè)務(wù)應(yīng)用、DNS(Domain Name System,域名系統(tǒng))業(yè)務(wù)應(yīng)用、FTP (File Transfer Protocol,文件傳輸協(xié)議)業(yè)務(wù)應(yīng)用、 HTTP (Hyper Text Transfer Protocol,超文本傳輸協(xié)議)業(yè)務(wù)應(yīng)用、UDP (User Datagram Protocol,用戶數(shù)據(jù)包協(xié)議)業(yè)務(wù)應(yīng)用、SNMP (Simple Network Management Protocol,簡 單網(wǎng)絡(luò)管理協(xié)議)業(yè)務(wù)應(yīng)用、TCP (Transmission Control Protocol,傳輸控制協(xié)議)業(yè) 務(wù)應(yīng)用、Voice (語音)業(yè)務(wù)應(yīng)用、Path-jitter (路徑抖動)業(yè)務(wù)應(yīng)用和DLSw (Data Link Switching,數(shù)據(jù)鏈路交換)業(yè)務(wù)應(yīng)用,因此虛擬路由器可基于相應(yīng)探測技術(shù)對VM的上述業(yè) 務(wù)應(yīng)用進行探測,以獲知VM當前是否支持上述業(yè)務(wù)應(yīng)用。
[0050]因此,對于NQA功能支持的業(yè)務(wù)應(yīng)用,虛擬路由器可以向VM發(fā)送業(yè)務(wù)探測報文,以 獲知VM當前是否支持業(yè)務(wù)應(yīng)用,繼而在未收到業(yè)務(wù)探測響應(yīng)報文時,確定故障類型為VM業(yè) 務(wù)異常,如果后續(xù)過程中也未收到網(wǎng)絡(luò)探測響應(yīng)報文,則進一步確定故障類型為網(wǎng)絡(luò)連接 故障,其業(yè)務(wù)應(yīng)用必然也出現(xiàn)VM業(yè)務(wù)異常。此外,對于NQA功能不支持的業(yè)務(wù)應(yīng)用,則虛擬 路由器不需要向VM發(fā)送業(yè)務(wù)探測報文,而是直接探測網(wǎng)絡(luò)連接故障的情況。
[0051]以VM上的業(yè)務(wù)應(yīng)用為HTTP業(yè)務(wù)應(yīng)用,虛擬路由器上的NQA功能支持HTTP業(yè)務(wù)應(yīng) 用為例進行說明。管理員首先在虛擬路由器上配置VM的HTTP業(yè)務(wù)應(yīng)用的地址信息,并在虛 擬路由器上配置HTTP探測功能,以通過HTTP探測功能探測VM當前是否支持HTTP業(yè)務(wù)應(yīng) 用?;贖TTP探測功能,虛擬路由器向VM發(fā)送HTTP業(yè)務(wù)探測報文,以對HTTP業(yè)務(wù)應(yīng)用情 況進行探測。如果未收到HTTP業(yè)務(wù)探測響應(yīng)報文,則虛擬路由器確定VM當前不支持HTTP 業(yè)務(wù)應(yīng)用,VM發(fā)生故障。如果收到HTTP業(yè)務(wù)探測響應(yīng)報文,則虛擬路由器確定VM當前支 持HTTP業(yè)務(wù)應(yīng)用,VM未發(fā)生故障。
[0052]進一步的,管理員還需要在虛擬路由器上配置ICMP探測功能,以通過ICMP探測功 能探測VM的網(wǎng)絡(luò)連接狀態(tài)?;诖?,虛擬路由器在未收到HTTP業(yè)務(wù)探測響應(yīng)報文時,基于 ICMP探測功能,虛擬路由器向VM發(fā)送ICMP網(wǎng)絡(luò)探測報文,以對VM的網(wǎng)絡(luò)連接狀態(tài)進行探 測。如果未收到ICMP網(wǎng)絡(luò)探測響應(yīng)報文,則虛擬路由器確定VM當前的網(wǎng)絡(luò)連接出現(xiàn)異常, 且此時VM的故障類型為網(wǎng)絡(luò)連接故障。如果收到ICMP網(wǎng)絡(luò)探測響應(yīng)報文,則虛擬路由器 確定VM當前的網(wǎng)絡(luò)連接正常,且此時VM的故障類型為VM業(yè)務(wù)異常。
[0053]步驟202,虛擬路由器向物理主機發(fā)送故障通知消息,該故障通知消息中攜帶VM 的地址信息和故障類型;物理主機在利用VM的地址信息確定VM為運行在本物理主機的VM 時,利用VM的故障類型對VM進行故障處理。
[0054]本發(fā)明實施例中,物理主機利用VM的故障類型對VM進行故障處理的過程,具體包括但不限于如下方式:在VM的故障類型為VM業(yè)務(wù)異常時,物理主機重啟VM或者重新配置 VM ;或者,在VM的故障類型為網(wǎng)絡(luò)連接故障時,物理主機將VM遷移到HA網(wǎng)絡(luò)中的其它物理 主機上。
[0055]本發(fā)明實施例中,虛擬路由器向物理主機發(fā)送故障通知消息,并由物理主機利用 故障通知消息進行相應(yīng)處理的過程,具體包括但不限于如下情況:
[0056]情況一、當在虛擬路由器上配置HA工具時,虛擬路由器通過HA工具向本虛擬路由 器所在的物理主機發(fā)送故障通知消息;物理主機在利用VM的地址信息確定VM為運行在本 物理主機的VM時,利用VM的故障類型對VM進行故障處理;在利用VM的地址信息確定VM不 是運行在本物理主機的VM時,通過心跳消息將VM的地址信息和VM的故障類型通知給其它 物理主機;其它物理主機在利用VM的地址信息確定VM為運行在本其它物理主機的VM時, 利用VM的故障類型對VM進行故障處理;在利用VM的地址信息確定VM不是運行在本其它 物理主機的VM時,丟棄收到的心跳消息。
[0057]如圖3所示,為在虛擬路由器上配置HA工具的網(wǎng)絡(luò)示意圖,虛擬路由器上配置的 HA工具與物理主機的HA代理之間存在HA工具控制通道,基于該HA工具控制通道,虛擬路 由器可以通過該HA工具向本虛擬路由器所在的物理主機發(fā)送故障通知消息(心跳消息的 一種新的消息類型),且該故障通知消息中至少攜帶了 VM的地址信息(如IP地址)和故障類型。
[0058]物理主機在收到虛擬路由器發(fā)送的故障通知消息后,如果利用VM的地址信息確 定VM為運行在本物理主機的VM,則利用VM的故障類型對VM進行故障處理,以完成故障恢 復。如果利用VM的地址信息確定VM不是運行在本物理主機的VM,則通過心跳消息將VM的 地址信息和VM的故障類型通知給其它物理主機。其中,通過對各物理主機之間交互的心跳 消息進行擴展,以使擴展后的心跳消息能夠承載VM的地址信息和VM的故障類型;基于此, 物理主機在確定VM不是運行在本物理主機的VM時,可以通過擴展后的心跳消息將VM的地 址信息和VM的故障類型通知給其它物理主機。
[0059]其它物理主機在收到心跳消息之后,如果利用VM的地址信息確定VM為運行在本 其它物理主機的VM,則利用VM的故障類型對VM進行故障處理,以完成故障恢復。如果利用 VM的地址信息確定VM不是運行在本其它物理主機的VM,則丟棄收到的心跳消息,不進行任 何操作。
[0060]其中,擴展后的心跳消息的擴展字段包括兩部分,一部分用于承載VM的地址信 息,另一部分用于承載VM的故障類型;擴展后的心跳消息中可以包括多個擴展字段,每個 擴展字段承載一個VM的地址信息和故障類型。
[0061]其中,故障類型可以基于故障級別體現(xiàn)。例如,心跳消息中攜帶的故障級別為第一 級別時,表示VM的故障類型為VM業(yè)務(wù)異常,此時物理主機利用VM的故障類型對VM進行故 障處理具體為:物理主機重啟VM或者重新配置VM。又例如,心跳消息中攜帶的故障級別為 第二級別時,表示VM的故障類型為網(wǎng)絡(luò)連接故障,此時物理主機利用VM的故障類型對VM 進行故障處理具體為:物理主機將VM遷移到HA網(wǎng)絡(luò)中的其它物理主機上。
[0062]情況二、當在虛擬路由器上配置HA代理時,虛擬路由器通過HA代理向所有物理主 機發(fā)送故障通知消息;由各物理主機在利用VM的地址信息確定VM為運行在本物理主機的 VM時,則利用VM的故障類型對VM進行故障處理;在利用VM的地址信息確定VM不是運行在本物理主機的VM時,則丟棄本物理主機收到的故障通知消息,此時不進行任何操作。
[0063]如圖4所示,為在虛擬路由器上配置HA代理的網(wǎng)絡(luò)示意圖,該虛擬路由器上的HA 代理能夠周期性的向其它所有物理主機的HA代理發(fā)送心跳消息。為了實現(xiàn)此功能,虛擬平 臺在創(chuàng)建HA集群時,需要支持添加虛擬路由器類型的設(shè)備(和原有物理主機類型的設(shè)備相 區(qū)分),即在創(chuàng)建HA集群時,可以在虛擬路由器上配置HA代理,且該HA代理的類型為虛擬 路由器類型。進一步的,對于HA集群中的虛擬路由器,其HA代理能夠周期性的向其它所有 物理主機的HA代理發(fā)送心跳消息;進一步的,各物理主機可以接收虛擬路由器發(fā)送的心跳 消息,而不會向虛擬路由器發(fā)送心跳消息。
[0064]基于上述特征,虛擬路由器在探測到VM發(fā)生故障后,虛擬路由器可以通過該HA代 理向所有物理主機發(fā)送故障通知消息(心跳消息的一種新的消息類型),且該故障通知消息 中至少攜帶了 VM的地址信息(如IP地址)和故障類型。其中,通過對虛擬路由器與各物理主 機之間交互的心跳消息進行擴展,以使擴展后的心跳消息能夠承載VM的地址信息和VM的 故障類型。擴展后的心跳消息的擴展字段包括兩部分,一部分用于承載VM的地址信息,另 一部分用于承載VM的故障類型;進一步的,擴展后的心跳消息中可以包括多個擴展字段, 每個擴展字段承載一個VM的地址信息和故障類型。
[0065]各物理主機在收到虛擬路由器發(fā)送的故障通知消息后,如果利用VM的地址信息 確定VM為運行在本物理主機的VM,則利用VM的故障類型對VM進行故障處理;如果利用VM 的地址信息確定VM不是運行在本物理主機的VM,則丟棄本物理主機收到的故障通知消息, 此時不進行任何操作。
[0066]其中,故障類型可以基于故障級別體現(xiàn)。例如,故障通知消息中攜帶的故障級別為 第一級別時,表示VM的故障類型為VM業(yè)務(wù)異常,此時物理主機利用VM的故障類型對VM進 行故障處理具體為:物理主機重啟VM或者重新配置VM。又例如,故障通知消息中攜帶的故 障級別為第二級別時,表示VM的故障類型為網(wǎng)絡(luò)連接故障,此時物理主機利用VM的故障類 型對VM進行故障處理具體為:物理主機將VM遷移到HA網(wǎng)絡(luò)中的其它物理主機上。
[0067]此外,當HA集群內(nèi)的物理主機在預設(shè)時間內(nèi)均沒有收到虛擬路由器發(fā)送的心跳 報文時,則確定虛擬路由器發(fā)生故障,此時需要由虛擬路由器所在的物理主機對虛擬路由 器進行重啟處理或重新配置處理,或者將虛擬路由器遷移到其它物理主機上,基于此實施 方式,可以提升虛擬路由器本身的可靠性,保證不會由于虛擬路由器自身的故障導致無法 對VM進行故障探測。
[0068]綜上所述,本發(fā)明實施例中,虛擬路由器通過使用NQA功能探測VM是否發(fā)生故障, 并在VM發(fā)生故障時,向物理主機發(fā)送攜帶VM的地址信息和故障類型的故障通知消息,由物 理主機在利用VM的地址信息確定VM為運行在本物理主機的VM時,利用VM的故障類型對 VM進行故障處理。在上述實現(xiàn)方式中,VM不需要安裝HA工具就可以實現(xiàn)VM檢測/備份功 能,從而避免在各VM上安裝HA工具。虛擬路由器作為業(yè)務(wù)網(wǎng)絡(luò)的接入設(shè)備,能夠使用NQA 功能探測VM與業(yè)務(wù)網(wǎng)絡(luò)的連通性,并在業(yè)務(wù)網(wǎng)絡(luò)出現(xiàn)異常時將VM遷移到其它物理主機上 運行,快速恢復網(wǎng)絡(luò)連通。VM不需要使用HA工具發(fā)送心跳報文,使得物理主機能準確及時 的對VM進行重啟或重新配置,從而避免業(yè)務(wù)應(yīng)用中斷,實現(xiàn)不同狀況下業(yè)務(wù)應(yīng)用的快速恢 復。
[0069]基于與上述方法同樣的發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種虛擬路由器,應(yīng)用于包括多個物理主機的高可用性HA網(wǎng)絡(luò)中,各物理主機上運行有虛擬機VM,且所述多個 物理主機中的一個物理主機上運行有虛擬路由器,如圖5所示,所述虛擬路由器具體包括:
[0070]探測模塊11,用于利用網(wǎng)絡(luò)質(zhì)量分析NQA功能探測VM是否發(fā)生故障;
[0071]確定模塊12,用于在所述VM發(fā)生故障時,確定所述VM的故障類型;
[0072]發(fā)送模塊13,用于向物理主機發(fā)送故障通知消息,所述故障通知消息中攜帶所述 VM的地址信息以及所述VM的故障類型;
[0073]由所述物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM 時,利用所述VM的故障類型對所述VM進行故障處理。
[0074]所述探測模塊11,具體用于當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能支持的業(yè)務(wù)應(yīng)用 時,向所述VM發(fā)送業(yè)務(wù)探測報文;如果未收到業(yè)務(wù)探測響應(yīng)報文,則向所述VM發(fā)送網(wǎng)絡(luò)探 測報文;或者,當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能不支持的業(yè)務(wù)應(yīng)用時,向所述VM發(fā)送網(wǎng) 絡(luò)探測報文;
[0075]所述確定模塊12,具體用于當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能支持的業(yè)務(wù)應(yīng)用 時,如果未收到業(yè)務(wù)探測響應(yīng)報文,則確定所述VM發(fā)生故障;在向所述VM發(fā)送網(wǎng)絡(luò)探測報 文之后,如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM的故障類型為網(wǎng)絡(luò)連接故障;如果 收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM的故障類型為VM業(yè)務(wù)異常;或者,當所述VM上的業(yè) 務(wù)應(yīng)用為NQA功能不支持的業(yè)務(wù)應(yīng)用時,如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM發(fā) 生故障,并確定所述VM的故障類型為網(wǎng)絡(luò)連接故障。
[0076]所述發(fā)送模塊13,具體用于當在所述虛擬路由器上配置HA工具時,通過所述HA工 具向本虛擬路由器所在的物理主機發(fā)送故障通知消息;由所述物理主機在利用所述VM的 地址信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進 行故障處理;在利用所述VM的地址信息確定所述VM不是運行在本物理主機的VM時,通過 心跳消息將所述VM的地址信息以及所述VM的故障類型通知給其它物理主機;或者,
[0077]當在所述虛擬路由器上配置HA代理時,通過所述HA代理向所有物理主機發(fā)送故 障通知消息;由各物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的 VM時,利用所述VM的故障類型對所述VM進行故障處理;在利用所述VM的地址信息確定所 述VM不是運行在本物理主機的VM時,丟棄本物理主機收到的故障通知消息。
[0078]其中,本發(fā)明裝置的各個模塊可以集成于一體,也可以分離部署。上述模塊可以合 并為一個模塊,也可以進一步拆分成多個子模塊。
[0079]基于與上述方法同樣的發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種物理主機,應(yīng)用 于包括多個物理主機的高可用性HA網(wǎng)絡(luò)中,各物理主機上運行有虛擬機VM,且本物理主機 上運行有虛擬路由器,如圖6所示,所述物理主機具體包括:
[0080]接收模塊21,用于接收來自虛擬路由器的故障通知消息,所述故障通知消息中攜 帶VM的地址信息以及VM的故障類型;其中,所述故障通知消息是虛擬路由器利用網(wǎng)絡(luò)質(zhì)量 分析NQA功能探測到VM發(fā)生故障后發(fā)送的;
[0081]處理模塊22,用于在利用所述VM的地址信息確定所述VM為運行在本物理主機的 VM時,利用所述VM的故障類型對所述VM進行故障處理。
[0082]所述接收模塊21,具體用于當在所述虛擬路由器上配置HA工具時,接收所述虛 擬路由器通過所述HA工具向本物理主機發(fā)送的故障通知消息;或者,當在所述虛擬路由器上配置HA代理時,接收所述虛擬路由器通過所述HA代理向本物理主機發(fā)送的故障通知消 息;
[0083]所述處理模塊22,具體用于當收到虛擬路由器通過HA工具發(fā)送的故障通知消息 時,在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故 障類型對所述VM進行故障處理;在利用所述VM的地址信息確定所述VM不是運行在本物理 主機的VM時,通過心跳消息將所述VM的地址信息以及所述VM的故障類型通知給其它物理 主機;或者,當收到虛擬路由器通過HA代理發(fā)送的故障通知消息時,在利用所述VM的地址 信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進行故 障處理;在利用所述VM的地址信息確定所述VM不是運行在本物理主機的VM時,丟棄本物 理主機收到的故障通知消息。
[0084]所述處理模塊22,具體用于在所述VM的故障類型為VM業(yè)務(wù)異常時,重啟所述VM 或者重新配置所述VM ;或者,在所述VM的故障類型為網(wǎng)絡(luò)連接故障時,將所述VM遷移到所 述HA網(wǎng)絡(luò)中的其它物理主機上。
[0085]其中,本發(fā)明裝置的各個模塊可以集成于一體,也可以分離部署。上述模塊可以合 并為一個模塊,也可以進一步拆分成多個子模塊。
[0086]通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助 軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更 佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的 部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若 干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā) 明各個實施例所述的方法。
[0087]本領(lǐng)域技術(shù)人員可以理解附圖只是一個優(yōu)選實施例的示意圖,附圖中的模塊或流 程并不一定是實施本發(fā)明所必須的。
[0088]本領(lǐng)域技術(shù)人員可以理解實施例中的裝置中的模塊可以按照實施例描述進行分 布于實施例的裝置中,也可以進行相應(yīng)變化位于不同于本實施例的一個或多個裝置中。上 述實施例的模塊可以合并為一個模塊,也可以進一步拆分成多個子模塊。
[0089]上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
[0090]以上公開的僅為本發(fā)明的幾個具體實施例,但是,本發(fā)明并非局限于此,任何本領(lǐng) 域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護范圍。
【權(quán)利要求】
1.一種虛擬機故障處理方法,該方法應(yīng)用于包括多個物理主機的高可用性HA網(wǎng)絡(luò)中, 各物理主機上運行有虛擬機VM,且所述多個物理主機中的一個物理主機上運行有虛擬路由器,其特征在于,所述方法包括以下步驟:所述虛擬路由器利用網(wǎng)絡(luò)質(zhì)量分析NQA功能探測VM是否發(fā)生故障;在所述VM發(fā)生故障時,所述虛擬路由器確定所述VM的故障類型;所述虛擬路由器向物理主機發(fā)送故障通知消息,所述故障通知消息中攜帶所述VM的地址信息以及所述VM的故障類型;由所述物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時, 利用所述VM的故障類型對所述VM進行故障處理。
2.如權(quán)利要求1所述的方法,其特征在于,所述虛擬路由器探測VM是否發(fā)生故障,以及確定所述VM的故障類型的過程,具體包括:當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能支持的業(yè)務(wù)應(yīng)用時,所述虛擬路由器向所述VM發(fā)送業(yè)務(wù)探測報文;如果未收到業(yè)務(wù)探測響應(yīng)報文,則確定所述VM發(fā)生故障;所述虛擬路由器向所述VM發(fā)送網(wǎng)絡(luò)探測報文;如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM的故障類型為網(wǎng)絡(luò)連接故障;如果收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM的故障類型為VM業(yè)務(wù)異常;當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能不支持的業(yè)務(wù)應(yīng)用時,所述虛擬路由器向所述VM 發(fā)送網(wǎng)絡(luò)探測報文;如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM發(fā)生故障,并確定所述 VM的故障類型為網(wǎng)絡(luò)連接故障。
3.如權(quán)利要求1所述的方法,其特征在于,所述虛擬路由器向物理主機發(fā)送故障通知消息的過程,具體包括:當在所述虛擬路由器上配置HA工具時,所述虛擬路由器通過所述HA工具向本虛擬路由器所在的物理主機發(fā)送故障通知消息;由所述物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進行故障處理;在利用所述VM的地址信息確定所述VM不是運行在本物理主機的VM時,通過心跳消息將所述 VM的地址信息以及所述VM的故障類型通知給其它物理主機;或者,`當在所述虛擬路由器上配置HA代理時,所述虛擬路由器通過所述HA代理向所有物理主機發(fā)送故障通知消息;由各物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進行故障處理;在利用所述VM的地址信息確定所述VM不是運行在本物理主機的VM時,丟棄本物理主機收到的故障通知消息。
4.如權(quán)利要求1或3所述的方法,其特征在于,所述物理主機利用所述VM的故障類型對所述VM進行故障處理的過程,具體包括:在所述VM的故障類型為VM業(yè)務(wù)異常時,所述物理主機重啟所述VM或者重新配置所述 VM ;或者,在所述VM的故障類型為網(wǎng)絡(luò)連接故障時,所述物理主機將所述VM遷移到所述HA 網(wǎng)絡(luò)中的其它物理主機上。
5.一種虛擬路由器,應(yīng)用于包括多個物理主機的高可用性HA網(wǎng)絡(luò)中,各物理主機上運行有虛擬機VM,且所述多個物理主機中的一個物理主機上運行有虛擬路由器,其特征在于, 所述虛擬路由器具體包括:探測模塊,用于利用網(wǎng)絡(luò)質(zhì)量分析NQA功能探測VM是否發(fā)生故障;確定模塊,用于在所述VM發(fā)生故障時,確定所述VM的故障類型;發(fā)送模塊,用于向物理主機發(fā)送故障通知消息,所述故障通知消息中攜帶所述VM的地址信息以及所述VM的故障類型;由所述物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時, 利用所述VM的故障類型對所述VM進行故障處理。
6.如權(quán)利要求5所述的虛擬路由器,其特征在于,所述探測模塊,具體用于當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能支持的業(yè)務(wù)應(yīng)用時,向所述VM發(fā)送業(yè)務(wù)探測報文;如果未收到業(yè)務(wù)探測響應(yīng)報文,則向所述VM發(fā)送網(wǎng)絡(luò)探測報文; 或者,當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能不支持的業(yè)務(wù)應(yīng)用時,向所述VM發(fā)送網(wǎng)絡(luò)探測報文;所述確定模塊,具體用于當所述VM上的業(yè)務(wù)應(yīng)用為NQA功能支持的業(yè)務(wù)應(yīng)用時,如果未收到業(yè)務(wù)探測響應(yīng)報文,則確定所述VM發(fā)生故障;在向所述VM發(fā)送網(wǎng)絡(luò)探測報文之后, 如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM的故障類型為網(wǎng)絡(luò)連接故障;如果收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM的故障類型為VM業(yè)務(wù)異常;或者,當所述VM上的業(yè)務(wù)應(yīng)用為 NQA功能不支持的業(yè)務(wù)應(yīng)用時,如果未收到網(wǎng)絡(luò)探測響應(yīng)報文,則確定所述VM發(fā)生故障,并確定所述VM的故障類型為網(wǎng)絡(luò)連接故障。
7.如權(quán)利要求5所述的虛擬路由器,其特征在于,所述發(fā)送模塊,具體用于當在所述虛擬路由器上配置HA工具時,通過所述HA工具向本虛擬路由器所在的物理主機發(fā)送故障通知消息;由所述物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進行故障處理;在利用所述VM的地址信息確定所述VM不是運行在本物理主機的VM時,通過心跳消息將所述VM的地址信息以及所述VM的故障類型通知給其它物理主機;或者,當在所述虛擬路由器上配置HA代理時,通過所述HA代理向所有物理主機發(fā)送故障通知消息;由各物理主機在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM 時,利用所述VM的故障類型對所述VM進行故障處理;在利用所述VM的地址信息確定所述 VM不是運行在本物理主機的VM時,丟棄本物理主機收到 的故障通知消息。
8.一種物理主機,應(yīng)用于包括多個物理主機的高可用性HA網(wǎng)絡(luò)中,各物理主機上運行有虛擬機VM,且本物理主機上運行有虛擬路由器,其特征在于,所述物理主機具體包括:接收模塊,用于接收來自虛擬路由器的故障通知消息,所述故障通知消息中攜帶VM的地址信息以及VM的故障類型;其中,所述故障通知消息是所述虛擬路由器利用網(wǎng)絡(luò)質(zhì)量分析NQA功能探測到VM發(fā)生故障后發(fā)送的;處理模塊,用于在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時, 利用所述VM的故障類型對所述VM進行故障處理。
9.如權(quán)利要求8所述的物理主機,其特征在于,所述接收模塊,具體用于當在所述虛擬路由器上配置HA工具時,接收所述虛擬路由器通過所述HA工具向本物理主機發(fā)送的故障通知消息;或者,當在所述虛擬路由器上配置HA代理時,接收所述虛擬路由器通過所述HA代理向本物理主機發(fā)送的故障通知消息;所述處理模塊,具體用于當收到虛擬路由器通過HA工具發(fā)送的故障通知消息時,在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進行故障處理;在利用所述VM的地址信息確定所述VM不是運行在本物理主機的 VM時,通過心跳消息將所述VM的地址信息以及所述VM的故障類型通知給其它物理主機; 或者, 當收到虛擬路由器通過HA代理發(fā)送的故障通知消息時,在利用所述VM的地址信息確定所述VM為運行在本物理主機的VM時,利用所述VM的故障類型對所述VM進行故障處理; 在利用所述VM的地址信息確定所述VM不是運行在本物理主機的VM時,丟棄本物理主機收到的故障通知消息。
10.如權(quán)利要求8或9所述的物理主機,其特征在于,所述處理模塊,具體用于在所述VM的故障類型為VM業(yè)務(wù)異常時,重啟所述VM或者重新配置所述VM;或者,在所述VM的故障類型為網(wǎng)絡(luò)連接故障時,將所述VM遷移到所述HA網(wǎng)絡(luò)中的其它物理主機上。
【文檔編號】H04L12/24GK103607296SQ201310535873
【公開日】2014年2月26日 申請日期:2013年11月1日 優(yōu)先權(quán)日:2013年11月1日
【發(fā)明者】李鑫, 黃杰姝 申請人:杭州華三通信技術(shù)有限公司