虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)方法和裝置制造方法【專利摘要】本發(fā)明公開了一種虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)方法和裝置,該方法實(shí)現(xiàn)包括:在接收到數(shù)據(jù)包的情況下,根據(jù)多個虛擬服務(wù)器的負(fù)載狀況,確定處理數(shù)據(jù)包的虛擬服務(wù)器;將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器。本發(fā)明通過將數(shù)據(jù)包發(fā)送至多個虛擬服務(wù)器進(jìn)行任務(wù)處理,從而負(fù)載均衡地分配到多個虛擬機(jī)上,從而提高工作效率?!緦@f明】虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)方法和裝置【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及計算機(jī)硬件領(lǐng)域,特別地,涉及一種虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)方法和裝置?!?br>背景技術(shù):
】[0002]負(fù)載均衡(LoadBalancing)負(fù)載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。[0003]圖1是現(xiàn)有技術(shù)中負(fù)載平衡的應(yīng)用場景的示意圖,并且是在物理網(wǎng)絡(luò)上布置的負(fù)載平衡器。但是在虛擬環(huán)境下,一個應(yīng)用服務(wù)往往部署在不同的虛擬機(jī)服務(wù)器上面,這樣,當(dāng)多用戶請求的時候,如果沒有負(fù)載平衡,就會造成一些服務(wù)器負(fù)載過重,一些服務(wù)器負(fù)載過輕的情況。為了能達(dá)到虛擬機(jī)之間的負(fù)載平衡,本發(fā)明提出一種使用Iptables(應(yīng)用層面和Netfilter通信并且控制Netfilter的操作模塊)和Netfilter(內(nèi)核當(dāng)中的一些網(wǎng)絡(luò)數(shù)據(jù)處理函數(shù)模塊)的方式控制虛擬機(jī)之間負(fù)載的方法,以此來達(dá)到虛擬機(jī)之間的負(fù)載平衡。[0004]Iptables和Netfilter是Iinux環(huán)境下一種控制網(wǎng)絡(luò)數(shù)據(jù)流的方法,Netfilter通過在內(nèi)核協(xié)議棧上面的規(guī)則連上面注冊相應(yīng)的函數(shù),來達(dá)到控制網(wǎng)絡(luò)數(shù)據(jù)流的目的,而Iptables則是在應(yīng)用層面來控制Netfilter工作的控制器。圖2是現(xiàn)有技術(shù)中Netfilter的工作原理圖。[0005]現(xiàn)有的市場上的負(fù)載平衡方案往往是在不同的服務(wù)器上面布置硬件的負(fù)載平衡器,但是在虛擬環(huán)境下,服務(wù)器是以虛擬機(jī)的形式在提供,硬件的負(fù)載平衡不能作為虛擬環(huán)境下的負(fù)載平衡解決方案。[0006]針對相關(guān)技術(shù)中虛擬環(huán)境下的負(fù)載不均衡,導(dǎo)致工作效率低下的問題,目前尚未提出有效的解決方案。【
發(fā)明內(nèi)容】[0007]針對相關(guān)技術(shù)中虛擬環(huán)境下的負(fù)載不均衡,導(dǎo)致工作效率低下的問題,本發(fā)明提出一種虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)方法和裝置,能夠使負(fù)載均衡地分配到多個虛擬機(jī)上,從而提高工作效率。[0008]本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:[0009]根據(jù)本發(fā)明的一個方面,提供了一種虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)方法。[0010]該實(shí)現(xiàn)方法包括:[0011]在接收到數(shù)據(jù)包的情況下,根據(jù)多個虛擬服務(wù)器的負(fù)載狀況,確定處理數(shù)據(jù)包的虛擬服務(wù)器;[0012]將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器。[0013]并且,該實(shí)現(xiàn)方法進(jìn)一步包括:[0014]預(yù)先接收負(fù)載平衡命令,根據(jù)負(fù)載平衡命令確定多個虛擬服務(wù)器的IP地址,其中,命令中包括端口號以及多個虛擬服務(wù)器的目標(biāo)IP地址。[0015]其中,將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器包括:[0016]根據(jù)負(fù)載平衡命令中包含的確定的虛擬服務(wù)器的目標(biāo)IP地址,更改數(shù)據(jù)包中的目標(biāo)IP地址,并根據(jù)更改后的目標(biāo)IP地址發(fā)送數(shù)據(jù)包。[0017]并且,將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器包括:[0018]將數(shù)據(jù)包中端口號為負(fù)載平衡命令中端口號的數(shù)據(jù)發(fā)送至確定的虛擬服務(wù)器。[0019]優(yōu)選地,在確定處理數(shù)據(jù)包的虛擬服務(wù)器時,對于屬于相同會話的數(shù)據(jù)包,確定通過相同的虛擬服務(wù)器進(jìn)行處理。[0020]根據(jù)本發(fā)明的一個方面,提供了一種虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)裝置。[0021]該實(shí)現(xiàn)裝置包括:[0022]確定模塊,用于在接收到數(shù)據(jù)包的情況下,根據(jù)多個虛擬服務(wù)器的負(fù)載狀況,確定處理數(shù)據(jù)包的虛擬服務(wù)器;[0023]發(fā)送模塊,用于將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器。[0024]并且,該實(shí)現(xiàn)裝置進(jìn)一步包括:[0025]接收管理模塊,用于預(yù)先接收負(fù)載平衡命令,確定模塊還用于根據(jù)負(fù)載平衡命令確定多個虛擬服務(wù)器的IP地址,其中,命令中包括端口號以及多個虛擬服務(wù)器的目標(biāo)IP地址。[0026]此外,在將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器時,發(fā)送模塊用于根據(jù)負(fù)載平衡命令中包含的確定的虛擬服務(wù)器的目標(biāo)IP地址,更改數(shù)據(jù)包中的目標(biāo)IP地址,并根據(jù)更改后的目標(biāo)IP地址發(fā)送數(shù)據(jù)包。[0027]進(jìn)一步地,在將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器時,發(fā)送模塊用于將數(shù)據(jù)包中端口號為負(fù)載平衡命令中端口號的數(shù)據(jù)發(fā)送至確定的虛擬服務(wù)器。[0028]優(yōu)選地,在確定處理數(shù)據(jù)包的虛擬服務(wù)器時,對于屬于相同會話的數(shù)據(jù)包,確定模塊確定需要通過相同的虛擬服務(wù)器進(jìn)行處理。[0029]本發(fā)明通過將數(shù)據(jù)包發(fā)送至多個虛擬服務(wù)器進(jìn)行任務(wù)處理,從而負(fù)載均衡地分配到多個虛擬機(jī)上,從而提高工作效率。【專利附圖】【附圖說明】[0030]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0031]圖1是現(xiàn)有技術(shù)中負(fù)載平衡的應(yīng)用場景的示意圖;[0032]圖2是現(xiàn)有技術(shù)中Netfilter的工作原理圖;[0033]圖3是根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)方法的流程圖;[0034]圖4是根據(jù)本發(fā)明實(shí)施例的模塊關(guān)系示意圖;[0035]圖5是現(xiàn)有技術(shù)中未使用負(fù)載平衡的方案時數(shù)據(jù)包的發(fā)送流程示意圖;[0036]圖6是使用根據(jù)本發(fā)明實(shí)施例的負(fù)載平衡的數(shù)據(jù)包的發(fā)送流程示意圖;[0037]圖7是根據(jù)本發(fā)明的實(shí)施例從應(yīng)用層面下發(fā)負(fù)載平衡命令到內(nèi)核層面處理負(fù)載平衡命令的過程示意圖;[0038]圖8是根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)裝置的框圖?!揪唧w實(shí)施方式】[0039]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。[0040]根據(jù)本發(fā)明的一個實(shí)施例,提供了一種虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)方法。[0041]如圖3所示,根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)方法包括:[0042]步驟S301,在接收到數(shù)據(jù)包的情況下,根據(jù)多個虛擬服務(wù)器的負(fù)載狀況,確定處理數(shù)據(jù)包的虛擬服務(wù)器;[0043]步驟S303,將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器。[0044]并且,根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)方法可以預(yù)先接收負(fù)載平衡命令,根據(jù)負(fù)載平衡命令確定多個虛擬服務(wù)器的IP地址,其中,命令中包括端口號以及多個虛擬服務(wù)器的目標(biāo)IP地址。[0045]其中,將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器可以根據(jù)負(fù)載平衡命令中包含的確定的虛擬服務(wù)器的目標(biāo)IP地址,更改數(shù)據(jù)包中的目標(biāo)IP地址,并根據(jù)更改后的目標(biāo)IP地址發(fā)送數(shù)據(jù)包。[0046]并且,將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器可以將數(shù)據(jù)包中端口號為負(fù)載平衡命令中端口號的數(shù)據(jù)發(fā)送至確定的虛擬服務(wù)器。[0047]優(yōu)選地,在確定處理數(shù)據(jù)包的虛擬服務(wù)器時,對于屬于相同會話的數(shù)據(jù)包,確定通過相同的虛擬服務(wù)器進(jìn)行處理。[0048]根據(jù)本發(fā)明的一個實(shí)施例,提供了一種虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)方法,圖4是根據(jù)本發(fā)明實(shí)施例的模塊關(guān)系示意圖,其中,Iptables包括目標(biāo)IP控制模塊、目標(biāo)端口控制模塊、命令管理模塊,而Netfilter包括IP地址負(fù)載平衡模塊、解析命令模塊。在實(shí)際應(yīng)用中,可以通過Netfilter來實(shí)現(xiàn)上述確定模塊,或者,可以通過Netfilter來實(shí)現(xiàn)上述的發(fā)送模塊和確定模塊。上述接收管理模塊可以通過Iptables模塊(也可以稱為Iptables端)來實(shí)現(xiàn)。[0049]通過在管理端,也就是Iptables端(對應(yīng)于上述接收管理模塊)發(fā)送負(fù)載平衡命令,在命令中定義端口號(和應(yīng)用綁定)、以及目標(biāo)IP(數(shù)據(jù)接收的主機(jī)IP,IP的數(shù)量可以是兩個或更多),然后,根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)裝置的確定模塊和發(fā)送模塊就會把數(shù)據(jù)包中端口號為命令中的端口號的數(shù)據(jù)平均分發(fā)到命令中的主機(jī)IP(即,多個虛擬服務(wù)器的IP)。圖5和圖6是根據(jù)本發(fā)明的方法下的數(shù)據(jù)包的流向示意圖。圖5是現(xiàn)有技術(shù)中沒有使用負(fù)載平衡的方案時的數(shù)據(jù)包的發(fā)送流程示意圖,包括:數(shù)據(jù)包(帶有IP和接口port)以過虛擬網(wǎng)關(guān)全部分配到一個目標(biāo)地址。[0050]圖6是使用根據(jù)本發(fā)明實(shí)施例的負(fù)載平衡的方法的數(shù)據(jù)包的發(fā)送流程示意圖,包括:數(shù)據(jù)包(帶有IP和接口port)以過虛擬網(wǎng)關(guān)平均地分配到多個目標(biāo)地址(圖中只是示例性地示出兩個)。[0051]圖7是根據(jù)本發(fā)明的實(shí)施例從應(yīng)用層面下發(fā)負(fù)載平衡命令到內(nèi)核層面處理負(fù)載平衡命令的過程,包括:[0052]下發(fā)負(fù)載平衡命令;[0053]判斷命令格式是否正確,如果不正確則結(jié)束;[0054]如果正確則使用Iptables命令管理模塊解析以上命令;[0055]將解析結(jié)果發(fā)送給Netfilter;[0056]Netfilter根據(jù)命令內(nèi)容處理數(shù)據(jù)包,例如,命令中目標(biāo)地址有兩個,那么就調(diào)用負(fù)載平衡模塊把相應(yīng)目標(biāo)地址的數(shù)據(jù)包平均分配為兩部分,并且把這些數(shù)據(jù)包的目的地址更改為命令中的目標(biāo)地址;[0057]把更改完目的地址的數(shù)據(jù)包轉(zhuǎn)發(fā)出去。[0058]本發(fā)明通過在虛擬環(huán)境下的網(wǎng)關(guān)上面部署負(fù)載平衡方案,解決了虛擬環(huán)境中負(fù)載不均的情況。通過在虛擬網(wǎng)關(guān)上面的Netfilter上面掛接負(fù)載平衡的相應(yīng)函數(shù),同時在Iptables上面掛接相應(yīng)的操作函數(shù)就能完成虛擬環(huán)境下的負(fù)載平衡方案。[0059]目的地址返回的數(shù)據(jù)包不需要Netfilter來處理,這時候Netfilter只是一個路由轉(zhuǎn)發(fā)的功能。[0060]根據(jù)本發(fā)明的一個實(shí)施例,提供了一種虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)裝置。[0061]如圖8所示,根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)裝置包括:[0062]確定模塊81,用于在接收到數(shù)據(jù)包的情況下,根據(jù)多個虛擬服務(wù)器的負(fù)載狀況,確定處理數(shù)據(jù)包的虛擬服務(wù)器;[0063]發(fā)送模塊82,用于將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器。[0064]并且,該實(shí)現(xiàn)裝置進(jìn)一步包括:[0065]接收管理模塊(未示出),用于預(yù)先接收負(fù)載平衡命令,確定模塊還用于根據(jù)負(fù)載平衡命令確定多個虛擬服務(wù)器的IP地址,其中,命令中包括端口號以及多個虛擬服務(wù)器的目標(biāo)IP地址。[0066]此外,在將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器時,發(fā)送模塊用于根據(jù)負(fù)載平衡命令中包含的確定的虛擬服務(wù)器的目標(biāo)IP地址,更改數(shù)據(jù)包中的目標(biāo)IP地址,并根據(jù)更改后的目標(biāo)IP地址發(fā)送數(shù)據(jù)包。[0067]進(jìn)一步地,在將數(shù)據(jù)包發(fā)送至確定的虛擬服務(wù)器時,發(fā)送模塊用于將數(shù)據(jù)包中端口號為負(fù)載平衡命令中端口號的數(shù)據(jù)發(fā)送至確定的虛擬服務(wù)器。[0068]優(yōu)選地,在確定處理數(shù)據(jù)包的虛擬服務(wù)器時,對于屬于相同會話的數(shù)據(jù)包,確定模塊確定需要通過相同的虛擬服務(wù)器進(jìn)行處理。[0069]綜上所述,借助于本發(fā)明的上述技術(shù)方案,通過將數(shù)據(jù)包發(fā)送至多個虛擬服務(wù)器進(jìn)行任務(wù)處理,從而負(fù)載均衡地分配到多個虛擬機(jī)上,從而提高工作效率,本發(fā)明的技術(shù)方案將網(wǎng)關(guān)虛擬化,并且不改變原有網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),采用Netfilter方式實(shí)現(xiàn)負(fù)載平衡,并且使用Iptables應(yīng)用層面控制內(nèi)核Netfilter的執(zhí)行,使得用戶可以在不添加硬件負(fù)載平衡的情況下,在虛擬環(huán)境下實(shí)現(xiàn)數(shù)據(jù)包負(fù)載平衡。不但達(dá)到了負(fù)載平衡的效果,而且沒有改變原有的網(wǎng)絡(luò)拓?fù)潢P(guān)系,因而適合在虛擬環(huán)境下部署本方案。[0070]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)?!緳?quán)利要求】1.一種虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)方法,其特征在于,包括:在接收到數(shù)據(jù)包的情況下,根據(jù)多個虛擬服務(wù)器的負(fù)載狀況,確定處理所述數(shù)據(jù)包的虛擬服務(wù)器;將所述數(shù)據(jù)包發(fā)送至確定的所述虛擬服務(wù)器。2.根據(jù)權(quán)利要求1所述的配置方法,其特征在于,進(jìn)一步包括:預(yù)先接收負(fù)載平衡命令,根據(jù)所述負(fù)載平衡命令確定多個虛擬服務(wù)器的IP地址,其中,所述命令中包括端口號以及多個虛擬服務(wù)器的目標(biāo)IP地址。3.根據(jù)權(quán)利要求2所述的配置方法,其特征在于,將所述數(shù)據(jù)包發(fā)送至確定的所述虛擬服務(wù)器包括:根據(jù)所述負(fù)載平衡命令中包含的確定的所述虛擬服務(wù)器的目標(biāo)IP地址,更改所述數(shù)據(jù)包中的目標(biāo)IP地址,并根據(jù)更改后的目標(biāo)IP地址發(fā)送所述數(shù)據(jù)包。4.根據(jù)權(quán)利要求2所述的配置方法,其特征在于,將所述數(shù)據(jù)包發(fā)送至確定的所述虛擬服務(wù)器包括:將所述數(shù)據(jù)包中端口號為所述負(fù)載平衡命令中端口號的數(shù)據(jù)發(fā)送至確定的所述虛擬服務(wù)器。5.根據(jù)權(quán)利要求1所述的配置方法,其特征在于,在確定處理所述數(shù)據(jù)包的虛擬服務(wù)器時,對于屬于相同會話的數(shù)據(jù)包,確定通過相同的虛擬服務(wù)器進(jìn)行處理。6.一種虛擬機(jī)之間負(fù)載均衡的實(shí)現(xiàn)裝置,其特征在于,包括:確定模塊,用于在接收到數(shù)據(jù)包的情況下,根據(jù)多個虛擬服務(wù)器的負(fù)載狀況,確定處理所述數(shù)據(jù)包的虛擬服務(wù)器;發(fā)送模塊,用于將所述數(shù)據(jù)包發(fā)送至確定的所述虛擬服務(wù)器。7.根據(jù)權(quán)利要求6所述的配置裝置,其特征在于,進(jìn)一步包括:接收管理模塊,用于預(yù)先接收負(fù)載平衡命令,所述確定模塊還用于根據(jù)所述負(fù)載平衡命令確定多個虛擬服務(wù)器的IP地址,其中,所述命令中包括端口號以及多個虛擬服務(wù)器的目標(biāo)IP地址。8.根據(jù)權(quán)利要求7所述的配置裝置,其特征在于,在將所述數(shù)據(jù)包發(fā)送至確定的所述虛擬服務(wù)器時,所述發(fā)送模塊用于根據(jù)所述負(fù)載平衡命令中包含的確定的所述虛擬服務(wù)器的目標(biāo)IP地址,更改所述數(shù)據(jù)包中的目標(biāo)IP地址,并根據(jù)更改后的目標(biāo)IP地址發(fā)送所述數(shù)據(jù)包。9.根據(jù)權(quán)利要求7所述的配置裝置,其特征在于,在將所述數(shù)據(jù)包發(fā)送至確定的所述虛擬服務(wù)器時,所述發(fā)送模塊用于將所述數(shù)據(jù)包中端口號為所述負(fù)載平衡命令中端口號的數(shù)據(jù)發(fā)送至確定的所述虛擬服務(wù)器。10.根據(jù)權(quán)利要求6所述的配置裝置,其特征在于,在確定處理所述數(shù)據(jù)包的虛擬服務(wù)器時,對于屬于相同會話的數(shù)據(jù)包,所述確定模塊確定需要通過相同的虛擬服務(wù)器進(jìn)行處理。【文檔編號】H04L29/08GK103701923SQ201310752551【公開日】2014年4月2日申請日期:2013年12月31日優(yōu)先權(quán)日:2013年12月31日【發(fā)明者】王健杰,王軍林,唐明,徐博,成書晟申請人:曙光云計算技術(shù)有限公司