1.DR模式(直接路由模式:Virtual Server via Direct Routing)
DR模式是通過改寫請求報文的目標MAC地址,將請求發給真實服務器的,而真實服務器響應后的處理結果直接返回給客戶端用戶。同TUN模式一樣,
DR模式可以極大的提高集群系統的伸縮性。而且DR模式沒有IP隧道的開銷,對集群中的真實服務器也沒有必要必須支持IP隧道協議的要求。但是要求調
度器LB與真實服務器RS都有一塊網卡連接到同一物理網段上,必須在同一個局域網環境。DR模式是互聯網使用比較多的一種模式。
DR模式原理圖:
LVS-DR數據流向圖
DR模式原理過程簡述:
如下圖:當客戶端請求VIP時,會將請求先發給Director(調度器),調度器發現請求的是一組集群服務,根據調度算法將這一請求轉發給RealServer,
注意在轉發的過程中,僅僅是修改了數據報文中的MAC地址,所以這也是為什么我們要求DR和RS必須在同一個物理網絡內,就是為了保證可以通過修改MAC
地址而進行數據報文的轉發。當RealServer處理請求,響應數據,發送響應數據給客戶端,按理說此時的數據包的源IP為RIP,目標IP為CIP,雖然能找到客戶端,
但是客戶端是不收該數據包的,因為並沒有請求該RIP ,現在的做法就是進行IP欺騙,即就是修改源 IP 為 VIP,但是不可以將VIP設置在出口網卡上,否則會響
應客戶端的arp request,造成client/gateway arp table紊亂,以至於整個load balance都不能正常工作。要在lo接口上配置VIP,並將此 VIP 屏蔽,但是出去時候
的數據包被路由轉換,轉換后的 IP不再是 VIP,所以要重新設置路由。
另外關於各服務器網絡的配置,首先每個服務有一個獨立網卡即可。在DR上將DIP配置eth0上,將VIP配置在網絡別名上,這樣是為了以后調度器做高可用
方便VIP做IP地址飄移。在各RS上同樣需要配置好VIP,這樣個RS就可以直接響應Client,而不需要再經過DR,但是一個物理網絡之內是不允許有多個同名IP的,
所以需要修改RS的內核參數,並且將VIP配置在LO上,讓其保留VIP但是不允許對外進行廣播,這樣從RS出去的報文源地址就是VIP,當然這需要從真實的物理
網卡出去,所以必須加一條路由,讓訪問VIP的數據包請求,對其響應的是配置了VIP的網卡,這樣響應出去的報文源地址就是VIP,可以被Client接受。
2.下面對LVS-DR的配置參數
在如上圖的VS/DR應用模型中(所有機器都在同一個物理網絡),所有機器(包括Director和RealServer)都使用了一個額外的IP地址,即VIP。
當一個客戶端向VIP發出一個連接請求時,此請求必須要連接至Director的VIP,而不能是RealServer的,因為LVS的主要目標就是要Director負責
調度這些連接請求至RealServer的。因此,在Client發出至VIP的連接請求后,只能由Director將其MAC地址響應給客戶端(也可能是直接與Director連
接的路由設備),而Director則會相應的更新其ipvsadm table以追蹤此連接,而后將其轉發至后端的RealServer之一。
3.配置一台LVS負載均衡服務器
3.1.主機列表
Node1 |
DIP:192.168.232.201 |
VIP:192.168.232.206 |
集群服務器 |
|
Node2 |
RIP:192.168.232.200 |
VIP:192.168.232.206 |
RS,apache |
|
Node3 |
RIP:192.168.232.204 |
VIP:192.168.232.206 |
RS,apache |
3.2.配置拓撲如下圖:
3.2.Lvs DR模式集群步驟
1. 找一台主機192.168.232.201作為DR(虛擬集群服務器),安裝ipvsadm
yum -y install ipvsadm
2.在DR設置兩個IP地址:DIP要配置在接口上,VIP要配置在網卡接口別名上
a) DIP: 192.168.232.201 ,設置靜態ID
b) VIP:192.168.232.206 , ifconfig eth0:1 192.168.232.206/24
3.在多台RS( apeche或者tomcat )上面的配置:RIP要配置在接口上,VIP要配置在lo的別名上,定義內核參數,禁止響應對VIP的ARP廣播請求(先配置,再綁定VIP)
a) 兩台RS的RIP設置:靜態設置192.168.232.200 192.168.232.204
b) 修改報文源IP的設置,需要設置內核參數
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
c) 在兩台機器(RS)上,設置網卡的別名192.168.232.206,此時綁定的網絡接口不進行對外通信,所以VIP綁定在lo的別名上
ifconfig lo:0 192.168.232.206 netmask 255.255.255.255 broadcast 192.168.232.206(子網掩碼錯誤,好處是永遠不進行對外通信)
d) 在兩台機器(RS)上,添加一個路由:route add -host 192.168.232.206 dev lo:0 確保如果請求的目標IP是$VIP,那么讓出去的數據包的源地址
也顯示為$VIP
4.DR上需要加一個路由設置:route add -host 192.168.232.206 dev eth0:1 (該步我省略了)
5.在RS 檢查web服務是否正常
6.在DR上使用ipvsadm添加集群服務:使用Ipvsadm命令管理集群服務
6.1:首先添加了一個集群服務:ipvsadm -A -t 192.168.232.206:80 -s wlc 注意:修改端口一致
6.2:在當前的集群服務中添加RS1:ipvsadm -a -t 192.168.232.206:80 -r 192.168.232.200 -g -w 1
6.3:在當前的集群服務中添加RS2:ipvsadm -a -t 192.168.232.206:80 -r 192.168.232.204 -g -w 1
7.使用VIP進行訪問:
DR模式小結:
1、通過在調度器LB上修改數據包的目的MAC地址實現轉發,端口不改變。意味着發送到RS上時的端口還是原來的端口,如果在RS上安裝了Tomcat,那么
Tomcat的端口也應該是和前面的端口一致,注意源地址仍然是CIP,目的地址仍然是VIP地址。
2、請求的報文經過調度器,而RS響應處理后的報文無需經過調度器LB,因此並發訪問量大時使用效率很高(和NAT模式比)
3、因為DR模式是通過MAC地址改寫機制實現轉發,因此所有RS節點和調度器LB只能在一個局域網里面
4、RS主機需要綁定VIP地址在LO接口上,並且需要配置ARP抑制。
5、RS節點的默認網關不需要配置成LB,而是直接配置為上級路由的網關,能讓RS直接出網就可以。
6、由於DR模式的調度器僅做MAC地址的改寫,所以調度器LB就不能改寫目標端口,那么RS服務器就得使用和VIP相同的端口提供服務。
參考:https://blog.csdn.net/brad_chen/article/details/47807281