1.LVS-DR工作原理
LVS-DR模式,Director Server作為群集的訪問入口,不作為網購使用,節點Director Server 與 Real Server 需要在同一個網絡中,返回給客戶端的數據不需要經過Director Server 為了響應對整個群集的訪問,Director Server 與 Real Server都需要配置VIP地址,工作原理
2.數據包流向分析
1.客戶端發送請求到 Director Server請求的數據報文(源IP 是CIP,目標IP是到達內核空間)
2.Director Server 和 Real Server在同一個網絡中,數據通過數據鏈路層來傳輸
實驗案例
2.2:直接路由模式(LVS-DR)
1:實驗環境:?
2:配置負載調度器
(1)配置虛擬IP地址VIP
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vi ifcfg-ens33:0
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.172
NETMASK=255.255.255.0
[root@localhost network-scripts]# systemctl restart network
(2)調整內核參數,禁止轉發重定向報文
由于 LVS 負載調度器和各節點需要共用 VIP 地址,應該關閉Linux 內核的重定向
[root@localhost ~]# vi /etc/sysctl.conf
在末尾添加:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost ~]# sysctl -p
(3)配置負載分配策略
[root@localhost ~]#yum -y install ipvsadm
[root@localhost ~]#ipvsadm -v?????????? \\查看版本
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]#ipvsadm -C
[root@localhost ~]# ipvsadm -A -t 192.168.10.172:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 1
[root@localhost ~]# ipvsadm-save
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.10.102:http -g -w 1
-a -t localhost.localdomain:http -r 192.168.10.103:http -g -w 1
[root@localhost ~]# systemctl enable ipvsadm
3:配置web節點服務器
(1)配置虛擬ip地址VIP
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
修改
DEVICE=lo:0
NETMASK=255.255.255.255?????????? \\子網掩碼必須為255.255.255.255
IPADDR=192.168.10.172
ONBOOT=yes
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig
[root@localhost network-scripts]# cd
[root@localhost ~]# vi /etc/rc.local
添加
/sbin/route add -host 192.168.10.172 dev lo:0
[root@localhost ~]# route add -host 192.168.10.172 dev lo:0
(2)調整內核參數
[root@localhost ~]# vi /etc/sysctl.conf
添加:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
注釋:
arp_ignore =1???
當收到arp請求時,只有ARP請求數據包所請求的IP地址屬于當前網卡的IP地址,才會回應ARP響應數據包。
arp_announce = 2
當發送arp請求時,忽略IP數據包的源IP地址,總是選擇網卡所配置的首選IP地址作為ARP請求數據包的發送方IP地址
目的:因為lo:0的ip地址和調度器的ens33:0的ip地址是一樣的,為了不造成ip沖突,要禁止更新VIP的mac地址。
[root@localhost ~]# sysctl -p
(3)安裝httpd創建測試網頁
[root@localhost ~]# yum -y install httpd
yum install nfs-utils
[root@localhost ~]# mount 192.168.10.105:/opt/wwwroot /var/www/html
[root@localhost ~]#vi /var/www/html/index.html
<h1>LVS負載均衡群集--測試頁面01</h1>
(4)啟用httpd服務
[root@localhost ~]# systemctl start httpd
(5)配置第二臺web節點
配置方法與第一臺完全相同
注意:在實驗環境中,為了驗證負載過程,第二臺web服務器的網站可以可第一個不一樣,所以這兩個web服務器就沒有必要使用NFS,直接在web服務器本地創建測試網頁文件即可
4:在client上測試網站
http://192.168.10.172
測試時頻繁刷新頁面
也可以用腳本測試:
[root@localhost ~]# for i in $(seq 10); do curl http://192.168.10.172? ;done
5:在LVS調度器上查看LVS策略
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
? -> RemoteAddress:Port?????????? Forward Weight ActiveConn InActConn
TCP? 192.168.10.172:80 rr
? -> 192.168.10.102:80???????????? Route?? 1????? 0????????? 0????????
? -> 192.168.10.103:80???????????? Route?? 1????? 0????????? 0?