Linux服務(wù)器集群系統(tǒng)之通過IP隧道實(shí)現(xiàn)虛擬服務(wù)器(VS/TUN)
Linux服務(wù)器集群系統(tǒng)是當(dāng)代許多公司采用的解決方案,Linux服務(wù)器集群通過多臺(tái)機(jī)器連接起來,處理復(fù)雜的問題。可以將同構(gòu)或者異構(gòu)的計(jì)算機(jī)連接起來,協(xié)同完成特定的任務(wù)。這樣就構(gòu)成了集群。LVS是Linux virtual server的縮寫,他的意思是Linux虛擬機(jī)服務(wù)。本文主要介紹的是基于Linux下的集群系統(tǒng)之通過IP隧道實(shí)現(xiàn)虛擬服務(wù)器(VS/TUN)。
在VS/NAT的集群系統(tǒng)中,請求和響應(yīng)的數(shù)據(jù)報(bào)文都需要通過負(fù)載調(diào)度器,當(dāng)真實(shí)服務(wù)器的數(shù)目在10臺(tái)和20臺(tái)之間時(shí),負(fù)載調(diào)度器將成為整個(gè)集群系統(tǒng)的新瓶頸。大多數(shù)Internet服務(wù)都有這樣的特點(diǎn):請求報(bào)文較短而響應(yīng)報(bào)文往往包含大量的數(shù)據(jù)。如果能將請求和響應(yīng)分開處理,即在負(fù)載調(diào)度器中只負(fù)責(zé)調(diào)度請求而響應(yīng)直接返回給客戶,將極大地提高整個(gè)集群系統(tǒng)的吞吐量。
IP隧道(IP tunneling)是將一個(gè)IP報(bào)文封裝在另一個(gè)IP報(bào)文的技術(shù),這可以使得目標(biāo)為一個(gè)IP地址的數(shù)據(jù)報(bào)文能被封裝和轉(zhuǎn)發(fā)到另一個(gè)IP地址。IP隧道技術(shù)亦稱為IP封裝技術(shù)(IP encapsulation)。IP隧道主要用于移動(dòng)主機(jī)和虛擬私有網(wǎng)絡(luò)(Virtual Private Network),在其中隧道都是靜態(tài)建立的,隧道一端有一個(gè)IP地址,另一端也有***的IP地址。
我們利用IP隧道技術(shù)將請求報(bào)文封裝轉(zhuǎn)發(fā)給后端服務(wù)器,響應(yīng)報(bào)文能從后端服務(wù)器直接返回給客戶。但在這里,后端服務(wù)器有一組而非一個(gè),所以我們不可能靜態(tài)地建立一一對應(yīng)的隧道,而是動(dòng)態(tài)地選擇一臺(tái)服務(wù)器,將請求報(bào)文封裝和轉(zhuǎn)發(fā)給選出的服務(wù)器。這樣,我們可以利用IP隧道的原理將一組服務(wù)器上的網(wǎng)絡(luò)服務(wù)組成在一個(gè)IP地址上的虛擬網(wǎng)絡(luò)服務(wù)。VS/TUN的體系結(jié)構(gòu)如圖4所示,各個(gè)服務(wù)器將VIP地址配置在自己的IP隧道設(shè)備上。
圖4:VS/TUN的體系結(jié)構(gòu)
VS/TUN的工作流程如圖5所示:它的連接調(diào)度和管理與VS/NAT中的一樣,只是它的報(bào)文轉(zhuǎn)發(fā)方法不同。調(diào)度器根據(jù)各個(gè)服務(wù)器的負(fù)載情況,動(dòng)態(tài)地選擇一臺(tái)服務(wù)器,將請求報(bào)文封裝在另一個(gè)IP報(bào)文中,再將封裝后的IP報(bào)文轉(zhuǎn)發(fā)給選出的服務(wù)器;服務(wù)器收到報(bào)文后,先將報(bào)文解封獲得原來目標(biāo)地址為VIP的報(bào)文,服務(wù)器發(fā)現(xiàn)VIP地址被配置在本地的IP隧道設(shè)備上,所以就處理這個(gè)請求,然后根據(jù)路由表將響應(yīng)報(bào)文直接返回給客戶。
圖5:VS/TUN的工作流程
在這里需要指出,根據(jù)缺省的TCP/IP協(xié)議棧處理,請求報(bào)文的目標(biāo)地址為VIP,響應(yīng)報(bào)文的源地址肯定也為VIP,所以響應(yīng)報(bào)文不需要作任何修改,可以直接返回給客戶,客戶認(rèn)為得到正常的服務(wù),而不會(huì)知道究竟是哪一臺(tái)服務(wù)器處理的。
圖6:半連接的TCP有限狀態(tài)機(jī)
【編輯推薦】
- Linux集群原理與安裝配置匯總
- “懶惰”Linux集群管理員的11個(gè)秘訣
- 圖文詳解 文件柜內(nèi)DIY自己的Linux集群機(jī)
- 大型Linux集群的安裝節(jié)點(diǎn)和管理
- 大型Linux集群簡介和硬件配置
- 高性能Linux集群基礎(chǔ)知識(shí)