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