LVM配置(DR模式)
原理:負載均衡器和RS都使用同一個IP對外服務但只有DR對ARP請求進行響應,所有RS對本身這個IP的ARP請求保持靜默也就是說,網關會把對這個服務IP的請求全部定向給DR,而DR收到數據包後根據調度算法,找出對應的RS,把目的MAC地址改為RS的MAC(因為IP一致)並將請求分發給這臺RS這時RS收到這個數據包,處理完成之後,由於IP一致,可以直接將數據返給客戶,則等於直接從客戶端收到這個數據包無異,處理後直接返回給客戶端由於負載均衡器要對二層包頭進行改換,所以負載均衡器和RS之間必須在一個廣播域,也可以簡單的理解為在同一臺交換機上
優點:和TUN(隧道模式)一樣,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端。與VS-TUN相比,VS-DR這種實現方式不需要隧道結構,因此可以使用大多數操作系統做為物理服務器。
1), DR模式, 全程目標地址, 原地址不變, 因為DR模式工作於2層 2), 請求報文從客戶端發出: 原地址: CIP 源MAC CMAC 目標地址: VIP 目標mac: xxx 3), 請求報文到達機房防火墻之後, 會在防火墻的內網口進行廣播, 找到VIP在哪兒 然後把包丟出去 原地址: CIP 目標地址: VIP 源MAC: FMAC 目標MAC: VMAC 4), 報文到達director之後, 解包, 發現目標mac是自己, 開始解析這個報文 處理完成, 通過自定義的一個調度算法, 轉發報文到達其中一臺RS上 原地址: CIP 目標地址: VIP 源mac: DMAC 目標MAC: RMAC 5), 數據報文到達RS之後, 進行節封裝, 發現目標mac是自己, 開始解析, 發現VIP也有,開始處理 6), 處理完成之後, 數據直接通過RS流向客戶端**
拓撲:VIP=192.168.2.133 DIP=192.168.2.130
RIP1=192.168.2.131 RIP2=192.168.2.132
1.分發器添加生成ens33:1配置文件
[root@Qj01 network-scripts]# cp ifcfg-ens33 ifcfg-ens33:1
[root@Qj01 network-scripts]# vim ifcfg-ens33:1
[root@Qj01 network-scripts]# ifconfig
2.分發器配置LVS規則:
[root@Qj01 network-scripts]# ipvsadm -A -t 192.168.2.133:80 -s rr [root@Qj01 network-scripts]# ipvsadm -a -t 192.168.2.133:80 -r 192.168.2.131 -g [root@Qj01 network-scripts]# ipvsadm -a -t 192.168.2.133:80 -r 192.168.2.132 -g
[root@Qj01 network-scripts]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.133:80 rr
-> 192.168.2.131:80 Route 1 0 0
-> 192.168.2.132:80 Route 1 0 0 [root@Qj01 network-scripts]# ipvsadm -S > /etc/sysconfig/ipvsadm
3.兩臺RS服務器上添加回環接口
[root@Qj02 ~]# ifconfig lo:1 192.168.2.133 netmask 255.255.255.255
[root@Qj03 ~]# ifconfig lo:1 192.168.2.133 netmask 255.255.255.255
4.兩臺RS服務器上關閉ARP轉發
同一個廣播域: 配置了多個相同的VIP 是不允許的, 要想實現,就必須讓外面的網絡, 無法發現這個VIP的存在
因此 在Linux裏面, 可以修改內核參數, 實現接口IP的廣播不響應、不廣播
arp_ignore = 1 表示只回答目標IP是訪問本地網絡對應接口的arp請求
arp_announce = 2 只宣告本機網卡直連網絡所在的ip的arp廣播
(1)臨時生效
[root@Qj02 ~]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
[root@Qj02 ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
[root@Qj03 ~]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
[root@Qj03 ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
(2)永久生效:(註意realserver的實際link ok的網卡是不是ens33)
[root@Qj02 ~]# vim /etc/sysctl.conf #最後添加
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
[root@Qj03 ~]# vim /etc/sysctl.conf #最後添加
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
或:
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
安裝web頁面測試
**註意:
網絡轉發:
基於2層的數據報文的轉發, 要比基於3層的網絡轉發效率要高
lvs-DR 是基於2層的轉發, 所以在LVS中所有的模式, 效率是最好的
1):基於mac的數據報文轉發, 是效率最好的, 但是是根據交換機的MAC地址表來實現的
MAC表主要告訴你, 到xxxx地方該走那個端口
如果交換不知道對方在哪兒, 這個時候, 他就要進行廣播, 就問xxxx在哪兒, 如果對應的設備給了回應, 那麽交換機也就更新了自己的MAC地址表 記錄到xxxx需要走這個端口
2):2層設備不具有路由功能, 那麽廣播也就不具有跨路由的功能, 所有要實現mac地址廣播, 必須在同一物理網段
3):vlan具有隔離廣播的功能, 所有要能處理mac地址廣播, 就應該在同一個VLAN中
因此: 如果要實現LVS-DR模式
1): 所有的設備應該在同一個物理網段
2): 所有的設備都應該在同一個廣播域中**
LVM配置(DR模式)