LVS-TUN模式

一:LVS-TUN模式的工作原理

在VS/NAT 的集羣系統中,請求和響應的數據報文都需要通過負載調度器,當真實服務器的數目在10臺和20臺之間時,負載調度器將成爲整個集羣系統的新瓶頸。大多數 Internet服務都有這樣的特點:請求報文較短而響應報文往往包含大量的數據。如果能將請求和響應分開處理,即在負載調度器中只負責調度請求而響應直 接返回給客戶,將極大地提高整個集羣系統的吞吐量。

IP隧道(IP tunneling)是將一個IP報文封裝在另一個IP報文的技術,這可以使得目標爲一個IP地址的數據報文能被封裝和轉發到另一個IP地址。IP隧道技 術亦稱爲IP封裝技術(IP encapsulation)。IP隧道主要用於移動主機和虛擬私有網絡(Virtual Private Network),在其中隧道都是靜態建立的,隧道一端有一個IP地址,另一端也有唯一的IP地址。

我們利用IP隧道技術將請求報文封裝轉 發給後端服務器,響應報文能從後端服務器直接返回給客戶。但在這裏,後端服務器有一組而非一個,所以我們不可能靜態地建立一一對應的隧道,而是動態地選擇 一臺服務器,將請求報文封裝和轉發給選出的服務器。這樣,我們可以利用IP隧道的原理將一組服務器上的網絡服務組成在一個IP地址上的虛擬網絡服務。 VS/TUN的體系結構如圖4所示,各個服務器將VIP地址配置在自己的IP隧道設備上。

VS/TUN的體系結構
圖4:VS/TUN的體系結構

VS/TUN 的工作流程如圖5所示:它的連接調度和管理與VS/NAT中的一樣,只是它的報文轉發方法不同。調度器根據各個服務器的負載情況,動態地選擇一臺服務器, 將請求報文封裝在另一個IP報文中,再將封裝後的IP報文轉發給選出的服務器;服務器收到報文後,先將報文解封獲得原來目標地址爲VIP的報文,服務器發 現VIP地址被配置在本地的IP隧道設備上,所以就處理這個請求,然後根據路由表將響應報文直接返回給客戶。

 

VS/TUN的工作流程
圖5:VS/TUN的工作流程

 

在這裏需要指出,根據缺省的TCP/IP協議棧處理,請求報文的目標地址爲VIP,響應報文的源地址肯定也爲VIP,所以響應報文不需要作任何修改,可以直接返回給客戶,客戶認爲得到正常的服務,而不會知道究竟是哪一臺服務器處理的。

 

半連接的TCP有限狀態機
圖6:半連接的TCP有限狀態機

二:LVS-TUN模式下的負載均衡

實驗環境:

LoadBalance:172.25.254.1

VIP:172.25.254.100

RS1(server5):172.25.254.5

RS2(server6):172.25.254.6

1.在server1中

配置網絡:

添加yum源:

安裝服務,並開啓服務

清空並給VIP添加RIP,查看調度IP情況

2.在server5中

安裝apache並且寫好配置文件,重啓服務:

配置網絡:

安裝arptables_jf 工具,DROP掉其訪問的ip,出去的ip全部轉換本機的ip

關閉rp_filter

**rp_filter參數的作用:

減少DDoS攻擊:檢驗數據包的反向路徑,如果反向路徑不合適,則直接丟棄數據包,避免減少過多的無效連接消耗系統資源。

防止IP Spooling:校驗數據包的反向路徑,如果客戶端僞造的源IP地址對應的反向路徑不在路由表中,或者反向路徑不是最佳路徑,則直接丟棄數據包,不會向僞造IP的客戶端恢復反應。

3.在server6中

安裝httpd,寫好配置文件,啓動服務

配置網絡:

安裝arptables_jf工具

關閉rp_filter

4.測試:

for i in {1..10};do curl 172.25.254.100;done

可以檢測出server5和server6輪循