LB集羣-LVS-DR模式解析

上篇博客https://blog.51cto.com/14181896/2367578介紹LB集羣的LVS-NAT模式 , 它是基於IP , 通過修改目標IP地址來實現的 , 而LVS-DR模式基於數據鏈路層的負載均衡 , 它是通過修改修改MAC地址進行的負載均衡 .


 一 . LVS-DR模式作用及介紹


LVS-DR就是數據鏈路層負載均衡 , 是指在通信協議的數據鏈路層修改mac地址進行負載均衡

這種數據傳輸方式又稱作三角傳輸模式,負載均衡數據分發過程中不修改IP地址,只修改目的mac地址,通過配置真實物理服務器集羣所有機器虛擬IP和負載均衡服務器IP地址一致,從而達到不修改數據包的源地址和目的地址就可以進行數據分發的目的,由於實際處理請求的真實物理服務器IP和數據請求目的IP一致,不需要通過負載均衡服務器進行地址轉換,可將相應數據包直接返回給用戶瀏覽器,避免負載均衡服務器網卡帶寬成爲瓶頸。


 二 . LVS-DR模式的工作過程


image.png


LVS-DR模式流程圖解析

(1).當用戶請求到達Director Server,,時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP爲CIP,目標IP爲VIP
(2).PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
(3).IPVS比對數據包請求的服務是否爲集羣服務,若是,將請求報文中的源MAC地址修改爲DIP的MAC地址,將目標MAC地址修改RIP的MAC地址,然後將數據包發至POSTROUTING鏈。 此時的源IP和目的IP均未修改,僅修改了源MAC地址爲DIP的MAC地址,目標MAC地址爲RIP的MAC地址 
(4).由於DS和RS在同一個網絡中,所以是通過二層來傳輸。POSTROUTING鏈檢查目標MAC地址爲RIP的MAC地址,那麼此時數據包將會發至Real Server。
(5).RS發現請求報文的MAC地址是自己的MAC地址,就接收此報文。處理完成之後,將響應報文通過lo接口傳送給eth0網卡然後向外發出。 此時的源IP地址爲VIP,目標IP爲CIP 
(6).響應報文最終送達至客戶端


 三 . LVS-DR模型的特性


1). 保證前端路由將目標地址爲VIP報文統統發給Director Server,而不是RS
2). RS可以使用私有地址;也可以是公網地址,如果使用公網地址,此時可以通過互聯網對RIP進行直接訪問
3). RS跟Director Server必須在同一個物理網絡中
4). 所有的請求報文經由Director Server,但響應報文必須不能進過Director Server
5). 不支持地址轉換,也不支持端口映射,因爲DR模型是工作在二層的,二層只處理數據包中的MAC地址
6). RS可以是大多數常見的操作系統

7). RS的網關絕不允許指向DIP(因爲我們不允許他經過director)
8). RS上的lo接口配置VIP的IP地址


 四 . 部署LVS-DR實例


實驗目標 : 搭建LVS-DR模式負載均衡集羣 , 部署LVS-DR服務器 和 兩臺apache後端服務器 .


實驗拓撲圖

image.png


實驗準備:

客戶端/服務器                          IP地址
Client
Directer  ServerDIP:192.168.11.11  VIP:192.168.10.100/24
Real  ServerRIP:192.168.11.12  VIP(lo:0):192.168.10.100/32
Real  ServerRIP:192.168.11.13  VIP(lo:0):192.168.10.100/32

實驗需要解決的問題有:

兩個http服務器除了有自己的rip以外還要擁有vip
    因爲:數據包需從realServer返回 ,realServer返回的數據需要源IP爲VIP
    解決:添加 lo接口(本地環路接口) ,lo:1   vip/32.
               ifconfig   lo:0   192.168.10.100/32     (up使用最好的ip來回應,什麼是最好的ip?同一個網段內子網掩碼最長的)

當GW(網關)向下廣播vip的時候 要分發器的vip響應 而兩個http的vip不要響應
    因爲:realServer的vip有了,接着就是同一個網段中擁有兩個vip, 客戶端在網關發送arp廣播需找vip時需要讓realServer不接受響應.  
    解決:
       echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
       echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
       #arp_ignore 設置爲1,意味着當別人的arp請求過來的時候,如果接收的設備沒有這個ip,就不做出響應(這個ip在lo上,lo接收設備)
       echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce   
       echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
      

實驗部署流程


關閉防火牆和selinux(3臺服務器均執行)

systemctl  stop  firewalld          #關閉防火牆

setenforce   0                             #關閉selinux


部署後端服務器(192.168.11.12和192.168.11.13)

安裝apache服務器(這裏以腳本簡單腳本方式進行部署)

[root@node12 ~]# vim apache.sh

rpm  -q  httpd || yum install  -y http >/dev/null            #查httpd軟件是否安裝 , 沒有就安裝

systemctl  restart  httpd && systemctl  enable  httpd   #啓動httpd服務設置開機自啓動

ifconfig lo:1 192.168.11.100 netmask 255.255.255.255    #設置虛擬接口IP爲192.168.11.100(VIP) , 用於廣播

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore          #關閉Linux內核功能 

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

ip  a                                                                                     #查看添加虛擬接口IP後的IP狀態

echo  'www.node12.com'  >  /var/www/html/index.html

curl  192.168.11.12

將腳本傳給主機192.168.11.13

scp  apache.sh  [email protected]:/root/

image.png

image.png

image.png


在192.168.11.13上運行腳本 , 查看IP信息並設置apache主頁

image.png


部署LVS調度器(Director server  IP:192.168.11.11)

[root@node11 ~]# ifconfig ens33:0 192.168.11.100/24 up       #添加虛擬網卡IP爲192.168.11.100/24

[root@node11 ~]# ip a                                                               #查看IP信息

 yum install -y ipvsadm > /dev/null                                           #安裝ipvsadm軟件

[root@node11 ~]# ipvsadm -A -t 192.168.11.100:80 -s wrr     #設置vip對應的後端apache羣服務

[root@node11 ~]# ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.12:80 -g -w 1     #設置權重爲1

[root@node11 ~]# ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.13:80 -g -w 3      #設置權重爲3

[root@node11 ~]# ipvsadm -Ln                                             #查看ipvsadm設置的信息

[root@node11 ~]# curl 192.168.11.12                                     #訪問192.168.11.12apache服務

[root@node11 ~]# curl 192.168.11.13                                     #訪問192.168.11.13apache服務

image.png


windows客戶端進行測試

image.png













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