本發(fā)明涉及網(wǎng)絡(luò)虛擬技術(shù)以及負(fù)載均衡技術(shù),尤其涉及網(wǎng)絡(luò)虛擬環(huán)境下虛擬服務(wù)器集群的負(fù)載均衡的方法與裝置。
背景技術(shù):
負(fù)載均衡技術(shù)(Load Balance)就是將負(fù)載(工作任務(wù))分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,從而共同完成工作任務(wù)的技術(shù)。在網(wǎng)絡(luò)應(yīng)用中,它提供了一種廉價(jià)有效透明的方法來擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量,加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力,提高網(wǎng)絡(luò)的靈活性和可用性。這其中服務(wù)器的負(fù)載均衡是最常見的。由于網(wǎng)絡(luò)的數(shù)據(jù)訪問流量迅速增長,而服務(wù)器處理器速度和內(nèi)存訪問速度的增長卻遠(yuǎn)遠(yuǎn)低于網(wǎng)絡(luò)帶寬和應(yīng)用服務(wù)的增長,服務(wù)器成為了網(wǎng)絡(luò)瓶頸。為此,通過組建服務(wù)器集群,利用負(fù)載均衡技術(shù)在服務(wù)器間進(jìn)行業(yè)務(wù)均衡,成為一種低成本、可擴(kuò)展的有效解決辦法。
Linux虛擬服務(wù)器(Linux Virtual Server,LVS)負(fù)載均衡是服務(wù)器負(fù)載均衡技術(shù)中的一種。LVS主要用于多服務(wù)器的負(fù)載均衡,工作在網(wǎng)絡(luò)層,可以實(shí)現(xiàn)高性能、高可用的服務(wù)器集群技術(shù)。
LVS負(fù)載均衡,主要包括客戶端、負(fù)載調(diào)度服務(wù)器和真實(shí)服務(wù)器(RealServer,RS)。其中,負(fù)載調(diào)度服務(wù)器最主要的功能是提供數(shù)據(jù)包轉(zhuǎn)發(fā)和負(fù)載均衡,負(fù)載調(diào)度服務(wù)器虛擬一個(gè)對外訪問的虛擬IP地址(vip),當(dāng)用戶訪問vip時(shí)到達(dá)負(fù)載調(diào)度服務(wù)器,負(fù)載調(diào)度服務(wù)器根據(jù)一定的規(guī)則選擇一個(gè)RS,RS處理完成后返回給客戶端數(shù)據(jù)。
在LVS負(fù)載均衡中,依據(jù)轉(zhuǎn)發(fā)方式,常見的有通過直接路由技術(shù)實(shí)現(xiàn)虛擬服務(wù)器(Virtual Server via Direct Routing,VS/DR)方式和通過網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù)實(shí)現(xiàn)虛擬服務(wù)器(Virtual Server via Network Address Translation,VS/NAT)方式。
在VS/NAT模式中,負(fù)載調(diào)度服務(wù)器將數(shù)據(jù)報(bào)文中的目標(biāo)地址(即vip)改成具體的某臺(tái)RS,端口也改成RS的端口,然后把報(bào)文發(fā)給RS。RS處理完數(shù)據(jù)后,需要返回給負(fù)載調(diào)度服務(wù)器,然后負(fù)載調(diào)度服務(wù)器將數(shù)據(jù)包中的源地址和源端口改成vip的地址和端口,最后把數(shù)據(jù)發(fā)送出去。該方式組網(wǎng)靈活,后端服務(wù)器可以位于不同的物理位置,不同的局域網(wǎng)內(nèi)。然而,數(shù)據(jù)轉(zhuǎn)發(fā)都需要通過負(fù)載調(diào)度服務(wù)器,因此負(fù)載調(diào)度服務(wù)器成為系統(tǒng)新的瓶頸。
在VS/DR模式中,負(fù)載調(diào)度服務(wù)器通過改寫請求報(bào)文的硬件地址,將請求發(fā)送到RS,而RS將響應(yīng)直接返回給客戶。由于RS的數(shù)據(jù)不經(jīng)過負(fù)載調(diào)度服務(wù)器,因此減少了設(shè)備負(fù)載,緩解了VS/NAT模式中設(shè)備瓶頸的問題。然而,在VS/DR模式中,負(fù)載調(diào)度服務(wù)器與RS需要具有相同的端口,由此帶來的問題是:限制了負(fù)載調(diào)度服務(wù)器和RS的部署和級聯(lián)方式,負(fù)載調(diào)度服務(wù)器不能為跨端口的RS提供服務(wù),只能使用較為扁平的網(wǎng)絡(luò)拓?fù)?,從而大大局限了網(wǎng)絡(luò)拓?fù)洹?/p>
技術(shù)實(shí)現(xiàn)要素:
針對以上現(xiàn)有技術(shù)中的問題,本發(fā)明的目的在于在網(wǎng)絡(luò)虛擬化的環(huán)境下,提供一種服務(wù)器負(fù)載均衡的方法與裝置,能夠不受設(shè)備瓶頸限制,高性能地進(jìn)行大量數(shù)據(jù)吞吐,且能夠使用于負(fù)載調(diào)度服務(wù)器與RS具有不同端口的情況。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種服務(wù)器負(fù)載均衡的方法,其中多個(gè)真實(shí)服務(wù)器以虛擬機(jī)的形式運(yùn)行在至少一個(gè)第一宿主機(jī)中,包括步驟:負(fù)載調(diào)度服務(wù)器接收來自客戶端的請求數(shù)據(jù)包;負(fù)載調(diào)度服務(wù)器根據(jù)負(fù)載均衡算法確定處理請求數(shù)據(jù)包的真實(shí)服務(wù)器;負(fù)載調(diào)度服務(wù)器將請求數(shù)據(jù)包中的目標(biāo)端口轉(zhuǎn)換為真實(shí)服務(wù)器的端口,將目標(biāo)硬件地址轉(zhuǎn)換為第一宿主機(jī)硬件地址;負(fù)載調(diào)度服務(wù)器將轉(zhuǎn)換后的請求數(shù)據(jù)包發(fā)送至處理請求數(shù)據(jù)包的真實(shí)服務(wù)器的第一宿主機(jī);第一宿主機(jī)使用openflow協(xié)議,第一宿主機(jī)向客戶端發(fā)送真實(shí)服務(wù)器處理后的回復(fù)數(shù)據(jù)包,第一宿主機(jī)通過openflow流表將回復(fù)數(shù)據(jù)包中的源地址端口轉(zhuǎn)換為負(fù)載調(diào)度服務(wù)器端口。
優(yōu)選地,openflow流表由多條流表項(xiàng)組成,其中包含轉(zhuǎn)換端口的流表項(xiàng),第一宿主機(jī)接收真實(shí)服務(wù)器的回復(fù)數(shù)據(jù)包,并從回復(fù)數(shù)據(jù)包中提取第二特征,將第二特征與多條流表項(xiàng)的匹配字段進(jìn)行匹配,當(dāng)?shù)诙卣髋c轉(zhuǎn)換端口的流表項(xiàng)中的匹配字段匹配時(shí),則執(zhí)行轉(zhuǎn)換端口的流表項(xiàng)中的指令字段,將回復(fù)數(shù)據(jù)包中的源端口轉(zhuǎn)換為負(fù)載調(diào)度服務(wù)器端口。
優(yōu)選地,第二特征包括目標(biāo)IP地址,源端口,轉(zhuǎn)換端口的流表項(xiàng)中的匹配字段包括客戶端IP地址,真實(shí)服務(wù)器端口。
優(yōu)選地,負(fù)載調(diào)度服務(wù)器基于地址解析協(xié)議廣播接收來自客戶端的請求數(shù)據(jù)包,第一宿主機(jī)通過openflow流表對來自客戶端的請求數(shù)據(jù)包的地址解析協(xié)議廣播進(jìn)行代答,從而屏蔽真實(shí)服務(wù)器對請求數(shù)據(jù)包的地址解析協(xié)議信息廣播的響應(yīng)。
優(yōu)選地,openflow流表由多條流表項(xiàng)組成,其中包含代答指令的流表項(xiàng),第一宿主機(jī)接收來自客戶端的請求數(shù)據(jù)包,并從請求數(shù)據(jù)包中提取第一特征,將第一特征與多條流表項(xiàng)的匹配字段進(jìn)行匹配,當(dāng)?shù)谝惶卣髋c代答指令的流表項(xiàng)中的匹配字段匹配時(shí),則執(zhí)行代答指令的流表項(xiàng)中的指令字段,向客戶端返回代答數(shù)據(jù)。
優(yōu)選地,第一特征包括目標(biāo)IP地址,數(shù)據(jù)包是否包含ARP報(bào)頭,源宿主機(jī)IP地址,代答指令的流表項(xiàng)中的匹配字段包括負(fù)載調(diào)度服務(wù)器虛擬IP地址,ARP報(bào)頭,客戶端宿主機(jī)IP地址。
優(yōu)選地,第一宿主機(jī)拋棄接收到的客戶端發(fā)送的請求數(shù)據(jù)包的地址解析協(xié)議信息,從而屏蔽真實(shí)服務(wù)器對請求數(shù)據(jù)包的地址解析協(xié)議信息進(jìn)行響應(yīng)。
優(yōu)選地,上述的服務(wù)器負(fù)載均衡的方法還包括步驟:第一宿主機(jī)安裝QEMU guest agent,通過QEMU guest agent對運(yùn)行其中的真實(shí)服務(wù)器進(jìn)行虛擬IP地址設(shè)置。
優(yōu)選地,第一宿主機(jī)通過QEMU guest agent調(diào)用ip address add命令添加虛擬IP地址。
優(yōu)選地,第一宿主機(jī)通過QEMU guest agent修改操作系統(tǒng)中的網(wǎng)卡配置文件,在網(wǎng)卡配置文件中添加虛擬IP地址。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種服務(wù)器負(fù)載均衡的裝置,真實(shí)服務(wù)器以虛擬機(jī)的形式運(yùn)行在服務(wù)器負(fù)載均衡的裝置中,服務(wù)器負(fù)載均衡的裝置使用openflow協(xié)議,服務(wù)器負(fù)載均衡的裝置包括:端口轉(zhuǎn)換模塊,端口轉(zhuǎn)換模塊接收真實(shí)服務(wù)器的回復(fù)數(shù)據(jù)包,端口轉(zhuǎn)換模塊通過openflow流表將回復(fù)數(shù)據(jù)包中的源地址端口轉(zhuǎn)換為負(fù)載調(diào)度服務(wù)器端口;數(shù)據(jù)包發(fā)送模塊,數(shù)據(jù)包發(fā)送模塊將回復(fù)數(shù)據(jù)包向客戶端發(fā)送。
優(yōu)選地,openflow流表由多條流表項(xiàng)組成,其中包含轉(zhuǎn)換端口的流表項(xiàng),端口轉(zhuǎn)換模塊從回復(fù)數(shù)據(jù)包中提取第二特征,將第二特征與多條流表項(xiàng)的匹配字段進(jìn)行匹配,當(dāng)?shù)诙卣髋c轉(zhuǎn)換端口的流表項(xiàng)中的匹配字段匹配時(shí),則執(zhí)行轉(zhuǎn)換端口的流表項(xiàng)中的指令字段,將回復(fù)數(shù)據(jù)包中的源端口轉(zhuǎn)換為負(fù)載調(diào)度服務(wù)器端口。
優(yōu)選地,第二特征包括目標(biāo)IP地址,源端口,轉(zhuǎn)換端口的流表項(xiàng)中的匹配字段包括客戶端IP地址,真實(shí)服務(wù)器端口。
優(yōu)選地,上述服務(wù)器負(fù)載均衡的裝置還包括:代答指令模塊,代答指令模塊接收來自客戶端的請求數(shù)據(jù)包,代答指令模塊通過openflow流表對來自客戶端的請求數(shù)據(jù)包的地址解析協(xié)議廣播進(jìn)行代答,從而屏蔽真實(shí)服務(wù)器對請求數(shù)據(jù)包的地址解析協(xié)議信息廣播的響應(yīng)。
優(yōu)選地,openflow流表由多條流表項(xiàng)組成,其中包含代答指令的流表項(xiàng),代答指令模塊從請求數(shù)據(jù)包中提取第一特征,將第一特征與多條流表項(xiàng)的匹配字段進(jìn)行匹配,當(dāng)?shù)谝惶卣髋c代答指令的流表項(xiàng)中的匹配字段匹配時(shí),則執(zhí)行代答指令的流表項(xiàng)中的指令字段,向客戶端返回代答數(shù)據(jù)。
優(yōu)選地,第一特征包括目標(biāo)IP地址,數(shù)據(jù)包是否包含ARP報(bào)頭,源宿主機(jī)IP地址,代答指令的流表項(xiàng)中的匹配字段包括負(fù)載調(diào)度服務(wù)器虛擬IP地址,ARP報(bào)頭,客戶端宿主機(jī)IP地址。
根據(jù)本發(fā)明的第三方面,提供了一種設(shè)置真實(shí)服務(wù)器IP地址的方法,真實(shí)服務(wù)器以虛擬機(jī)的形式運(yùn)行在第一宿主機(jī)中,第一宿主機(jī)安裝QEMUguest agent,通過QEMU guest agent對運(yùn)行其中的真實(shí)服務(wù)器進(jìn)行虛擬IP地址設(shè)置。
優(yōu)選地,第一宿主機(jī)通過QEMU guest agent調(diào)用ip address add命令添加虛擬IP地址。
優(yōu)選地,第一宿主機(jī)通過QEMU guest agent修改操作系統(tǒng)中的網(wǎng)卡配置文件,在網(wǎng)卡配置文件中添加虛擬IP地址。
本發(fā)明中第一宿主機(jī)通過openflow流表將真實(shí)服務(wù)器處理后的回復(fù)數(shù)據(jù)包中的源端口改為負(fù)載調(diào)度服務(wù)器的端口,從而簡單地解決了負(fù)載調(diào)度服務(wù)器與真實(shí)服務(wù)器端口不一致的問題。進(jìn)一步地,由于本發(fā)明通過第一宿主機(jī)的設(shè)置而不是通過真實(shí)服務(wù)器而改變回復(fù)數(shù)據(jù)包中的源端口,因此避免了真實(shí)服務(wù)器運(yùn)營商的復(fù)雜設(shè)置。
由于回復(fù)數(shù)據(jù)包不需要經(jīng)過負(fù)載調(diào)度服務(wù)器而直接發(fā)送至客戶端,因此減少了設(shè)備負(fù)載,能夠高性能地進(jìn)行大量數(shù)據(jù)吞吐。
附圖說明
以下結(jié)合附圖和具體實(shí)施例對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)的說明,以使本發(fā)明的特性和優(yōu)點(diǎn)更為明顯。
圖1為實(shí)施本發(fā)明方法的一個(gè)實(shí)施例的數(shù)據(jù)流向示意圖;
圖2為本法明的方法的流程示意圖;
圖3為本發(fā)明的圖2中的S105步驟的詳細(xì)流程示意圖。
具體實(shí)施方式
以下將對本發(fā)明的實(shí)施例給出詳細(xì)的說明。盡管本發(fā)明將結(jié)合一些具體實(shí)施方式進(jìn)行闡述和說明,但需要注意的是本發(fā)明并不僅僅只局限于這些實(shí)施方式。相反,對本發(fā)明進(jìn)行的修改或者等同替換,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
一些示例性實(shí)施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項(xiàng)操作描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時(shí)實(shí)施。此外,各項(xiàng)操作的順序可以被重新安排。當(dāng)其操作完成時(shí)所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。
應(yīng)當(dāng)理解的是,雖然在這里可能使用了術(shù)語“第一”、“第二”等等來描述各個(gè)單元或是數(shù)據(jù),但是這些單元或數(shù)據(jù)不應(yīng)當(dāng)受這些術(shù)語限制。使用這些術(shù)語僅僅是為了將一個(gè)數(shù)據(jù)與另一個(gè)數(shù)據(jù)進(jìn)行區(qū)分。舉例來說,在不背離示例性實(shí)施例的范圍的情況下,第一特征可以被稱為第二特征,并且類似地第二特征可以被稱為第一特征。
本發(fā)明所提供的一種服務(wù)器負(fù)載均衡的方法,是在傳統(tǒng)的VS/DR模式上的改進(jìn),因此也具有傳統(tǒng)的VS/DR模式中的真實(shí)服務(wù)器(RS)直接將回復(fù)數(shù)據(jù)包發(fā)回客戶端的步驟,由于RS的數(shù)據(jù)不經(jīng)過負(fù)載調(diào)度服務(wù)器,因此減少了設(shè)備負(fù)載,能夠高性能地進(jìn)行大量數(shù)據(jù)吞吐。同時(shí),本發(fā)明提供的方法能夠方便地解決負(fù)載調(diào)度服務(wù)器不能為跨端口的RS提供服務(wù)的問題。
下面首先結(jié)合附圖,說明本發(fā)明的方法的原理以及數(shù)據(jù)流向。
圖1為實(shí)施本發(fā)明方法的一個(gè)實(shí)施例的數(shù)據(jù)流向示意圖。如圖1所示,VS/DR服務(wù)器集群401中包括負(fù)載調(diào)度服務(wù)器102,以及RS103,需要說明的是,通常在VS/DR服務(wù)器集群401中包含多個(gè)RS103,圖1為了方便說明因此僅示例性地設(shè)置了一個(gè)RS103,未示出的RS的結(jié)構(gòu)以及運(yùn)行原理等與圖1示例的RS103相同。RS103是真實(shí)地處理客戶端請求數(shù)據(jù)的服務(wù)器,負(fù)載調(diào)度服務(wù)器102則用于確定處理請求數(shù)據(jù)的RS103,并將從客戶端101接收的請求數(shù)據(jù)包301轉(zhuǎn)換并發(fā)送至該RS103。
在本發(fā)明中,RS103以虛擬機(jī)的形式運(yùn)行在第一宿主機(jī)203中。實(shí)踐中,在一臺(tái)第一宿主機(jī)中可以運(yùn)行一個(gè)RS,即多個(gè)RS可以單獨(dú)運(yùn)行在多個(gè)第一宿主機(jī)中,也可以在一臺(tái)第一宿主機(jī)中運(yùn)行一個(gè)以上的RS。
為了便于說明數(shù)據(jù)通信的方式,本實(shí)施例在說明時(shí)負(fù)載調(diào)度服務(wù)器102也以虛擬機(jī)的形式運(yùn)行在第二宿主機(jī)202中,客戶端101以虛擬機(jī)的形式運(yùn)行在客戶端宿主機(jī)201中。實(shí)際使用時(shí),負(fù)載調(diào)度服務(wù)器102通常為一個(gè)實(shí)體的服務(wù)器(即不采用虛擬機(jī)的形式),但模擬虛擬機(jī)-宿主機(jī)的形式構(gòu)建通信數(shù)據(jù)結(jié)構(gòu),從而便于與RS103進(jìn)行通信。實(shí)際使用時(shí),當(dāng)實(shí)體客戶端發(fā)送請求數(shù)據(jù)包時(shí),可以將實(shí)體客戶端的請求數(shù)據(jù)包通過虛擬網(wǎng)關(guān)轉(zhuǎn)化為模擬虛擬客戶端的形式。在本實(shí)施例中,在各個(gè)主體間傳送的各數(shù)據(jù)包中均包含源IP地址,源端口,源宿主機(jī)IP地址,源硬件地址,目標(biāo)IP地址,目標(biāo)端口,目標(biāo)宿主機(jī)IP地址,目標(biāo)硬件地址。以上數(shù)據(jù)包中的字段均通過IP協(xié)議存儲(chǔ),通過以上字段的設(shè)置可以方便地實(shí)現(xiàn)各數(shù)據(jù)包傳輸定位。為了方便說明,在本實(shí)施例中,示例性地將各個(gè)主體的IP地址設(shè)置如下:
客戶端101的IP地址為10.10.1.10,端口為36000。運(yùn)行客戶端101的客戶端宿主機(jī)201的IP地址為172.24.1.10。
負(fù)載調(diào)度服務(wù)器102的虛擬IP地址(vip)為10.10.1.100,端口為80。運(yùn)行負(fù)載調(diào)度服務(wù)器102的第二宿主機(jī)202的IP地址為172.24.1.100。
RS103的虛擬IP地址(vip)為10.10.1.100,端口為8080。運(yùn)行RS103的第一宿主機(jī)203的IP地址為172.24.1.20。
其中負(fù)載調(diào)度服務(wù)器102的vip與RS103的vip設(shè)置一致,這是VS/DR模式中,根據(jù)數(shù)據(jù)包轉(zhuǎn)發(fā)的需要而設(shè)置,否則RS103會(huì)拒絕處理該數(shù)據(jù)包。
通常,對于RS103的vip需要通過RS103的運(yùn)營商手動(dòng)進(jìn)行設(shè)置,對于RS103的運(yùn)營商而言,需要特殊設(shè)置,操作麻煩。
在本發(fā)明中,在第一宿主機(jī)203中安裝QEMU guest agent(QGA)軟件。QGA是一個(gè)運(yùn)行在虛擬機(jī)內(nèi)部的應(yīng)用程序,其目的是實(shí)現(xiàn)一種宿主機(jī)和虛擬機(jī)進(jìn)行交互的方式。具體而言,QGA在虛擬機(jī)中安裝的一個(gè)代理,宿主機(jī)通過通道(即unix socket)與虛擬機(jī)內(nèi)部的代理進(jìn)行通信,這樣宿主機(jī)就有了一種從外部控制/獲取虛擬機(jī)的手段。比如:宿主機(jī)可以向虛擬機(jī)下發(fā)執(zhí)行修改hostname的指令,或者獲取宿主機(jī)內(nèi)所有進(jìn)程信息的指令。QGA時(shí)刻監(jiān)聽這個(gè)通道,一旦發(fā)現(xiàn)有指令發(fā)送來,分析該指令,并執(zhí)行,通過通道返回執(zhí)行結(jié)果,傳輸?shù)氖莏son字符串。
第一宿主機(jī)203通過QGA對運(yùn)行其中的RS103進(jìn)行vip設(shè)置。具體而言,第一宿主機(jī)203通過QGA調(diào)用ip address add命令在RS103中添加vip,從而實(shí)時(shí)地設(shè)置vip。
為了防止RS103重啟后RS103的vip丟失,第一宿主機(jī)203通過QGA修改RS103操作系統(tǒng)中的網(wǎng)卡配置文件,在網(wǎng)卡配置文件中添加vip,從而使得RS103重啟后,vip仍然成功設(shè)置。
通過以上的方法,不再需要RS103的運(yùn)營商手動(dòng)設(shè)置RS103的vip,而能夠通過第一宿主機(jī)203的設(shè)置達(dá)到配置RS103vip的效果。
圖2為本法明的方法的流程示意圖。
結(jié)合圖1以及圖2,客戶端101基于地址解析協(xié)議(ARP)廣播向VS/DR服務(wù)器集群401發(fā)送請求數(shù)據(jù)包301。
如步驟S101,負(fù)載調(diào)度服務(wù)器102接收請求數(shù)據(jù)包301。具體而言,負(fù)載調(diào)度服務(wù)器102設(shè)有一個(gè)vip,VS/DR服務(wù)器集群401使用該負(fù)載調(diào)度服務(wù)器102的vip作為統(tǒng)一對外的IP地址,即客戶端101發(fā)出的請求數(shù)據(jù)包301的目標(biāo)地址設(shè)為該vip,從而實(shí)現(xiàn)客戶端101對VS/DR服務(wù)器集群401的訪問。
在圖1所示的示例中,由客戶端101發(fā)出的請求數(shù)據(jù)包301中,源IP地址以及源端口均為客戶端101的IP地址10.10.1.10以及端口36000。請求數(shù)據(jù)包301的源宿主機(jī)IP地址以及源硬件地址均為客戶端宿主機(jī)201的IP地址172.24.1.10以及硬件地址(未示出)。請求數(shù)據(jù)包301的目標(biāo)IP地址,目標(biāo)端口,為負(fù)載調(diào)度服務(wù)器102的vip10.10.1.100,負(fù)載調(diào)度服務(wù)器102的端口80。請求數(shù)據(jù)包301的目標(biāo)宿主機(jī)IP地址以及目標(biāo)硬件地址均為第二宿主機(jī)202的IP地址172.24.1.100以及硬件地址(未示出)。
負(fù)載調(diào)度服務(wù)器102根據(jù)請求數(shù)據(jù)包301的目標(biāo)IP地址10.10.1.100以及目標(biāo)端口80接收請求數(shù)據(jù)包301。
由于請求數(shù)據(jù)包301需要首先由負(fù)載調(diào)度服務(wù)器102進(jìn)行接收并處理,因此對于RS103而言,在客戶端101基于ARP廣播發(fā)送請求數(shù)據(jù)包301時(shí),需要對RS103對于ARP廣播的響應(yīng)進(jìn)行屏蔽,從而保證客戶端101不會(huì)收到RS103對ARP廣播的響應(yīng)。
本發(fā)明通過第一宿主機(jī)203實(shí)現(xiàn)屏蔽RS103對請求數(shù)據(jù)包的ARP廣播的響應(yīng)。
在本發(fā)明中,第一宿主機(jī)203使用openflow協(xié)議。openflow協(xié)議是Nick McKeown教授等人在2007年提出的軟件定義網(wǎng)絡(luò)(Software DefinedNetworking,SDN)中的核心技術(shù),SDN架構(gòu)主要由openflow交換機(jī)和openflow控制器組成,交換機(jī)主要由openflow流表(FlowTable)、安全通道和OpenFlow協(xié)議三部分構(gòu)成。其中,OpenFlow流表用來進(jìn)行數(shù)據(jù)包的查找和轉(zhuǎn)發(fā)。
第一宿主機(jī)203上安裝了Open VSwitch軟件,從而實(shí)現(xiàn)相當(dāng)于openflow交換機(jī)的功能。由虛擬網(wǎng)絡(luò)中的其他遠(yuǎn)端服務(wù)器實(shí)現(xiàn)控制器的功能。第一宿主機(jī)203中包括openflow流表。openflow流表由多條流表項(xiàng)組成,每個(gè)流表項(xiàng)就是一個(gè)轉(zhuǎn)發(fā)規(guī)則。進(jìn)入第一宿主機(jī)203的數(shù)據(jù)包通過查詢流表來獲得轉(zhuǎn)發(fā)的目的端口。流表項(xiàng)包括匹配字段,匹配字段用于查詢匹配特征。流表項(xiàng)還包括指令字段,指令字段用于執(zhí)行相應(yīng)操作。
第一宿主機(jī)203的openflow流表中包含代答指令的流表項(xiàng)。第一宿主機(jī)203接收來自客戶端101的請求數(shù)據(jù)包301,并從請求數(shù)據(jù)包301中提取第一特征,將第一特征與多條流表項(xiàng)進(jìn)行的匹配字段匹配。當(dāng)?shù)谝惶卣髋c代答指令的流表項(xiàng)中的匹配字段匹配時(shí),則執(zhí)行代答指令的流表項(xiàng)中的指令字段,向客戶端返回代答數(shù)據(jù)。
第一特征包括目標(biāo)IP地址,數(shù)據(jù)包是否包括ARP報(bào)頭,源宿主機(jī)IP地址。代答指令的流表項(xiàng)中的匹配字段包括負(fù)載調(diào)度服務(wù)器102的vip,ARP報(bào)頭,客戶端宿主機(jī)201IP地址。也就是說,當(dāng)?shù)谝惶卣鞯哪繕?biāo)IP地址為負(fù)載調(diào)度服務(wù)器102的vip,請求數(shù)據(jù)包301包括ARP報(bào)頭,源宿主機(jī)IP地址為客戶端宿主機(jī)201IP地址,判斷匹配代答指令的流表項(xiàng),從而執(zhí)行代答指令的流表項(xiàng)中的指令字段,向客戶端101返回代答數(shù)據(jù),并將RS103對于ARP廣播的響應(yīng)信息拋棄。
由于第一宿主機(jī)203向客戶端101返回代答數(shù)據(jù),從而使得RS103對于ARP廣播應(yīng)答無法到達(dá)客戶端101,也就是說屏蔽了RS103對請求數(shù)據(jù)包301的ARP廣播的響應(yīng)。
本實(shí)施例中采用了openflow流表的代答方式,在其他實(shí)施例中,也可以通過其他方式實(shí)現(xiàn),例如第一宿主機(jī)203拋棄接收到的客戶端101發(fā)送的請求數(shù)據(jù)包301的地址解析協(xié)議信息,從而屏蔽RS103對請求數(shù)據(jù)包301的ARP廣播進(jìn)行響應(yīng)。然而,使用拋棄請求數(shù)據(jù)包301的方式,會(huì)使得客戶端101不斷發(fā)送ARP廣播,而本實(shí)施例中采用的openflow流表的代答方式不會(huì)發(fā)生這樣的情況。
接著如步驟S102,負(fù)載調(diào)度服務(wù)器102接收來自客戶端101的請求數(shù)據(jù)包301后,根據(jù)設(shè)定的負(fù)載調(diào)度算法確定用于處理客戶端請求數(shù)據(jù)包301的RS103。負(fù)載調(diào)度算法可以采用已有的VS/DR模式中的負(fù)載調(diào)度算法。
如步驟S103,負(fù)載調(diào)度服務(wù)器102將請求數(shù)據(jù)包301中的目標(biāo)端口轉(zhuǎn)換為RS103的端口,將目標(biāo)硬件地址轉(zhuǎn)換為第一宿主機(jī)203的硬件地址,從而得到轉(zhuǎn)換后的的請求數(shù)據(jù)包302。
通常的VS/DR模式中要求負(fù)載調(diào)度服務(wù)器和RS需要在同一個(gè)網(wǎng)段中,負(fù)載調(diào)度服務(wù)器將請求數(shù)據(jù)包中的目標(biāo)硬件地址轉(zhuǎn)換為RS的硬件地址從而使得與負(fù)載調(diào)度服務(wù)器同網(wǎng)段中的RS可以接收到請求數(shù)據(jù)包。當(dāng)負(fù)載調(diào)度服務(wù)器和RS不在一個(gè)網(wǎng)段中時(shí),負(fù)載調(diào)度服務(wù)器無法將請求數(shù)據(jù)包發(fā)送至RS。
在本發(fā)明中,由于RS103以虛擬機(jī)的形式運(yùn)行在第二宿主機(jī)203中,因此對于虛擬機(jī)的IP地址可以根據(jù)獨(dú)立于第二宿主機(jī)203的IP地址而根據(jù)需要設(shè)置為與負(fù)載調(diào)度服務(wù)器擁有相同的vip地址。但是,還存在RS103端口可能與負(fù)載調(diào)度服務(wù)器102的端口不一致的情況,由于端口不同,仍然會(huì)使得負(fù)載調(diào)度服務(wù)器102無法將請求數(shù)據(jù)包發(fā)送至RS103。
針對以上的問題,本示例中負(fù)載調(diào)度服務(wù)器102將請求數(shù)據(jù)包301中的目標(biāo)端口轉(zhuǎn)換為RS103的端口,將目標(biāo)硬件地址轉(zhuǎn)換為第一宿主機(jī)203硬件地址,從而使得轉(zhuǎn)換后的請求數(shù)據(jù)包302能夠被RS103接收。
負(fù)載調(diào)度服務(wù)器102將請求數(shù)據(jù)包301中的目標(biāo)端口轉(zhuǎn)換為RS103的端口,將目標(biāo)硬件地址轉(zhuǎn)換為第一宿主機(jī)203硬件地址的方法可采用直接修改數(shù)據(jù)包的方法。
如圖1所示,負(fù)載調(diào)度服務(wù)器102處理后,第二宿主機(jī)202對請求數(shù)據(jù)包301進(jìn)行轉(zhuǎn)換并得到轉(zhuǎn)換后的請求數(shù)據(jù)包302。具體而言,第二宿主機(jī)202將目標(biāo)端口轉(zhuǎn)換為RS103的端口8080,將目標(biāo)宿主機(jī)IP地址以及目標(biāo)硬件地址改為第一宿主機(jī)203的IP地址172.24.1.20以及硬件地址(未示出)。
接著,如步驟S104,負(fù)載調(diào)度服務(wù)器102將轉(zhuǎn)換后的請求數(shù)據(jù)包302發(fā)送至RS103。
RS103根據(jù)轉(zhuǎn)換后的請求數(shù)據(jù)包302的目標(biāo)IP地址10.10.1.100以及目標(biāo)端口8080接收轉(zhuǎn)換后的請求數(shù)據(jù)包302。
RS103在接收轉(zhuǎn)換后的請求數(shù)據(jù)包302后,對請求數(shù)據(jù)進(jìn)行處理響應(yīng),并構(gòu)建回復(fù)數(shù)據(jù)包303。
如步驟S105,第一宿主機(jī)203向客戶端101發(fā)送回復(fù)數(shù)據(jù)包303。圖3示出了圖2中的S105步驟的詳細(xì)流程。
如圖3所示,如步驟S1051,第一宿主機(jī)203接收RS103構(gòu)建的回復(fù)數(shù)據(jù)包303。
在上文中已經(jīng)描述第一宿主機(jī)203使用openflow協(xié)議,如步驟S1052,第一宿主機(jī)203通過openflow流表將回復(fù)數(shù)據(jù)包303中的源地址端口轉(zhuǎn)換為負(fù)載調(diào)度服務(wù)器102端口。
具體而言,openflow流表中包含轉(zhuǎn)換端口的流表項(xiàng),第一宿主機(jī)203從回復(fù)數(shù)據(jù)包303中提取第二特征,將第二特征與多條流表項(xiàng)的匹配字段進(jìn)行匹配。當(dāng)?shù)诙卣髋c代答指令的流表項(xiàng)中的匹配字段匹配時(shí),則執(zhí)行轉(zhuǎn)換端口的流表項(xiàng)中的指令字段,將回復(fù)數(shù)據(jù)包303中的源地址端口轉(zhuǎn)換為負(fù)載調(diào)度服務(wù)器102端口。
第二特征包括目標(biāo)IP地址,源端口。轉(zhuǎn)換端口的流表項(xiàng)中的匹配字段包括客戶端101IP地址,RS103端口。也就是說,當(dāng)?shù)诙卣鞯哪繕?biāo)IP地址為客戶端101IP地址,且源端口為RS103端口時(shí),則判斷匹配轉(zhuǎn)換端口的流表項(xiàng),從而執(zhí)行轉(zhuǎn)換端口的流表項(xiàng)中的指令字段,將回復(fù)數(shù)據(jù)包303中的源地址端口轉(zhuǎn)換為負(fù)載調(diào)度服務(wù)器102端口。
由于回復(fù)數(shù)據(jù)包303由第一宿主機(jī)203發(fā)出,因此回復(fù)數(shù)據(jù)包303的源硬件地址設(shè)置為第一宿主機(jī)203的硬件地址。
回復(fù)數(shù)據(jù)包303的源IP地址以及源端口為負(fù)載調(diào)度服務(wù)器102的vip10.10.1.100以及負(fù)載調(diào)度服務(wù)器102的端口80。源宿主機(jī)IP地址以及源硬件地址為第一宿主機(jī)203的IP地址172.24.1.20以及第一宿主機(jī)203的硬件地址(未示出)。目標(biāo)IP地址以及目標(biāo)端口為客戶端101IP地址10.10.1.10以及客戶端101端口36000。
對于客戶端101而言,由于回復(fù)數(shù)據(jù)包303的源IP地址以及源端口均與客戶端101發(fā)出的請求數(shù)據(jù)包301的目標(biāo)IP地址以及目標(biāo)端口一致,因此客戶端101將接收該回復(fù)數(shù)據(jù)包303并進(jìn)行關(guān)聯(lián)。
通過以上對本發(fā)明的流程以及數(shù)據(jù)流向的介紹可以得知,本發(fā)明通過第一宿主機(jī)203借助openflow流表對回復(fù)數(shù)據(jù)包303進(jìn)行轉(zhuǎn)換,從而方便地實(shí)現(xiàn)了在負(fù)載調(diào)度服務(wù)器102和RS103端口不一致的情況下實(shí)現(xiàn)數(shù)據(jù)通信的方法。且通過本發(fā)明的方法,只需要對第一宿主機(jī)203進(jìn)行設(shè)置,而無需對RS103進(jìn)行設(shè)置。
在實(shí)踐中,負(fù)載調(diào)度服務(wù)器102以及第一宿主機(jī)203的運(yùn)營主體與RS103的運(yùn)營主體通常不一致,通過本發(fā)明的方法,RS103無需做任何變動(dòng)即可實(shí)現(xiàn)跨端口的服務(wù)器負(fù)載均衡。
根據(jù)以上方法,本發(fā)明還提供了一種服務(wù)器負(fù)載均衡的裝置,即第一宿主機(jī)203,第一宿主機(jī)203使用openflow協(xié)議。
第一宿主機(jī)203包括端口轉(zhuǎn)換模塊,數(shù)據(jù)包發(fā)送模塊以及代答指令模塊。
其中端口轉(zhuǎn)換模塊接收RS103的回復(fù)數(shù)據(jù)包303,并通過openflow流表將回復(fù)數(shù)據(jù)包303中的源地址端口轉(zhuǎn)換為負(fù)載調(diào)度服務(wù)器102的端口。具體的轉(zhuǎn)換方法在上文描述方法時(shí)已說明,此處不再贅述。
數(shù)據(jù)包發(fā)送模塊將轉(zhuǎn)換后的回復(fù)數(shù)據(jù)包303向客戶端103發(fā)送。
代答指令模塊接收來自客戶端101的請求數(shù)據(jù)包301,代答指令模塊通過openflow流表對來自客戶端101的請求數(shù)據(jù)包301的ARP廣播進(jìn)行代答,從而屏蔽RS103對請求數(shù)據(jù)包301的ARP信息廣播的響應(yīng)。具體的代答指令方法在上文描述方法時(shí)已說明,此處不再贅述。
需要說明的是,本發(fā)明是計(jì)算機(jī)在虛擬環(huán)境下負(fù)載均衡技術(shù)的一種應(yīng)用。在本發(fā)明的實(shí)現(xiàn)過程中,會(huì)涉及到多個(gè)軟件功能模塊的應(yīng)用。如在仔細(xì)閱讀申請文件、準(zhǔn)確理解本發(fā)明的實(shí)現(xiàn)原理和發(fā)明目的以后,在結(jié)合現(xiàn)有公知技術(shù)的情況下,本領(lǐng)域技術(shù)人員完全可以運(yùn)用其掌握的軟件編程技能實(shí)現(xiàn)本發(fā)明。前述軟件功能模塊包括但不限于:數(shù)據(jù)包接收模塊,openflow流表獲取模塊等,凡本發(fā)明申請文件提及的均屬此范疇,申請人不再一一列舉。
由于本發(fā)明是在傳統(tǒng)的VS/DR模式上的改進(jìn),因此對于本發(fā)明中未詳細(xì)描述的實(shí)現(xiàn)步驟,本領(lǐng)域技術(shù)人員可采用現(xiàn)有VS/DR模式實(shí)現(xiàn)。關(guān)于本發(fā)明中未詳細(xì)描述的宿主機(jī)對于虛擬機(jī)的控制,本領(lǐng)域技術(shù)人員可采用現(xiàn)有的宿主機(jī)-虛擬機(jī)控制方式。對于基于SDN架構(gòu)的openflow交換機(jī)與openflow控制器的交互也可采用現(xiàn)有的交互方式。
以上僅是本發(fā)明的具體應(yīng)用范例,對本發(fā)明的保護(hù)范圍不構(gòu)成任何限制。除上述實(shí)施例外,本發(fā)明還可以有其它實(shí)施方式。凡采用等同替換或等效變換形成的技術(shù)方案,均落在本發(fā)明所要求保護(hù)的范圍之內(nèi)。