999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種虛擬化集群心跳算法

2015-09-23 21:52:35劉明錦
現(xiàn)代電子技術(shù) 2015年17期

劉明錦

摘 要: 隨著虛擬化技術(shù)逐漸在數(shù)據(jù)中心環(huán)境中的普及,虛擬化系統(tǒng)的容災(zāi)成效日益成為人們關(guān)注的焦點(diǎn),而虛擬化集群的心跳算法是關(guān)系虛擬化容災(zāi)成效的關(guān)鍵技術(shù)之一。研究了一種虛擬化的心跳算法,該算法通過利用所有網(wǎng)絡(luò)節(jié)點(diǎn)有序的進(jìn)行網(wǎng)絡(luò)心跳檢測,輸出一個(gè)布爾值,負(fù)責(zé)裁判進(jìn)程的Master主機(jī)根據(jù)該值判斷節(jié)點(diǎn)是否出現(xiàn)故障,可用于快速檢測出集群環(huán)境中節(jié)點(diǎn)的故障。

關(guān)鍵詞: 虛擬化; 集群; 心跳; 高可用性

中圖分類號: TN711?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)17?0110?04

Heartbeat algorithm for virtualization cluster

LIU Mingjin

(Sichuan Water Conservancy Vocational and Technical College, Chengdu 611231, China)

Abstract: As the gradual popularization of virtualization technology in data centre environment, disaster tolerance effect of the virtualization system has become the focus concerned by people increasingly, and the heartbeat algorithm of virtualization cluster is one of the key technologies to influence the disaster tolerance effect of virtualization. A heartbeat algorithm of virtualization is studied in this paper. The algorithm detects network heartbeats in order by using all network nodes, and then outputs a Boolean value. According to this value, the fault of the node is judged by the Master host which is in charge of progress judgment. It can be used to detect the fault of node in cluster environment rapidly.

Keywords: virtualization; cluster; heartbeat; high availability

0 引 言

現(xiàn)在是云計(jì)算的時(shí)代,而虛擬化是云計(jì)算的基礎(chǔ)。為了保障數(shù)據(jù)的安全性,采用虛擬化技術(shù)之后一般都需要做基于虛擬化的高可用性集群,其中心跳檢測技術(shù)是高可用性集群中非常關(guān)鍵的技術(shù),能夠在一定的時(shí)間內(nèi)準(zhǔn)確地檢測出物理服務(wù)器的可用狀態(tài)(存活或者宕機(jī))的心跳檢測技術(shù)是實(shí)現(xiàn)高可用性的前提和保障。本文提出了一種新的虛擬化的心跳優(yōu)化算法(Method of Virtualization High Availability,MVHHA),該算法通過集群內(nèi)物理主機(jī)定期發(fā)出代表可用性的[α]值,利用HA預(yù)設(shè)的失效閾值與[α]值進(jìn)行比較判斷數(shù)據(jù)中心內(nèi)節(jié)點(diǎn)的狀況,該算法可用于采用虛擬化技術(shù)的高可用集群中主機(jī)的存活檢測。

在虛擬化領(lǐng)域,常用的檢測方法是由一臺Master主機(jī)(Master由虛擬化集群建立之初由集群選定)在設(shè)定的時(shí)間內(nèi)(5 s為一個(gè)檢測周期)進(jìn)行HA內(nèi)的主機(jī)存活檢測,檢測結(jié)果輸出一個(gè)Boolean value布爾值,通過該值的狀態(tài)判斷主機(jī)是否存活。通常情況下,主機(jī)存活的檢測往往在HA高可用性過程(HA高可用性過程包括主機(jī)存活檢測、失效后的主機(jī)解鎖、接管以及業(yè)務(wù)恢復(fù)等)中占用時(shí)間最長。這種方法比較簡單直觀,但是檢測效率較低、檢測時(shí)間過長,在一些對于高可用性要求較為嚴(yán)苛的環(huán)境中不利于業(yè)務(wù)的遷移。

1 算法描述

MVHHA算法主要在虛擬化集群的高可用性環(huán)境下通過心跳信號檢測主機(jī)的存活情況。該算法將檢測進(jìn)程和裁判進(jìn)程分開。檢測進(jìn)程[pi](∑(i=1~n))在集群內(nèi)的節(jié)點(diǎn)(主機(jī))中運(yùn)行,監(jiān)控自身節(jié)點(diǎn)的運(yùn)行狀況,同時(shí)通過進(jìn)程[pi]檢測集群內(nèi)的其他節(jié)點(diǎn)狀況。進(jìn)程[pi]定期向其他節(jié)點(diǎn)上的[pi](∑(i=2~n))發(fā)送心跳檢測包,其他節(jié)點(diǎn)的檢測進(jìn)程收到該包之后,返回一個(gè)Boolean。如果在規(guī)定時(shí)間內(nèi),該進(jìn)程收到了其他所有檢測進(jìn)程返回的數(shù)據(jù)包,表示集群可用。如果沒有收到某一臺節(jié)點(diǎn)的心跳檢測包,立刻報(bào)告給負(fù)責(zé)裁判進(jìn)程的Master主機(jī),由Master主機(jī)的裁判進(jìn)程q進(jìn)行記錄,并返回記錄給報(bào)告故障的進(jìn)程[pi。]

為了避免因?yàn)榫W(wǎng)絡(luò)狀況惡化或者主機(jī)問題出現(xiàn)的誤報(bào),檢測進(jìn)程采用單獨(dú)的網(wǎng)絡(luò)進(jìn)行信號傳輸,同時(shí),該算法要求檢測進(jìn)程[pi]在收到檢測請求時(shí),會比對檢測信號的[pi]進(jìn)程序號,如果是進(jìn)程序號為[pi-1]的檢測進(jìn)程發(fā)出的信號,那么在返回Boolean值之后,[pi]會在預(yù)設(shè)周期[Ti]內(nèi)進(jìn)行下一次的心跳檢測。

同時(shí),為了防止Master宕機(jī)引起的集群崩塌(單點(diǎn)故障),[pi](i>1)在發(fā)送報(bào)告給Master時(shí),如果在規(guī)定時(shí)間t內(nèi)沒有收到Master主機(jī)的[pi](i=1)檢測進(jìn)程的回應(yīng),將報(bào)告發(fā)送給[pi+1](i=1)即可。

該算法使用了集群內(nèi)的所有節(jié)點(diǎn)進(jìn)行多維度的檢測,能夠快速檢測出集群內(nèi)的節(jié)點(diǎn)故障,便于HA高可用性節(jié)點(diǎn)上的虛擬機(jī)迅速定位和遷移。

2 算法分析

MVHHA算法可以用模型實(shí)現(xiàn),如圖1所示。

其檢測過程如下:

(1) 檢測首先由Master調(diào)用檢測進(jìn)程[pi](i=1),經(jīng)過預(yù)設(shè)的間隔時(shí)間[ΔTi]向集群內(nèi)的其他所有節(jié)點(diǎn)[p1n(i+1)]發(fā)送檢測數(shù)據(jù)包,[?i]表示檢測數(shù)據(jù)包的發(fā)送時(shí)間。

(2) 其他節(jié)點(diǎn)收到數(shù)據(jù)包之后向請求節(jié)點(diǎn)返回一個(gè)確認(rèn)信息的數(shù)據(jù)包,[δi]表示從數(shù)據(jù)包發(fā)出到得到請求所消耗的時(shí)間。

(3) 如果節(jié)點(diǎn)的檢測進(jìn)程在規(guī)定的時(shí)間[ΔTi]內(nèi)收到節(jié)點(diǎn)的回復(fù),表示該節(jié)點(diǎn)狀態(tài)正常。

(4) 如果節(jié)點(diǎn)的檢測進(jìn)程沒有在規(guī)定的時(shí)間[ΔTi]內(nèi)收到節(jié)點(diǎn)的回復(fù),表示該節(jié)點(diǎn)狀態(tài)不正常,檢測進(jìn)程啟動報(bào)告機(jī)制,向Master進(jìn)行節(jié)點(diǎn)失效匯報(bào)。

(5) 在下一個(gè)間隔時(shí)間[ΔTi],由下一個(gè)節(jié)點(diǎn)的檢測進(jìn)程[pi+1]向集群內(nèi)的其他所有節(jié)點(diǎn)[p1ni]發(fā)送檢測數(shù)據(jù)包,[?i+1]表示檢測數(shù)據(jù)包的發(fā)送時(shí)間。

(6) 在所有節(jié)點(diǎn)的檢測都完畢之后,又重新從Master節(jié)點(diǎn)的檢測進(jìn)程開始檢測,進(jìn)行循環(huán)操作。

(7) Master在收到2個(gè)以上節(jié)點(diǎn)的失效報(bào)告時(shí),即確定該節(jié)點(diǎn)不可用,隨即啟用高可用性HA的應(yīng)急機(jī)制,進(jìn)行虛擬機(jī)的遷移,保障業(yè)務(wù)的連續(xù)性。

其心跳檢測過程總耗時(shí)為[T,]可以表示為:

[T=inΔTi,][ΔTi]為單個(gè)節(jié)點(diǎn)檢測需要的時(shí)間

由此可以看出,整個(gè)集群進(jìn)行一次心跳檢測的時(shí)間[T]的多少取決于集群中節(jié)點(diǎn)數(shù)量[n]和[ΔTi]。因此要提高整個(gè)集群的檢測效率,在不影響工作的情況下,需要計(jì)算[ΔTi]的最佳值。

這里采用[ΔTi]的算法:[ΔTi=max2×nΔTi×bM×β, 1nδin,]推演出:

[ΔTi=max2nbMβ, 1nδin]

式中:[n]表示節(jié)點(diǎn)數(shù)量;[b]表示心跳檢測包的大小;[M]表示網(wǎng)絡(luò)帶寬;[β]表示網(wǎng)絡(luò)正常運(yùn)行閾值。引入[β]是為了解決在網(wǎng)絡(luò)端,心跳檢測和返回?cái)?shù)據(jù)不會因?yàn)榫W(wǎng)絡(luò)擁塞而導(dǎo)致不能夠正確到達(dá)。

3 算法測試

根據(jù)對優(yōu)化算法的設(shè)想,結(jié)合Matlab的Simulink工具進(jìn)行了MVHHA算法的仿真,如圖2所示。

圖2 Simulink仿真模型

在圖2中可以看出,系統(tǒng)設(shè)置了3個(gè)sFuncation函數(shù)Process1,Process2和Process3。用這三個(gè)函數(shù)模擬集群環(huán)境下的節(jié)點(diǎn),通過對這三個(gè)函數(shù)設(shè)置不同的在線概率值,模擬節(jié)點(diǎn)的ON/OFF狀態(tài),其中對在線節(jié)點(diǎn)的概率設(shè)置如下:

Function [Broadcast_Master_1,Broadcast_Slave_1,Repaly_Slave_1] = Process1(Receive_replay_1,Receive_broadcast_1)

%#codegen

coder.extrinsic(′rand()′);

Probability=1; %設(shè)定在線概率

Message_length=32; %設(shè)定心跳檢測數(shù)據(jù)包大小為32 b

Broadcast_Master_1=zeros(Message_length,1);

%初始化對Master廣播

Broadcast_Slave_1=zeros(Message_length,1);

%初始化本機(jī)詢問廣播

Repaly_Slave_1=zeros(Message_length,1)-1;

%初始化收到的回復(fù)

Broadcast_Slave_1=zeros(Message_length,1)+1;

%發(fā)送廣播給Slave詢問其狀態(tài)

if(sum(Receive_broadcast_1)~=0)

%若收到來自其他主機(jī)的詢問廣播,則發(fā)送自己的狀態(tài),在

線概率為Probability

if(rand()<=Probability)

Repaly_Slave_1=zeros(Message_length,1)+1;

% 若在線,回復(fù)全1的廣播

else

Repaly_Slave_1=zeros(Message_length,1);

%否則,回復(fù)全零不在線

end

else

Repaly_Slave_1=zeros(Message_length,1)?1;

%未收到來自其他Slave的詢問廣播

end

%Repaly_Slave_1 %測試數(shù)據(jù)

if(sum(Receive_replay_1)==0)

%如果收到存在宕機(jī)的Slave,報(bào)告該信息給Master

Broadcast_Master_1=zeros(Message_length,1)+1;

End

而Process2設(shè)置如下:

Function [Broadcast_Master_2,Broadcast_Slave_2,Repaly_Slave_2] = Process2(Receive_replay_2,Receive_broadcast_2)

%#codegen

coder.extrinsic(′rand()′);

Probability =0; %在線概率

Message_length=512; %數(shù)據(jù)包大小為512 b

Broadcast_Master_2=zeros(Message_length,1);

%初始化對Master廣播

Broadcast_Slave_2=zeros(Message_length,1);

%初始化本機(jī)詢問廣播

Repaly_Slave_2=zeros(Message_length,1)-1;

%初始化收到的回復(fù)

Broadcast_Slave_2=zeros(Message_length,1)+1;

%發(fā)送廣播給Slave詢問其狀態(tài)

if(sum(Receive_broadcast_2)~=0)

%若受到來自其他主機(jī)的詢問廣播,則發(fā)送自己的狀態(tài),在

線概率為Probability

if(rand()<=Probability)

Repaly_Slave_2=zeros(Message_length,1)+1;

%若在線,回復(fù)全1的廣播

else

Repaly_Slave_2=zeros(Message_length,1);

%否則,回復(fù)全零不在線

end

else

Repaly_Slave_2=zeros(Message_length,1)?1;

%未收到其他Slave的詢問廣播

end

Repaly_Slave_2 %測試數(shù)據(jù)

if(sum(Receive_replay_2)==0)

%如果收到存在宕機(jī)的Slave,報(bào)告該信息給Master

Broadcast_Master_2=zeros(Message_length,1)+1;

end

由此可以看到:Process1和Process3的在線概率為1,在線概率的單位是100%,1表示這臺電腦在線,Process2的在線概率為0,表示這臺電腦宕機(jī)了。

初始數(shù)據(jù)包大小為32位。

Process中的Broadcast_Slave表示對其他Slave主機(jī)的詢問信息,在發(fā)送這個(gè)詢問信息時(shí),進(jìn)行了時(shí)間延遲處理,對第二個(gè)和第三個(gè)Process采用了延時(shí)器對數(shù)據(jù)發(fā)送進(jìn)行延遲,參數(shù)設(shè)置如下:

Delay length:(dialog)=2

Sample time (?1 for inherited)=0.1(抽樣時(shí)間)

Broadcast_Slave發(fā)送的數(shù)據(jù)進(jìn)行了處理,主要是為了避免空值,增加了一個(gè)常數(shù)容器,值為Zero(512,1),還增加了一個(gè)電磁波發(fā)生器。這兩個(gè)容器與輸入的信號經(jīng)過一個(gè)開關(guān)進(jìn)行處理,開關(guān)的取樣時(shí)間也是0.1 s,如圖3所示。

Repaly_Slave表示當(dāng)收到其他Slave發(fā)送的消息時(shí)需要進(jìn)行回復(fù)。回復(fù)給每臺主機(jī)時(shí),需要經(jīng)過Adjust進(jìn)行數(shù)據(jù)的處理,處理過程如圖4所示。

如果Slave的Broadcast_Slave發(fā)送消息之后, Receive_replay收到有宕機(jī)的事件,那么立即報(bào)告給Master。在Master端為了更加明顯地顯示Master收到的內(nèi)容和波形圖,分別用To Workspace輸出結(jié)果和scope顯示波形圖,To Workspace中的輸出結(jié)果如圖5所示。

從圖5中可以看到,在第2行和第4行時(shí)即0.2 s和0.4 s時(shí),Master分別收到了來自第一臺Slave和第3臺Slave的報(bào)告,至此,關(guān)于心跳優(yōu)化算法的虛擬仿真完成。

原來的心跳信號在5 s內(nèi)由Master主機(jī)發(fā)送1次心跳檢測,也就是說如果出現(xiàn)主機(jī)宕機(jī)情況,檢測時(shí)間至少需要5 s以上,在采用了優(yōu)化算法之后,由于采用了類似分布式檢測的優(yōu)化算法,在[ΔTi]的間隔內(nèi)由不同的主機(jī)按照一定的序號進(jìn)行集群內(nèi)的循環(huán)心跳信號檢測,如果在[ΔTi]時(shí)間之內(nèi)有主機(jī)宕機(jī),即可檢測出來。

該算法相對于原來算法有著以下優(yōu)勢:

(1) 快速定位。可以在很短的時(shí)間內(nèi)判定主機(jī)出現(xiàn)故障,快速定位故障主機(jī)。

(2) 時(shí)間減少。原算法需要進(jìn)行檢測3次(防止誤判),每次5 s,整個(gè)過程耗時(shí)15 s。而采用集群內(nèi)其他主機(jī)一同參與檢測過程,檢測次數(shù)為2次,耗時(shí)為[2ΔTi]秒(設(shè)定[ΔTi]的時(shí)間小于1 s)。

(3) 增加檢測正確性。以往都是由Master主機(jī)進(jìn)行心跳檢測,如果出現(xiàn)網(wǎng)絡(luò)掉包等故障時(shí),可能會出現(xiàn)報(bào)錯(cuò)的情況,而進(jìn)行優(yōu)化后,可以提供一個(gè)所有主機(jī)參與的檢測結(jié)果,提供了更高的正確性。

(4) 增加了集群的穩(wěn)定性。如果出現(xiàn)故障的主機(jī)是Master,那么Slave主機(jī)會馬上進(jìn)行Master主機(jī)的選舉,避免了HA過程出現(xiàn)更長時(shí)間的等待,增加了集群的穩(wěn)定性。

4 結(jié) 語

本文提出了一種虛擬化集群的心跳算法,通過該算法對心跳檢測流程進(jìn)行改進(jìn),可以極大地減少節(jié)點(diǎn)故障的檢測時(shí)間,它克服了傳統(tǒng)心跳機(jī)制耗用時(shí)間較長、效率低下的問題,同時(shí)解決了大規(guī)模節(jié)點(diǎn)狀態(tài)下的網(wǎng)絡(luò)擁塞問題,具有檢測效率高、準(zhǔn)確性高,具有伸縮彈性等特點(diǎn)。同時(shí),如何利用子網(wǎng)的劃分提高網(wǎng)絡(luò)心跳檢測的效率仍然是一個(gè)值得深入研究的課題。

參考文獻(xiàn)

[1] 王欣.VMware軟件虛擬化研究及應(yīng)用[J].數(shù)據(jù)通信,2012(6):30?32.

[2] 何禹,胡宇鴻,王一波.虛擬化技術(shù)在校園網(wǎng)數(shù)據(jù)中心的應(yīng)用[J].電子科技大學(xué)學(xué)報(bào),2007,36(6):1461?1464.

[3] VMware.VMware文檔[DB/OL].[2015?02?23].http://www.vmware.com/cn/support/support? resources/pubs.

[4] GULATI A. VMware distributed resource management: design, implementation, and lessons learned [EB/OL]. [2013?02?15]. http://waldspurger.org/carl/papers/drs?vmtj?mar12.pdf.

[5] 劉媛媛,高慶一,陳陽.虛擬計(jì)算環(huán)境下虛擬機(jī)資源負(fù)載均衡方法[J].2010,36(16):30?32.

[6] KATSAROS D, PALLIS G. Cloud computing [J]. IEEE Network, 2011, 25(4): 4?5.

[7] KTAMURA K, HOMMA H. Storage virtualization system and methods: US, 6857059 B2 [P]. 2007?12?13.

[8] NICOL II W B, BOKOR B R, HAGGAR P F, et al. Avatar cloning in a virtual world: US, 8584024 B2 [P]. 20013?11?12.

[9] 王德軍,王麗娜.容災(zāi)系統(tǒng)研究[J].計(jì)算機(jī)工程,2005,31(6):43?45.

[10] LOVELAND S, DOW E M, LEFEVRE F, et al. Leve?raging virtualization to optimize high?availability system configurations [J]. Journal of IBM Systems, 2008, 47(4): 591?604.

[11] NATHUJI R, SCHWAN K. Virtual power: coordinated power management in virtualized enterprise systems [C]// Procee?dings of 2007 ACM SIGOPS Symposium on Operating Systems Principles. [S.l.]: ACM, 2007: 265?278.

主站蜘蛛池模板: 三级毛片在线播放| 亚洲国产日韩在线观看| 国产黄在线观看| 亚洲天堂网视频| 一本久道久综合久久鬼色| 亚洲综合专区| 国产第一页亚洲| 狠狠综合久久| AV老司机AV天堂| 亚洲综合久久成人AV| 国产成人一区二区| 精品第一国产综合精品Aⅴ| 尤物在线观看乱码| 亚洲日韩高清在线亚洲专区| 精品乱码久久久久久久| 国内自拍久第一页| 亚洲无码91视频| 久久精品只有这里有| 国产一二视频| 欧美精品导航| 日韩av无码DVD| 国产高清在线丝袜精品一区| 国产麻豆va精品视频| 日韩欧美国产精品| 精品1区2区3区| 伊人久久大香线蕉综合影视| 久久国产精品麻豆系列| 国产丝袜无码一区二区视频| 亚洲第一色网站| 久久91精品牛牛| 高清欧美性猛交XXXX黑人猛交 | 激情乱人伦| 亚洲va在线观看| 日韩精品亚洲一区中文字幕| a欧美在线| 国产精品欧美激情| 国产精品永久免费嫩草研究院 | 亚洲欧美精品一中文字幕| 亚洲三级a| 538国产视频| 国产日产欧美精品| 国产福利观看| 亚洲天堂久久新| 国产不卡国语在线| 手机永久AV在线播放| 日韩A∨精品日韩精品无码| 亚洲三级网站| 日韩欧美中文字幕在线精品| 91在线中文| 婷婷亚洲综合五月天在线| 国产免费怡红院视频| 亚洲色图欧美激情| 高清无码手机在线观看| 九九热精品视频在线| 天天激情综合| 久久精品欧美一区二区| 国产又爽又黄无遮挡免费观看| 黄色福利在线| 欧美区在线播放| 亚洲首页在线观看| AV熟女乱| 国产91精品久久| 99热这里只有精品在线播放| 国产免费福利网站| 2022国产91精品久久久久久| 青青草原国产av福利网站| 亚洲成人动漫在线观看| 精品久久高清| 国产欧美日韩另类| 一级香蕉人体视频| 中文精品久久久久国产网址 | 99精品久久精品| 亚洲激情区| 无码国产伊人| 国产91无毒不卡在线观看| 欧美一区福利| 香蕉久久国产超碰青草| www欧美在线观看| 国产黄色片在线看| 免费jjzz在在线播放国产| 亚洲二区视频| 天天色天天综合|