企業級負載均衡集羣---LVS(三)---TUN隧道模式及LVSzj

企業級負載均衡集羣—LVS(三)—TUN隧道模式

1.TUN隧道模式

  1. 隧道模式

IP隧道(IP tunneling)是將一個IP報文封裝在另一個IP報文的技術,這可以使得目標爲一個IP地址的數據報文能被封裝和轉發到另一個IP地址。

IP隧道技術亦稱爲IP封裝技術

IP隧道主要用於移動主機和虛擬私有網絡(Virtual Private Network),在其中隧道都是靜態建立的,隧道一端有一個IP地址,另一端也有唯一的IP地址

  1. 添加隧道

分別在server1、server2和server3中做以下操作:

modprobe ipip								#添加隧道
ip addr show								#查看是否成功添加
ip addr del 192.168.43.100/32 dev eth0		#刪除上一實驗中的VIP
ip addr add 192.168.43.100/32 dev tunl0		#隧道添加VIP
ip link set up tunl0						#隧道激活     一定記着激活

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

  1. 添加策略

在server1上清除之前的策略重新添加新的策略:

ipvsadm -C			#清除策略
ipvsadm -A -t 192.168.43.100:80 -s rr
ipvsadm -a -t 192.168.43.100:80 -r 192.168.43.72 -i
ipvsadm -a -t 192.168.43.100:80 -r 192.168.43.73 -i
ipvsadm -l

在這裏插入圖片描述

  1. 關閉反向過濾規則

在server2和server3中:

sysctl -a | grep rp_filter						#把所有等於0的項都改爲1
sysctl -w net.ipv4.conf.all.rp_filter=0
sysctl -w net.ipv4.conf.eth0.rp_filter=0
sysctl -w net.ipv4.conf.tunl0.rp_filter=0
sysctl -w net.ipv4.conf.default.rp_filter=0
sysctl -p										#使生效
sysctl -a | grep rp_filter

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
修改這個參數的原因是什麼?

rp_filter參數用於控制系統是否開啓對數據包源地址的校驗

有三個值:

0:不開啓源地址校驗。

1:開啓嚴格的反向路徑校驗。對每個進來的數據包,校驗其反向路徑是否是最佳路徑。如果反向路徑不是最佳路徑,則直接丟棄該數據包。

2:開啓鬆散的反向路徑校驗。對每個進來的數據包,校驗其源地址是否可達,即反向路徑是否能通(通過任意網口),如果反向路徑不同,則直接丟棄該數據包。

測試:
在這裏插入圖片描述

2.LVS的四種模式的工作原理

1.DR模式

Virtual Server via Direct Routing(VS-DR):用直接路由技術實現虛擬服務器。當參與集羣的計算機和作爲控制管理的計算機在同一個網段時可以用此方法,控制管理的計算機接收到請求包時直接送到參與集羣的節點。直接路由模式比較特別,很難說和什麼方面相似,前種模式基本上都是工作在網絡層上(三層),而直接路由模式則應該是工作在數據鏈路層上(二層)。

工作原理 :

在這裏插入圖片描述
如上圖所示,Director和REAL SERVER都配置同一個IP(VIP),Director將該IP配置到對外的網卡上,Real server將該IP配置到lo網卡上。配置arp_ignore爲1(目的是讓數據包發出apr請求時,只有Director會響應該arp請求),所有REAL SERVER對本身這個IP的ARP請求保持靜默。而Director收到數據包後根據調度算法,找出對應的 REAL SERVER,把目的MAC地址改爲REAL SERVER的MAC併發給這臺REAL SERVER。這時REAL SERVER通過網卡eth0收到這個數據包,由於Real Server上的lo網卡配置的也有VIP,所以RS接收該數據包。處理後直接返回給客戶端(這裏要配置arp_announce,目的是修改返回數據包的源ip地址。)。由於DR要對二層包頭進行改換,所以DR和REAL SERVER之間必須在一個廣播域,也可以簡單的理解爲在同一臺交換機上。

數據包流轉過程:
在這裏插入圖片描述
相對於NAT模式來言,DR模式能夠較好的解決上述問題,其數據在服務器集羣中的流向如上圖所示,請求報文經過LVS到達後端真實的WEB服務器,而響應報文,則直接發給客戶端,並不需要通過調度器。

  1. TUN模式

在這裏插入圖片描述

客戶端將請求發往前端的負載均衡器,請求報文源地址是CIP,目標地址爲VIP。

負載均衡器收到報文後,發現請求的是在規則裏面存在的地址,那麼它將在客戶端請求報文的首部再封裝一層IP報文,將源地址改爲DIP,目標地址改爲RIP,並將此包發送給RS。

RS收到請求報文後,會首先拆開第一層封裝,然後發現裏面還有一層IP首部的目標地址是自己lo接口上的VIP,所以會處理次請求報文,並將響應報文通過lo接口送給eth0網卡(這個網卡一般指和調度器在一個網段的網卡)直接發送給客戶端。注意:需要設置lo接口的VIP不能在公網上出現。

在 VS/TUN 的集羣系統中,負載調度器只將請求調度到不同的後端服務器,後端服務器將應答的數據直接返回給用戶。這樣,負載調度器就可以處理大量的請求,它甚至可以調度百臺以上的服務器(同等規模的服務器),而它不會成爲系統的瓶頸。即使負載調度器只有 100Mbps的全雙工網卡,整個系統的最大吞吐量可超過 1Gbps。所以,VS/TUN 可以極大地增加負載調度器調度的服務器數量。VS/TUN 調度器可以調度上百臺服務器,而它本身不會成爲系統的瓶頸,可以 用來構建高性能的超級服務器

  1. NAT模式
    Virtual Server via NAT(VS-NAT):用地址翻譯實現虛擬服務器。地址轉換器有能被外界訪問到的合法IP地址,它修改來自專有網絡的流出包的地址。外界看起來包是來自地址轉換器本身,當外界包送到轉換器時,它能判斷出應該將包送到內部網的哪個節點。

在這裏插入圖片描述
在這裏插入圖片描述
數據包流轉的過程如上圖所示

1.當用戶請求到達DirectorServer,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP爲CIP,目標IP爲VIP 。

2.PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈。

3.IPVS比對數據包請求的服務是否爲集羣服務,若是,修改數據包的目標IP地址爲後端服務器IP,然後將數據包發至POSTROUTING鏈。 此時報文的源IP爲CIP,目標IP爲RIP ,在這個過程完成了目標IP的轉換。

4.POSTROUTING鏈通過選路,將數據包發送給Real Server。

5.Real Server比對發現目標爲自己的IP,開始構建響應報文發回給Director Server。 此時報文的源IP爲RIP,目標IP爲CIP 。

6.Director Server在響應客戶端前,此時會將源IP地址修改爲自己的VIP地址,然後響應給客戶端。 此時報文的源IP爲VIP,目標IP爲CIP。

NAT模式優點是節省IP地址,能對內部進行僞裝;缺點是效率低,因爲返回給請求方的數據包經過調度器。

  1. full-nat模式

在這裏插入圖片描述
特點:

RIP,DIP可以使用私有地址;
RIP和DIP可以不再同一個網絡中,且RIP的網關未必需要指向DIP;
支持端口映射;
RS的OS可以使用任意類型;
請求報文經由Director,響應報文也經由Director
抗攻擊,跨vlan,需要重新編譯內核

優點:解決了跨VLAN的問題。採用這種方式,LVS和RS的部署在VLAN上將不再有任何限制,大大提高了運維部署的便利性。

3.八種調度算法

LVS有兩種類型的調度算法:

靜態的調度算法。這種算法一經實現,後續就不會發生變化,是既定的規則,後續數據包的流轉都會按照這種規則進行按部就班的流轉

動態的調度算法。這種算法是基於網絡狀況,或者後端服務器的狀況,連接的狀況等來進行實時的調整,算法的規則會根據實際情況而發生一定的變化。

  1. 常用的靜態調度算法

RR:輪叫調度(Round Robin)
調度器通過”輪叫”調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上實際的連接數和系統負載。

WRR:加權輪叫(Weight RR)
調度器通過“加權輪叫”調度算法根據真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器處理更多的訪問流量。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。

DH:目標地址散列調度(Destination Hash )
根據請求的目標IP地址,作爲散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。

SH:源地址 hash(Source Hash)
源地址散列”調度算法根據請求的源IP地址,作爲散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。

  1. 常用的動態調度算法

LC:最少鏈接(Least Connections)
調度器通過”最少連接”調度算法動態地將網絡請求調度到已建立的鏈接數最少的服務器上。如果集羣系統的真實服務器具有相近的系統性能,採用”最小連接”調度算法可以較好地均衡負載。

WLC:加權最少連接(Weighted Least Connections)
在集羣系統中的服務器性能差異較大的情況下,調度器採用“加權最少鏈接”調度算法優化負載均衡性能,具有較高權值的服務器將承受較大比例的活動連接負載。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。(默認採用這種)

SED:最短延遲調度(Shortest Expected Delay)
在WLC基礎上改進,Overhead = (ACTIVE+1)*256/加權,不再考慮非活動狀態,把當前處於活動狀態的數目+1來實現,數目最小的,接受下次請求,+1的目的是爲了考慮加權的時候,非活動連接過多缺陷:當權限過大的時候,會倒置空閒服務器一直處於無連接狀態。

NQ永不排隊/最少隊列調度(Never Queue Scheduling NQ)
無需隊列。如果有臺 realserver的連接數=0就直接分配過去,不需要再進行sed運算,保證不會有一個主機很空間。在SED基礎上無論+幾,第二次一定給下一個,保證不會有一個主機不會很空閒着,不考慮非活動連接,才用NQ,SED要考慮活動狀態連接,對於DNS的UDP不需要考慮非活動連接,而httpd的處於保持狀態的服務就需要考慮非活動連接給服務器的壓力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章