1. 程式人生 > >初識LVS(二)——LVS的DR工作模式

初識LVS(二)——LVS的DR工作模式

lvs dr

LVS的DR模式介紹

LVS在NAT模式下所有的請求和響應報文都需要經過director,盡管LVS工作在內核層不受套接字文件65535的數量限制,但也有可能會成為性能瓶頸(如視頻網站),以下介紹LVS的另一種工作模式——dr模式,它是LVS默認的工作模式。與nat模式通過單邊修改源或目標的IP地址實現負載均衡功能不同,dr模式則是通過修改mac地址來實現該功能,整個過程中源和目標的IP地址不發生變法。

LVS的dr模式工作原理

與nat模式下LVS負載均衡器充當內網中RS服務器的網關不同,dr模式下LVS負載均衡器和RS主機各自只需要一塊網卡並接在同一個交換機下

技術分享

我們將客戶端向服務器端發出請求,經過網絡上路由器層層轉發後,到達LVS服務器所在網絡的接口IP地址設為CIP,此時數據報文中源地址是CIP;目標地址是VIP

技術分享

由於本地網絡中計算機之間是通過mac地址進行通信,此時路由器的CIP接口會向本地網絡發出廣播索要VIP接口的mac地址,VIP接口接收到廣播後上報自己的mac地址,數據報文在IP地址上再封裝一層mac地址後發送給LVS負載均衡器

技術分享

LVS負載均衡器在接收到請求後拆掉mac地址,根據設置的調度規則,選定一個服務器(以服務器1為例),並將目標mac地址改為RIP1的mac地址後發還給路由器的CIP接口,此處需要註意的是director只能通過DIP與realserver通信,所以LVS負載均衡器上同時還要配置一個DIP地址

技術分享

路由器的CIP接口在接收到修改過目標mac地址的報文後從新將數據報發給新mac地址所對應的服務器1,當服務器1接收到請求後拆掉mac報發現請求的地址是VIP,所以realserver上還需要配置VIP地址,否則請求將會被丟棄,且realserver的VIP地址綁在回環接口上,避免地址發生沖突,與此同時又引入一個新問題:在之前過程中廣播尋找VIP地址時director和realserver都會相應,通過修改realserver內核參數避免這種情況的產生

技術分享

服務器處理完請求後直接將結果返回給客戶端而不再經過director

技術分享

arp抑制功能

realserver為了避免在本地網絡中廣播索要VIP的mac地址時,需要修改內核參數開啟arp抑制功能,修改的參數是arp_announce和arp_ignore,下面分別進行說明。

1.arp_announce

主動向外通告計算機所有的IP地址,arp_announce有0、1、2三個值,0為默認值,如下圖所示,1.1會向1.2通告所有的IP地址包括2.1和3.1,同理2.1和3.1也會向各自所在的網段通告本機所有的IP,由於realserver不能和director去搶著響應VIP的廣播,所以在realserver上需要將arp_announce值設置為2

技術分享

2.arp_ignore

請求從哪個接口進來該接口才做出響應,其余接口不做響應,以上圖為例,請求從1.1接口進來,所以只有1.1接口做出回應,2.1和3.1接口不做響應,arp_ignore有9個值,0為默認值,如下圖所示,此處需要將arp_ignore值設置為1,另外需要註意的是arp抑制的操作應在給realserver設置VIP之前完成

技術分享

總結

1.lvs-dr模式它通過修改請求報文的目標MAC地址進行轉發,請求報文經由director調度,響應報文不經過director

2.director上配置DIP和VIP,realserver上配置RIP和VIP,同時啟用realserver的arp抑制功能

3.realserver跟director必須在同一物理網絡中,可以是不同的vlan,只要中間沒有路由設備;RS的RIP可以使用私有地址但也可以使用公網地址

4.因為響應報文不經過director,所以不支持端口映射;

5.realserver可以大多數支持設置arp抑制的系統;

6.realserver的網關不能指向DIP

操作步驟

網絡拓撲

技術分享

LVS負載均衡器和web服務器系統版本均為CentOS6.8,LVS負載均衡器有1張網卡,VIP地址配置在本地接口別名上,安裝ipvsadm作為director,web服務器為realserver,安裝httpd提供頁面服務,VIP配置在本地回環接口別名上,此處便於演示效果讓2臺web服務器頁面不一致,安裝步驟省卻。

操作步驟

1.將VIP地址設置在director本地接口別名或回環接口上(本地網絡中是通過廣播尋找VIP地址,所以在那個接口無所謂,如果使用ip addr add命令可以直接在eth0上設置多個地址),並查看是否生效

技術分享2.指定LVS的director服務器,並選擇調度模式;指定realserver服務器並設置數據轉發類型,查看設置是否生效

技術分享

3.保存ipvsadm當前配置,指定一個保存文件,便於清理後從該文件恢復配置

技術分享

4.realserver服務器做arp抑制,抑制時註意將所有端口都要進行設置,除了all之外由於RIP是設置在eth0上與外部通信,所以也要進行設置

技術分享5.將VIP配置在realserver的回環地址上,並添加路由,要求前往172.16.10.100的流量必須從經過lo:0接口。如果使用ip addr add命令可以直接在eth0或lo上設置,且不需要添加路由

技術分享

6.確認realserver的網關一定不能指向DIP,至此操作全部完成

技術分享

補充說明

本地接口和回環接口

本地接口是一個真實的物理接口,自身有mac地址;而會換接口是一個邏輯接口沒有mac地址。本地接口別名和本地接口可以是不同的IP地址,但使用相同的mac地址;而回環接口和回環地址別名有不同的IP地址,但都沒有mac地址。

所以當director將目標mac地址更改完後realserver是通過RIP的接口接收到,發現mac地址就是自己的本地接口後拆掉mac地址,發現目標IP是VIP,而VIP配置在環回地址的別名上,所以此時需要使用route add -host 172.16.10.100 dev lo:0

技術分享

而當數據報文返回時由於是從RIP接口進來應該直接由RIP接口返回,但是客戶端請求的是VIP的地址,此時又強行讓數據報文先經過VIP,整個lvs-dr模式工作流程如下:

技術分享

1.客戶端向VIP地址發起請求

2.本地網絡通過廣播形式尋找VIP的mac地址,director進行響應並接受請求

3.director根據設置的調度規則選定一個負責處理的realserver,並將目標mac地址改為對應realserver的mac地址

4.按照新的目標mac地址重新發出請求,RIP接口發現目標mac地址就是自己拆封後發現目標IP是本地回環接口上的IP,交由本地回環接口處理

5.由於數據報文時從物理接口流入,守護進程處理完後交由物理接口返還客戶端

6.但此時物理接口上的IP為RIP並不是客戶端請求的VIP,所以數據報文被強行指向VIP的環回接口

7.回環接口封裝完IP地址後再封裝物理接口的mac地址,將結果返回客戶端


本文出自 “兔樣兔森破” 博客,請務必保留此出處http://arkling.blog.51cto.com/2844506/1964090

初識LVS(二)——LVS的DR工作模式