Linux服務(wù)器集群系統(tǒng)之通過直接路由實(shí)現(xiàn)虛擬服務(wù)器(VS/DR)
Linux服務(wù)器集群系統(tǒng)是當(dāng)代許多公司采用的解決方案,Linux服務(wù)器集群通過多臺機(jī)器連接起來,處理復(fù)雜的問題。可以將同構(gòu)或者異構(gòu)的計算機(jī)連接起來,協(xié)同完成特定的任務(wù)。這樣就構(gòu)成了集群。LVS是Linux virtual server的縮寫,他的意思是Linux虛擬機(jī)服務(wù)。本文主要介紹的是基于Linux下的集群系統(tǒng)之通過IP隧道實(shí)現(xiàn)虛擬服務(wù)器(VS/TUN)。
跟VS/TUN方法相同,VS/DR利用大多數(shù)Internet服務(wù)的非對稱特點(diǎn),負(fù)載調(diào)度器中只負(fù)責(zé)調(diào)度請求,而服務(wù)器直接將響應(yīng)返回給客戶,可以極大地提高整個集群系統(tǒng)的吞吐量。該方法與IBM的NetDispatcher產(chǎn)品中使用的方法類似(其中服務(wù)器上的IP地址配置方法是相似的),但I(xiàn)BM的NetDispatcher是非常昂貴的商品化產(chǎn)品,我們也不知道它內(nèi)部所使用的機(jī)制,其中有些是IBM的專利。
VS/DR的體系結(jié)構(gòu)如圖7所示:調(diào)度器和服務(wù)器組都必須在物理上有一個網(wǎng)卡通過不分?jǐn)嗟木钟蚓W(wǎng)相連,如通過高速的交換機(jī)或者HUB相連。VIP地址為調(diào)度器和服務(wù)器組共享,調(diào)度器配置的VIP地址是對外可見的,用于接收虛擬服務(wù)的請求報文;所有的服務(wù)器把VIP地址配置在各自的Non-ARP網(wǎng)絡(luò)設(shè)備上,它對外面是不可見的,只是用于處理目標(biāo)地址為VIP的網(wǎng)絡(luò)請求。
圖7:VS/DR的體系結(jié)構(gòu)
VS/DR的工作流程如圖8所示:它的連接調(diào)度和管理與VS/NAT和VS/TUN中的一樣,它的報文轉(zhuǎn)發(fā)方法又有不同,將報文直接路由給目標(biāo)服務(wù)器。在VS/DR中,調(diào)度器根據(jù)各個服務(wù)器的負(fù)載情況,動態(tài)地選擇一臺服務(wù)器,不修改也不封裝IP報文,而是將數(shù)據(jù)幀的MAC地址改為選出服務(wù)器的MAC地址,再將修改后的數(shù)據(jù)幀在與服務(wù)器組的局域網(wǎng)上發(fā)送。因?yàn)閿?shù)據(jù)幀的MAC地址是選出的服務(wù)器,所以服務(wù)器肯定可以收到這個數(shù)據(jù)幀,從中可以獲得該IP報文。當(dāng)服務(wù)器發(fā)現(xiàn)報文的目標(biāo)地址VIP是在本地的網(wǎng)絡(luò)設(shè)備上,服務(wù)器處理這個報文,然后根據(jù)路由表將響應(yīng)報文直接返回給客戶。
圖8:VS/DR的工作流程
在VS/DR中,根據(jù)缺省的TCP/IP協(xié)議棧處理,請求報文的目標(biāo)地址為VIP,響應(yīng)報文的源地址肯定也為VIP,所以響應(yīng)報文不需要作任何修改,可以直接返回給客戶,客戶認(rèn)為得到正常的服務(wù),而不會知道是哪一臺服務(wù)器處理的。
VS/DR負(fù)載調(diào)度器跟VS/TUN一樣只處于從客戶到服務(wù)器的半連接中,按照半連接的TCP有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移。
【編輯推薦】