一種虛擬化環(huán)境下針對(duì)網(wǎng)絡(luò)服務(wù)的雙機(jī)熱備份容災(zāi)系統(tǒng)及其方法
【專利摘要】本發(fā)明提供一種虛擬化環(huán)境下針對(duì)網(wǎng)絡(luò)服務(wù)的雙機(jī)熱備份容災(zāi)系統(tǒng)及其方法,雙機(jī)熱備份容災(zāi)系統(tǒng)包括主服務(wù)器與備份服務(wù)器,主服務(wù)器與備份服務(wù)器通過網(wǎng)絡(luò)連接,主服務(wù)器上運(yùn)行主虛擬機(jī),備份服務(wù)器上運(yùn)行后備虛擬機(jī),后備虛擬機(jī)處于主虛擬機(jī)的應(yīng)用層語義上的替代狀態(tài),應(yīng)用層語義上的替代狀態(tài)是指在應(yīng)用層語義上后備虛擬機(jī)能夠代替主虛擬機(jī)進(jìn)行服務(wù),對(duì)任何客戶請(qǐng)求產(chǎn)生正確的輸出。通過可替代性規(guī)則比較主虛擬機(jī)與后備虛擬機(jī)的輸出,判斷是否需要進(jìn)行備份,從而有效的降低了備份頻率,在保證快速恢復(fù)的基礎(chǔ)上提升了系統(tǒng)的性能,本發(fā)明極大降低了系統(tǒng)開銷,提高了系統(tǒng)的吞吐量。
【專利說明】一種虛擬化環(huán)境下針對(duì)網(wǎng)絡(luò)服務(wù)的雙機(jī)熱備份容災(zāi)系統(tǒng)及其方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及虛擬化環(huán)境下的高可靠容災(zāi)技術(shù),具體地,涉及一種虛擬化環(huán)境下針對(duì)網(wǎng)絡(luò)服務(wù)的雙機(jī)熱備份容災(zāi)系統(tǒng)及其方法。
【背景技術(shù)】
[0002]當(dāng)前,網(wǎng)絡(luò)化服務(wù)是云計(jì)算與數(shù)據(jù)中心的主要服務(wù)形式。然而,由于斷電、機(jī)器硬件故障、災(zāi)難或者人為因素(統(tǒng)稱故障)的影響,使得這些網(wǎng)絡(luò)應(yīng)用停止對(duì)外服務(wù)、丟失數(shù)據(jù)的情況時(shí)有發(fā)生,不僅影響用戶的使用,還會(huì)帶來經(jīng)濟(jì)上的損失。因此,如何提高網(wǎng)絡(luò)服務(wù)器的容災(zāi),在故障后快速恢復(fù)對(duì)外的服務(wù)成了許多學(xué)者和公司的研究熱點(diǎn)。
[0003]在現(xiàn)有的研究成果與產(chǎn)品中,有一部分是在虛擬化環(huán)境下實(shí)現(xiàn)的。
[0004]隨著計(jì)算機(jī)技術(shù),特別是網(wǎng)絡(luò)技術(shù)的快速發(fā)展和廣泛應(yīng)用,人們對(duì)軟件的可移植性,特別是軟件在網(wǎng)絡(luò)中移植的需求日益迫切,軟件兼容性和可移植性也變得越來越重要。但由于計(jì)算機(jī)的歷史發(fā)展過程中,產(chǎn)生了眾多不同的、不相兼容的操作系統(tǒng)和指令集架構(gòu)(Instruction Set Architecture, ISA),從而導(dǎo)致了軟件的可移植性被局限在相似的平臺(tái)上。而在一個(gè)大型網(wǎng)絡(luò)中可能包含基于各種ISA和操作系統(tǒng)的計(jì)算機(jī),這就造成了軟件可移植性需求和現(xiàn)狀之間的矛盾越來越尖銳。而虛擬機(jī)(Virtual machine, VM)技術(shù)的出現(xiàn)消除了對(duì)軟件運(yùn)行平臺(tái)的這些限制,從而有可能提供更高程度的兼容性和可移植性。虛擬機(jī)技術(shù)通過在硬件執(zhí)行平臺(tái)上加一層軟件,從而屏蔽掉平臺(tái)的差異性,或者說在一個(gè)平臺(tái)上模擬出另一個(gè)平臺(tái)或者多個(gè)平臺(tái)。
[0005]目前,基于虛擬機(jī)技術(shù)的容災(zāi)解決方案可以分為檢查點(diǎn)(checkpointing)技術(shù)和步鎖(1ckstepping)技術(shù)。
[0006]Checkpointing技術(shù)利用兩臺(tái)物理設(shè)備形成主服務(wù)器/后備服務(wù)器模式,對(duì)同一個(gè)應(yīng)用/虛擬機(jī)進(jìn)行備份,通過虛擬機(jī)的遷移技術(shù),定期的將主服務(wù)器虛擬機(jī)狀態(tài)備份到后備服務(wù)器中,從而實(shí)現(xiàn)災(zāi)備。后備服務(wù)器的虛擬機(jī)處于非運(yùn)行狀態(tài),在主服務(wù)器故障后能快速恢復(fù)到主服務(wù)器的前一狀態(tài),并繼續(xù)保留有原先的所有網(wǎng)絡(luò)連接,這樣客戶端感覺不到服務(wù)端發(fā)生了故障且從故障中恢復(fù)。但是,為了保證虛擬機(jī)間的狀態(tài)一致性,必須進(jìn)行周期性的頻繁備份(20-40ms —次),導(dǎo)致主服務(wù)器的吞吐量會(huì)極大降低,CPU開銷過大。同時(shí)Checkpointing技術(shù)將所有服務(wù)器發(fā)送到客戶端的數(shù)據(jù)包保存在一個(gè)緩沖中,只有當(dāng)一次備份完成后,才能釋放這些數(shù)據(jù)包,這導(dǎo)致網(wǎng)絡(luò)延遲的增加。
[0007]Lockst印ping技術(shù)采用雙機(jī)并行運(yùn)行的方式保證主服務(wù)器后備服務(wù)器的狀態(tài)一致,使得在主服務(wù)器故障后客戶端能直接與后備服務(wù)器連接,快速從故障中恢復(fù)。但是Lockstepping技術(shù)只能適用于給虛擬機(jī)分配單個(gè)處理器的情況,對(duì)于多處理器虛擬機(jī)的性能擴(kuò)展性很差,多于雙處理器的虛擬機(jī)性能降低至單處理器是的1/7。另外,對(duì)于確定的指令,主后備服務(wù)器的虛擬機(jī)可以直接并行運(yùn)行,而對(duì)于非確定的指令則需要在主后備服務(wù)器虛擬機(jī)間做指令級(jí)別的同步,這也增加了系統(tǒng)的開銷。
【發(fā)明內(nèi)容】
[0008]有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明提供一種雙機(jī)熱備份容災(zāi)系統(tǒng)。該方案中主虛擬機(jī)和后備虛擬機(jī)并行運(yùn)行,根據(jù)客戶端發(fā)送的請(qǐng)求生成各自的輸出結(jié)果,比較主虛擬機(jī)和后備虛擬機(jī)的輸出結(jié)果,如果不一致,需要進(jìn)行備份,這樣既保證了故障后的快速恢復(fù),又有效的降低了系統(tǒng)開銷。
[0009]本發(fā)明提供一種雙機(jī)熱備份容災(zāi)系統(tǒng),用于虛擬化環(huán)境下的網(wǎng)絡(luò)服務(wù),雙機(jī)熱備份容災(zāi)系統(tǒng)包括主服務(wù)器與備份服務(wù)器,主服務(wù)器與備份服務(wù)器通過網(wǎng)絡(luò)連接,其特征在于:主服務(wù)器上運(yùn)行主虛擬機(jī),備份服務(wù)器上運(yùn)行后備虛擬機(jī),后備虛擬機(jī)處于主虛擬機(jī)的應(yīng)用層語義上的替代狀態(tài),應(yīng)用層語義上的替代狀態(tài)是指在應(yīng)用層語義上后備虛擬機(jī)能夠代替主虛擬機(jī)進(jìn)行服務(wù),對(duì)任何客戶請(qǐng)求產(chǎn)生正確的輸出。
[0010]進(jìn)一步地,主服務(wù)器將客戶端請(qǐng)求分別發(fā)送給主虛擬機(jī)與后備虛擬機(jī),主虛擬機(jī)與后備虛擬機(jī)并行運(yùn)行生成各自的響應(yīng)數(shù)據(jù)包。
[0011]進(jìn)一步地,雙機(jī)熱備份容災(zāi)系統(tǒng)還包括運(yùn)行在主虛擬機(jī)上的主備份管理器,以及運(yùn)行在后備虛擬機(jī)上的后備備份管理器,后備備份管理器用于將后備虛擬機(jī)生成的響應(yīng)數(shù)據(jù)包發(fā)送到主備份管理器,主備份管理器用于比較主虛擬機(jī)與后備虛擬機(jī)的響應(yīng)數(shù)據(jù)包是否一致,如果一致,后備虛擬機(jī)處于主虛擬機(jī)的可替代狀態(tài),主備份管理器將主虛擬機(jī)生成的響應(yīng)數(shù)據(jù)包發(fā)給客戶端;如果不一致,后備虛擬機(jī)不處于主虛擬機(jī)的可替代狀態(tài)。
[0012]進(jìn)一步地,如果后備虛擬機(jī)不處于主虛擬機(jī)的可替代狀態(tài),主備份管理器將主虛擬機(jī)的當(dāng)前狀態(tài)備份到后備虛擬機(jī)。
[0013]進(jìn)一步地,備份為非周期備份。
[0014]進(jìn)一步地,備份到后備虛擬機(jī)為增量備份。
[0015]系統(tǒng)中采用了增量備份方式,以降低狀態(tài)備份的開銷。不同于現(xiàn)有的檢查點(diǎn)技術(shù),本發(fā)明中采用雙機(jī)并行運(yùn)行,因此在兩次狀態(tài)備份間,后備虛擬機(jī)的狀態(tài)也會(huì)發(fā)生變化,這導(dǎo)致只備份主虛擬機(jī)狀態(tài)增量是不夠的。為了減少備份期間的傳送內(nèi)容,本發(fā)明中采用以空間換時(shí)間的方法。在主虛擬機(jī)與后備虛擬機(jī)第一次建立連接時(shí),將主虛擬機(jī)的狀態(tài)完全傳輸給后備虛擬機(jī),并同時(shí)存入后備服務(wù)器的一個(gè)臨時(shí)緩存中。每次備份主虛擬機(jī)狀態(tài)時(shí),僅傳輸在上次備份后發(fā)生改變的內(nèi)容。首先將這些內(nèi)容更新入后備服務(wù)器臨時(shí)緩存中,然后將臨時(shí)緩存中內(nèi)容全備份入后備虛擬機(jī),這就避免了兩次備份間后備虛擬機(jī)狀態(tài)變化對(duì)增量備份所產(chǎn)生的影響。
[0016]進(jìn)一步地,后備備份管理器檢測(cè)主虛擬機(jī)的心跳數(shù)據(jù)包,如果后備備份管理器沒有接收到主虛擬機(jī)的心跳數(shù)據(jù)包,客戶端請(qǐng)求數(shù)據(jù)包直接到達(dá)后備虛擬機(jī),后備虛擬機(jī)產(chǎn)生響應(yīng)數(shù)據(jù)包之后,后備備份管理器將響應(yīng)數(shù)據(jù)包直接發(fā)給客戶端。
[0017]系統(tǒng)中引入心跳包機(jī)制,用于后備虛擬機(jī)監(jiān)測(cè)主虛擬機(jī)是否仍繼續(xù)存活。如果后備虛擬機(jī)沒有接收到心跳數(shù)據(jù)包,就認(rèn)為主虛擬機(jī)已經(jīng)故障,將采取故障恢復(fù)措施以替代主虛擬機(jī)繼續(xù)提供服務(wù)。在這種情況下,客戶端發(fā)送過來的請(qǐng)求數(shù)據(jù)包將直接到達(dá)后備虛擬機(jī),后備虛擬機(jī)產(chǎn)生響應(yīng)數(shù)據(jù)包之后,不再發(fā)送給主虛擬機(jī),而是直接發(fā)給客戶端。該情況下,客戶端收到的數(shù)據(jù)包來源從主虛擬機(jī)改為后備虛擬機(jī),并不會(huì)發(fā)現(xiàn)服務(wù)端進(jìn)行了一次快速的故障恢復(fù)。[0018]進(jìn)一步地,在內(nèi)存?zhèn)浞莘矫?,啟用了虛擬機(jī)監(jiān)控器提供的影子頁表機(jī)制,獲取在上次狀態(tài)備份之后被修改的頁面。其基本原理是將所有虛擬機(jī)的頁面都改成寫保護(hù),這樣,一旦對(duì)某個(gè)頁面進(jìn)行寫操作,就會(huì)觸發(fā)一個(gè)異常并進(jìn)入異常處理程序。
[0019]本發(fā)明還提供一種雙機(jī)熱備份容災(zāi)方法,其特征在于,包括以下步驟:
[0020](I)主服務(wù)器通過流量控制,將客戶端發(fā)出的請(qǐng)求分別發(fā)送到主虛擬機(jī)和后備虛擬機(jī);
[0021](2)主虛擬機(jī)與后備虛擬機(jī)根據(jù)客戶請(qǐng)求并行運(yùn)行,生成各自的響應(yīng)數(shù)據(jù)包;
[0022](3)后備備份管理器將后備虛擬機(jī)生成的響應(yīng)數(shù)據(jù)包發(fā)送到主備份管理器;
[0023](4)主備份管理器用于比較主虛擬機(jī)與后備虛擬機(jī)的響應(yīng)數(shù)據(jù)包是否一致,如果一致,后備虛擬機(jī)處于主虛擬機(jī)的應(yīng)用層語義上的替代狀態(tài),將主虛擬機(jī)的響應(yīng)數(shù)據(jù)包發(fā)給客戶端;如果不一致,后備虛擬機(jī)不處于主虛擬機(jī)的應(yīng)用層語義上的替代狀態(tài),主備份管理器將主虛擬機(jī)的當(dāng)前狀態(tài)備份到后備虛擬機(jī)。
[0024]與現(xiàn)有技術(shù)相比,本發(fā)明提供的雙機(jī)熱備份容災(zāi)系統(tǒng)及其方法,具有以下有益的技術(shù)效果:
[0025](I)系統(tǒng)實(shí)現(xiàn)中解決了主后備服務(wù)器雙機(jī)并行情況下,存儲(chǔ)訪問的一致性,網(wǎng)絡(luò)協(xié)議的一致性,多核狀態(tài)CPU指令一致性等技術(shù)問題。
[0026](2)基于可替代性規(guī)則,本方案中主服務(wù)器狀態(tài)的備份為非周期性,備份間隔大于I秒,頻率相對(duì)于現(xiàn)有技術(shù)降低兩個(gè)數(shù)量級(jí)以上,這極大降低了系統(tǒng)開銷,基本消除虛擬機(jī)狀態(tài)備份對(duì)主服務(wù)器的性能干擾。
[0027](3)相比于現(xiàn)有解決方案,本發(fā)明中主服務(wù)器不需等待備份完成即可交付輸出結(jié)果,提高了系統(tǒng)的吞吐量。
[0028](4)本發(fā)明方案能夠提供快速災(zāi)備恢復(fù),對(duì)于網(wǎng)絡(luò)服務(wù)、數(shù)據(jù)庫服務(wù)的災(zāi)備恢復(fù)時(shí)間快于現(xiàn)有技術(shù)。
【專利附圖】
【附圖說明】
[0029]圖1是現(xiàn)有檢查點(diǎn)技術(shù)的流程示意圖;
[0030]圖2是現(xiàn)有步鎖技術(shù)的流程不意圖;
[0031]圖3是本發(fā)明的一個(gè)實(shí)施例的雙機(jī)熱備份容災(zāi)系統(tǒng)的流程示意圖;
[0032]圖4是本發(fā)明的一個(gè)實(shí)施例的雙機(jī)熱備份容災(zāi)系統(tǒng)的增量備份的過程示意圖。
【具體實(shí)施方式】
[0033]以下將結(jié)合附圖對(duì)本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進(jìn)一步說明,以充分地了解本發(fā)明的目的、特征和效果。
[0034]圖1是現(xiàn)有檢查點(diǎn)技術(shù)的流程示意圖。主虛擬機(jī)處理客戶端請(qǐng)求并產(chǎn)生響應(yīng),后備虛擬機(jī)則處于非運(yùn)行狀態(tài)。在主服務(wù)器中有定時(shí)模塊產(chǎn)生周期性事件,備份管理器在收到事件后獲取主虛擬機(jī)狀態(tài),將在上一次備份后改變的狀態(tài)備份到后備虛擬機(jī)上。
[0035]圖2是現(xiàn)有步鎖技術(shù)的流程示意圖。主虛擬機(jī)與后備虛擬機(jī)并行執(zhí)行客戶端發(fā)來的請(qǐng)求,主虛擬機(jī)將響應(yīng)發(fā)回到客戶端。由于非確定的指令(例如內(nèi)存訪問、時(shí)鐘中斷等)則需要在虛擬機(jī)間做指令級(jí)別的同步,以避免兩邊的狀態(tài)發(fā)生差異。[0036]本發(fā)明提供一種雙機(jī)熱備份容災(zāi)系統(tǒng),用于虛擬化環(huán)境下的網(wǎng)絡(luò)服務(wù),雙機(jī)熱備份容災(zāi)系統(tǒng)包括主服務(wù)器與備份服務(wù)器,主服務(wù)器與備份服務(wù)器通過網(wǎng)絡(luò)連接,其特征在于:主服務(wù)器上運(yùn)行主虛擬機(jī),備份服務(wù)器上運(yùn)行后備虛擬機(jī),后備虛擬機(jī)處于主虛擬機(jī)的應(yīng)用層語義上的替代狀態(tài),應(yīng)用層語義上的替代狀態(tài)是指在應(yīng)用層語義上后備虛擬機(jī)能夠代替主虛擬機(jī)進(jìn)行服務(wù),對(duì)任何客戶請(qǐng)求產(chǎn)生正確的輸出。
[0037]客戶端發(fā)送過來的請(qǐng)求數(shù)據(jù)包首先抵達(dá)外圍交換機(jī),交換機(jī)通過目的MAC地址來決定轉(zhuǎn)發(fā)端口。當(dāng)主虛擬機(jī)提供服務(wù)時(shí),交換機(jī)學(xué)習(xí)到的虛擬機(jī)MAC地址對(duì)應(yīng)端口為主服務(wù)器網(wǎng)卡端口,因此請(qǐng)求數(shù)據(jù)包被發(fā)往主服務(wù)器。
[0038]主服務(wù)器將客戶端請(qǐng)求分別發(fā)送給主虛擬機(jī)與后備虛擬機(jī),主虛擬機(jī)與后備虛擬機(jī)并行運(yùn)行生成各自的響應(yīng)數(shù)據(jù)包。
[0039]雙機(jī)熱備份容災(zāi)系統(tǒng)還包括運(yùn)行在主虛擬機(jī)上的主備份管理器,以及運(yùn)行在后備虛擬機(jī)上的后備備份管理器,后備備份管理器用于將后備虛擬機(jī)生成的響應(yīng)數(shù)據(jù)包發(fā)送到主備份管理器,主備份管理器用于比較主虛擬機(jī)與后備虛擬機(jī)的響應(yīng)數(shù)據(jù)包是否一致,如果一致,后備虛擬機(jī)處于主虛擬機(jī)的可替代狀態(tài),主備份管理器將主虛擬機(jī)生成的響應(yīng)數(shù)據(jù)包發(fā)給客戶端;如果不一致,后備虛擬機(jī)不處于主虛擬機(jī)的可替代狀態(tài)。
[0040]如果后備虛擬機(jī)不處于主虛擬機(jī)的可替代狀態(tài),主備份管理器將主虛擬機(jī)的當(dāng)前狀態(tài)備份到后備虛擬機(jī)。
[0041]備份為非周期備份。
[0042]備份到后備虛擬機(jī)為增量備份。
[0043]系統(tǒng)中采用了增量備份方式,以降低狀態(tài)備份的開銷。不同于現(xiàn)有的檢查點(diǎn)技術(shù),本發(fā)明中采用雙機(jī)并行運(yùn)行,因此在兩次狀態(tài)備份間,后備虛擬機(jī)的狀態(tài)也會(huì)發(fā)生變化,這導(dǎo)致只備份主虛擬機(jī)狀態(tài)增量是不夠的。為了減少備份期間的傳送內(nèi)容,本發(fā)明中采用以空間換時(shí)間的方法。在主虛擬機(jī)與后備虛擬機(jī)第一次建立連接時(shí),將主虛擬機(jī)的狀態(tài)完全傳輸給后備虛擬機(jī),并同時(shí)存入后備服務(wù)器的一個(gè)臨時(shí)緩存中。每次備份主虛擬機(jī)狀態(tài)時(shí),僅傳輸在上次備份后發(fā)生改變的內(nèi)容。首先將這些內(nèi)容更新入后備服務(wù)器臨時(shí)緩存中,然后將臨時(shí)緩存中內(nèi)容全備份入后備虛擬機(jī),這就避免了兩次備份間后備虛擬機(jī)狀態(tài)變化對(duì)增量備份所產(chǎn)生的影響。
[0044]后備備份管理器檢測(cè)主虛擬機(jī)的心跳數(shù)據(jù)包,如果后備備份管理器沒有接收到主虛擬機(jī)的心跳數(shù)據(jù)包,客戶端請(qǐng)求數(shù)據(jù)包直接到達(dá)后備虛擬機(jī),后備虛擬機(jī)產(chǎn)生響應(yīng)數(shù)據(jù)包之后,后備備份管理器將響應(yīng)數(shù)據(jù)包直接發(fā)給客戶端。
[0045]系統(tǒng)中引入心跳包機(jī)制,用于后備虛擬機(jī)監(jiān)測(cè)主虛擬機(jī)是否仍繼續(xù)存活。如果后備虛擬機(jī)沒有接收到心跳數(shù)據(jù)包,就認(rèn)為主虛擬機(jī)已經(jīng)故障,將采取故障恢復(fù)措施以替代主虛擬機(jī)繼續(xù)提供服務(wù)。后備服務(wù)器將會(huì)向交換機(jī)發(fā)送一個(gè)ARP數(shù)據(jù)包,該數(shù)據(jù)包的源MAC地址就是后備虛擬機(jī)的MAC地址。這使得交換機(jī)學(xué)習(xí)到一個(gè)新的MAC地址到端口的映射條目。之后客戶端發(fā)送過來的目的MAC地址是虛擬機(jī)的數(shù)據(jù)包,將直接發(fā)送給后備服務(wù)器的網(wǎng)卡。后備虛擬機(jī)產(chǎn)生響應(yīng)數(shù)據(jù)包之后,不再發(fā)送給主虛擬機(jī),而是直接發(fā)給客戶端。該情況下,客戶端收到的數(shù)據(jù)包來源從主虛擬機(jī)改為后備虛擬機(jī),并不會(huì)發(fā)現(xiàn)服務(wù)端進(jìn)行了一次快速的故障恢復(fù)。
[0046]在內(nèi)存?zhèn)浞莘矫?,啟用了虛擬機(jī)監(jiān)控器提供的影子頁表機(jī)制。獲取在上次狀態(tài)備份之后哪些頁面被修改。其基本原理是將所有虛擬機(jī)的頁面都改成寫保護(hù),這樣,一旦對(duì)某個(gè)頁面進(jìn)行寫操作,就會(huì)觸發(fā)一個(gè)異常并進(jìn)入異常處理程序。借助于“影子頁表”機(jī)制,能夠很容易獲取在上次狀態(tài)備份之后,哪些頁面被修改。
[0047]圖3是本實(shí)施例的雙機(jī)熱備份容災(zāi)系統(tǒng)的流程示意圖,具體過程如下:
[0048]步驟1、主服務(wù)器將客戶端發(fā)出的請(qǐng)求包分發(fā)到主虛擬機(jī)與后備虛擬機(jī),過程如下:首先,客戶端發(fā)送過來的請(qǐng)求數(shù)據(jù)包通過外圍交換機(jī)被交換機(jī)發(fā)送到主服務(wù)器。主服務(wù)器接收數(shù)據(jù)包后送到軟件網(wǎng)橋,在軟件網(wǎng)橋中通過配置Linux自帶的工具TC (TrafficControl)來實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的截獲和分發(fā),將數(shù)據(jù)包發(fā)送到主虛擬機(jī)與后備虛擬機(jī)。
[0049]TC的配置方法如下:
[0050]#tc qdisc add dev vif1.0root handlel:prio
[0051]#tc filter add dev vifl.0parentl: protocol ip prio 10u32matchu3200flowidl:2action mirred egress mirror dev ethO
[0052]#tc filter add dev vifl.0parentl: protocol arp prio I lu32matchu3200flowidl:2action mirred egress mirror dev ethO
[0053]步驟2、主虛擬機(jī)與后備虛擬機(jī)根據(jù)應(yīng)用層語義并行執(zhí)行,生成各自的輸出,后備虛擬機(jī)將輸出發(fā)送到主服務(wù)器。通過配置TC實(shí)現(xiàn)后備虛擬機(jī)輸出的攔截與轉(zhuǎn)發(fā),具體方法如下:
[0054]#tc qdisc add dev vifl.0ingress
[0055]#tc filter add dev vifl.0parent ffff:protocol ip priol0u32matchu3200flowidl:2action mirred egress redirect dev ethO
[0056]步驟3、主服務(wù)器的管理器比較主虛擬機(jī)與后備虛擬機(jī)生成各自的輸出是否滿足可替代性規(guī)則。具體的,在管理器中實(shí)現(xiàn)兩個(gè)隊(duì)列形式的虛擬接口,將主虛擬機(jī)與后備虛擬機(jī)的輸出分別重定向入一個(gè)接口。管理器通過對(duì)兩隊(duì)列中的包進(jìn)行逐一比較,判斷后備虛擬機(jī)是否仍是主虛擬機(jī)的可替代狀態(tài)。通過配置TC實(shí)現(xiàn)輸出的重定向,具體方法如下:
[0057]a)主虛擬機(jī)輸出包重定向:
[0058]#tc qdisc add dev vifl.0ingress
[0059]#tc filter add dev vifl.0parent ffff:protocol ip priol0u32matchu3200flowidl:2action mirred egress redirect dev ifbO
[0060]b)后備虛擬機(jī)輸出包重定向:
[0061]#tc qdisc add dev ethOingress
[0062]#tc filter add dev ethOparent ffff: protocol ip prio10u32matchu3200flowidl:2action mirred egress redirect dev ifbl
[0063]步驟4、將主服務(wù)器的輸出作為響應(yīng)包發(fā)回給客戶端。
[0064]步驟5、若判斷后備虛擬機(jī)不是主虛擬機(jī)的可替代狀態(tài),則將主虛擬機(jī)的當(dāng)前狀態(tài)備份到后備虛擬機(jī)。在主服務(wù)器上和后備服務(wù)器的管理器中上都有一個(gè)備份守護(hù)進(jìn)程,負(fù)責(zé)對(duì)狀態(tài)的發(fā)送、接收和對(duì)虛擬機(jī)狀態(tài)的更新。
[0065]圖4是本實(shí)施例的雙機(jī)熱備份容災(zāi)系統(tǒng)的增量備份的過程示意圖。
[0066]步驟1、主服務(wù)器上的備份管理器獲取主虛擬機(jī)在上次備份后狀態(tài)變更部分。
[0067]步驟2、備份管理器將變更部分發(fā)送到后備虛擬機(jī)。[0068]步驟3、后備虛擬機(jī)將變更部分更新臨時(shí)緩存。
[0069]步驟4、將臨時(shí)緩存內(nèi)容全部備份入后備虛擬機(jī)。
[0070]在磁盤文件備份方面,通過修改磁盤設(shè)備的后端驅(qū)動(dòng),截獲主虛擬機(jī)與后備虛擬機(jī)對(duì)磁盤的寫入操作。在兩次備份間主虛擬機(jī)與后備虛擬機(jī)的磁盤寫入數(shù)據(jù)都被暫時(shí)保存在各自的臨時(shí)緩存中。當(dāng)備份時(shí)用主虛擬機(jī)臨時(shí)緩存中內(nèi)容替換備份虛擬機(jī)臨時(shí)緩存的內(nèi)容,然后分別寫入磁盤。
[0071]在設(shè)備備份方面,由于設(shè)備狀態(tài)涉及虛擬機(jī)監(jiān)控器的前后端模型,獲取較困難,因此選用丟棄主虛擬機(jī)與后備虛擬機(jī)設(shè)備驅(qū)動(dòng)之前的狀態(tài)。當(dāng)備份完成后重新建立連接來使得設(shè)備狀態(tài)保持一致。
[0072]本發(fā)明提供的雙機(jī)熱備份容災(zāi)系統(tǒng)及其方法,解決了主后備服務(wù)器雙機(jī)并行情況下,存儲(chǔ)訪問的一致性,網(wǎng)絡(luò)協(xié)議的一致性,多核狀態(tài)CPU指令一致性等技術(shù)問題;基于可替代性規(guī)則,本方案中主服務(wù)器狀態(tài)的備份為非周期性,備份間隔大于I秒,頻率相對(duì)于現(xiàn)有技術(shù)降低兩個(gè)數(shù)量級(jí)以上,這極大降低了系統(tǒng)開銷,基本消除虛擬機(jī)狀態(tài)備份對(duì)主服務(wù)器的性能干擾;主服務(wù)器不需等待備份完成即可交付輸出結(jié)果,提高了系統(tǒng)的吞吐量;提供快速災(zāi)備恢復(fù),對(duì)于網(wǎng)絡(luò)服務(wù)、數(shù)據(jù)庫服務(wù)的災(zāi)備恢復(fù)時(shí)間快于現(xiàn)有技術(shù)。
[0073]以上詳細(xì)描述了本發(fā)明的較佳具體實(shí)施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)人員無需創(chuàng)造性勞動(dòng)就可以根據(jù)本發(fā)明的構(gòu)思做出諸多修改和變化。因此,凡本【技術(shù)領(lǐng)域】中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過邏輯分析、推理或者有限的實(shí)驗(yàn)可以得到的技術(shù)方案,皆應(yīng)在由權(quán)利要求書所確定的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種雙機(jī)熱備份容災(zāi)系統(tǒng),用于虛擬化環(huán)境下的網(wǎng)絡(luò)服務(wù),所述雙機(jī)熱備份容災(zāi)系統(tǒng)包括主服務(wù)器與備份服務(wù)器,所述主服務(wù)器與所述備份服務(wù)器通過網(wǎng)絡(luò)連接,其特征在于,所述主服務(wù)器上運(yùn)行主虛擬機(jī),所述備份服務(wù)器上運(yùn)行后備虛擬機(jī),所述后備虛擬機(jī)處于所述主虛擬機(jī)的應(yīng)用層語義上的替代狀態(tài),所述應(yīng)用層語義上的替代狀態(tài)是指在應(yīng)用層語義上后備虛擬機(jī)能夠代替主虛擬機(jī)進(jìn)行服務(wù),對(duì)任何客戶請(qǐng)求產(chǎn)生正確的輸出。
2.如權(quán)利要求1所述的雙機(jī)熱備份容災(zāi)系統(tǒng),其特征在于,所述主服務(wù)器將客戶端請(qǐng)求分別發(fā)送給所述主虛擬機(jī)與所述后備虛擬機(jī),所述主虛擬機(jī)與所述后備虛擬機(jī)并行運(yùn)行生成各自的響應(yīng)數(shù)據(jù)包。
3.如權(quán)利要求2所述的雙機(jī)熱備份容災(zāi)系統(tǒng),其特征在于,所述雙機(jī)熱備份容災(zāi)系統(tǒng)還包括運(yùn)行在所述主虛擬機(jī)上的主備份管理器,以及運(yùn)行在所述后備虛擬機(jī)上的后備備份管理器,所述后備備份管理器用于將所述后備虛擬機(jī)生成的所述響應(yīng)數(shù)據(jù)包發(fā)送到所述主備份管理器,所述主備份管理器用于比較所述主虛擬機(jī)與所述后備虛擬機(jī)的響應(yīng)數(shù)據(jù)包是否一致,如果一致,所述后備虛擬機(jī)處于所述主虛擬機(jī)的可替代狀態(tài),所述主備份管理器將所述主虛擬機(jī)生成的所述響應(yīng)數(shù)據(jù)包發(fā)給所述客戶端;如果不一致,所述后備虛擬機(jī)不處于所述主虛擬機(jī)的可替代狀態(tài)。
4.如權(quán)利要求3所述的雙機(jī)熱備份容災(zāi)系統(tǒng),其特征在于,如果所述后備虛擬機(jī)不處于所述主虛擬機(jī)的可替代狀態(tài),所述主備份管理器將所述主虛擬機(jī)的當(dāng)前狀態(tài)備份到所述后備虛擬機(jī)。
5.如權(quán)利要求4所述的雙機(jī)熱備份容災(zāi)系統(tǒng),其特征在于,所述備份為非周期備份。
6.如權(quán)利要求4所述的雙機(jī)熱備份容災(zāi)系統(tǒng),其特征在于,所述備份到所述后備虛擬機(jī)為增量備份。
7.如權(quán)利要求3所述的雙機(jī)熱備份容災(zāi)系統(tǒng),其特征在于,所述后備備份管理器檢測(cè)所述主虛擬機(jī)的心跳數(shù)據(jù)包,如果所述后備備份管理器沒有接收到所述主虛擬機(jī)的心跳數(shù)據(jù)包,所述后備虛擬機(jī)產(chǎn)生響應(yīng)數(shù)據(jù)包之后,所述后備備份管理器將所述響應(yīng)數(shù)據(jù)包直接發(fā)給所述客戶端。
8.如權(quán)利要求1所述的雙機(jī)熱備份容災(zāi)系統(tǒng),其特征在于,在內(nèi)存?zhèn)浞莘矫妫瑔⒂昧颂摂M機(jī)監(jiān)控器提供的影子頁表機(jī)制,獲取在上次狀態(tài)備份之后被修改的頁面。
9.一種如權(quán)利要求1-8所述的雙機(jī)熱備份容災(zāi)系統(tǒng)的雙機(jī)熱備份容災(zāi)方法,其特征在于,包括以下步驟: (1)主服務(wù)器通過流量控制,將客戶端發(fā)出的請(qǐng)求分別發(fā)送到主虛擬機(jī)和后備虛擬機(jī); (2)所述主虛擬機(jī)與所述后備虛擬機(jī)根據(jù)所述客戶端發(fā)出的請(qǐng)求并行運(yùn)行,生成各自的響應(yīng)數(shù)據(jù)包; (3)后備備份管理器將所述后備虛擬機(jī)生成的所述響應(yīng)數(shù)據(jù)包發(fā)送到主備份管理器; (4)所述主備份管理器用于比較所述主虛擬機(jī)與所述后備虛擬機(jī)的響應(yīng)數(shù)據(jù)包是否一致,如果一致,所述后備虛擬機(jī)處于所述主虛擬機(jī)的應(yīng)用層語義上的替代狀態(tài),將所述主虛擬機(jī)的響應(yīng)數(shù)據(jù)包發(fā)給所述客戶端;如果不一致,所述后備虛擬機(jī)不處于所述主虛擬機(jī)的應(yīng)用層語義上的替代狀態(tài),所述主備份管理器將所述主虛擬機(jī)的當(dāng)前狀態(tài)備份到所述后備虛擬機(jī)。
【文檔編號(hào)】G06F11/14GK103761166SQ201410029760
【公開日】2014年4月30日 申請(qǐng)日期:2014年1月22日 優(yōu)先權(quán)日:2014年1月22日
【發(fā)明者】管海兵, 李健, 馬汝輝, 錢正宇 申請(qǐng)人:上海交通大學(xué)