1、DR 模式工做原理web
如圖,LVS-DR的工做原理,在圖中已經說明,下面,咱們來列舉 LVS-DR 模式特色:vim
一、RIP 可使用私有地址,也可使用公網地址,若是使用公網地址,則能夠直接對 RIP 進行訪問。瀏覽器
二、全部請求的數據包必須通過 Director Server,可是全部響應的數據包必須不能通過 Director Server,這樣使得在高負載網絡環境中,下降了 Director Server 的壓力。服務器
三、Real Server 服務器的網關絕對不能指定爲 DIP,由於,響應數據包不須要通過 Director Server。網絡
四、Real Server 和 Director Server 必須在同一物理網絡中。ide
五、須要在 Real Server 的 lo 網卡上綁定 VIP。spa
2、LVS-DR 模式部署3d
一、IP 地址分配rest
二、Real ServerA 服務器配置blog
a、VIP 綁定
[root@weba ~]# cd /etc/sysconfig/network-scripts/
[root@weba network-scripts]# cp ifcfg-lo{,:0}
[root@weba network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.20.134
NETMASK=255.255.255.255
NETWORK=192.168.20.134
BROADCAST=192.168.20.134
ONBOOT=yes
NAME=lo:0
[root@weba network-scripts]# ifup ifcfg-lo:0
[root@weba network-scripts]# ifconfig
如圖:
b、修改內核參數,使得客戶端發送到 VIP 的請求只有調度服務器響應,Real Server A(web服務器)不要響應。
[root@weba ~]# sysctl -a | grep net.ipv4.conf.all.arp_ignore
[root@weba ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
[root@weba ~]# sysctl -a | grep net.ipv4.conf.lo.arp_ignore
[root@weba ~]# echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf
[root@weba ~]# sysctl -a | grep net.ipv4.conf.all.arp_announce
[root@weba ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
[root@weba ~]# sysctl -a | grep net.ipv4.conf.lo.arp_announce
[root@weba ~]# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf
[root@weba ~]# sysctl –p
如圖:
三、Real ServerB 服務器配置:
a、VIP 綁定
[root@webb ~]# cd /etc/sysconfig/network-scripts/
[root@webb network-scripts]# cp ifcfg-lo{,:0}
[root@webb network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.20.134
NETMASK=255.255.255.255
NETWORK=192.168.20.134
BROADCAST=192.168.20.134
ONBOOT=yes
NAME=lo:0
[root@webb network-scripts]# ifup ifcfg-lo:0
[root@webb network-scripts]# ifconfig
如圖:
b、修改內核參數,使得客戶端發送到 VIP 的請求只有調度服務器響應,Real ServerB (web服務器)不要響應。
[root@webb ~]# sysctl -a | grep net.ipv4.conf.all.arp_ignore
[root@webb ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
[root@webb ~]# sysctl -a | grep net.ipv4.conf.lo.arp_ignore
[root@webb ~]# echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf
[root@webb ~]# sysctl -a | grep net.ipv4.conf.all.arp_announce
[root@webb ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
[root@webb ~]# sysctl -a | grep net.ipv4.conf.lo.arp_announce
[root@webb ~]# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf
[root@weba ~]# sysctl –p
如圖:
說明,以上4個內核參數的含義爲:
arp_ignore 定義了對目標地址爲本機 IP 的 ARP 詢問的不一樣應答模式。
0:響應任意網卡上接收到的對本機IP地址的arp請求(包括環回網卡上的地址),而無論該目的IP是否在接收網卡上。
1:只響應目的IP地址爲接收網卡上的本地地址的arp請求。
2:只響應目的IP地址爲接收網卡上的本地地址的arp請求,而且arp請求的源IP必須和接收網卡同網段。
3:若是ARP請求數據包所請求的IP地址對應的本地地址其做用域(scope)爲主機(host),則不迴應ARP響應數據包,若是做用域爲全局(global)或鏈路(link),則迴應ARP響應數據包。
4~7:預留。
8:不迴應全部的arp請求。
arp_announce 對網絡接口上發出的 ARP 請求包中的源IP地址做出相應的限制;主機會根據這個參數值的不一樣選擇使用 IP 數據包的源 IP 或當前網絡接口卡的IP地址做爲ARP請求包的源IP地址。
0:本機全部IP地址都向任何一個接口通告ARP報文。
1:儘可能僅向該網卡迴應與該網段匹配的ARP報文。
2:只向該網卡迴應與該網段匹配的ARP報文。
四、Director Server 服務器配置:
a、VIP 綁定
[root@lvs ~]# cd /etc/sysconfig/network-scripts/
[root@lvs network-scripts]# cp ifcfg-ens33{,:0}
[root@lvs network-scripts]# vim ifcfg-ens33:0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.20.135
PREFIX=24
[root@lvs network-scripts]# ifup ens33:0
[root@lvs network-scripts]# ifconfig
如圖:
b、ipvsadm 安裝及策略建立
[root@lvs ~]# yum –y install ipvsadm
[root@lvs ~]# ipvsadm -A -t 192.168.20.135:80 -s lc
[root@lvs ~]# ipvsadm -a -t 192.168.20.135:80 -r 192.168.20.132:80 -g -w 1
[root@lvs ~]# ipvsadm -a -t 192.168.20.135:80 -r 192.168.20.133:80 -g -w 2如圖:
說明:LVS 默認工做模式爲 DR 模式,所以,咱們在配置策略的時候能夠直接寫成 [root@lvs ~]# ipvsadm -a -t 192.168.20.135:80 -r 192.168.20.132:80 -w 1 這樣的,也可使用 –g 參數來指定爲 DR 模式。
五、驗證,在瀏覽器中訪問 http://192.168.20.135
3、服務配置
當咱們的 LVS 服務器重啓後,以前配置的 LVS 策略也會隨之消失,所以,咱們這裏須要配置自動啓動服務
[root@lvs ~]# touch /etc/sysconfig/ipvsadm
[root@lvs ~]# ipvsadm -A -t 192.168.20.135:80 -s lc
[root@lvs ~]# ipvsadm -a -t 192.168.20.135:80 -r 192.168.20.132:80 -g -w 1
[root@lvs ~]# ipvsadm -a -t 192.168.20.135:80 -r 192.168.20.133:80 -g -w 2
[root@lvs ~]# systemctl enable ipvsadm
[root@lvs ~]# systemctl start ipvsadm
[root@lvs ~]# systemctl restart ipvsadm
[root@lvs ~]# cat /etc/sysconfig/ipvsadm
如圖: