一.RS的ARP抑制
1.為什么要抑制
2.如何抑制
(1)修改/etc/sysctl.conf文件,增加以下內容
(2)命令行臨時設置
二.LVS持久連接
1.客戶端持久連接
2.端口持久連接
3.防火墻標記持久連接
?
一.RS的ARP抑制
1.為什么要抑制
避免RS在接受到客戶端發來的ARP請求后,RS自己通過廣播去回復帶有VIP的MAC地址。
如果不進行ARP廣播抑制,RS在被調度器分配到后,RS回復的ARP廣播會導致局域網內的設備都將RS發出的ARP進行緩存,那么其他客戶端發出的請求包將會繞過負載均衡器直接發送到RS,破壞了LVS-DR模式的機制。
進行RS的ARP廣播抑制,讓客戶端的ARP請求都交給負載均衡器進行mac地址回復,RS不進行回復。
?
2.如何抑制
(1)修改/etc/sysctl.conf文件,增加以下內容
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@localhost ~]# sysctl -p
(2)命令行臨時設置
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@localhost ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@localhost ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
[root@localhost ~]# sysctl -p
arp_ignore——定義對目標地址為本地IP的ARP詢問不同的應答模式
0 (默認值):回應任何網絡接口上對任何本地IP地址的arp查詢請求。
1 只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求。
2 只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內。
3 不回應該網絡界面的arp請求,而只對設置的唯一和連接地址做出回應。
4-7 保留未使用。
8 不回應所有(本地地址)的arp查詢arp_announce——對網絡接口上,本地IP地址發出的ARP回應,做出相應級別的限制
0 (默認)在任意網絡接口(eth0,eth1,lo)上的任何本地地址
1 盡量避免不在該網絡接口子網段的本地地址做出arp回應,當發起ARP請求的源IP地址是被設置應該經路由到達此網絡接口的時候很有用,此時會檢查來訪IP是否為所有接口上的子網段內ip之一。如果該來訪IP不屬于各個網絡接口上的子網段內,那么將采用級別2的方式來進行處理。
2 對查詢目標是要最適當的本地地址,在此模式下將忽略這個IP數據包的源地址并嘗試選擇與能與該地址通 信的本地地址。首要是選擇所有的網絡接口的子網中外出訪問子網中包含該目標IP地址的本地地址。如果沒有合適的地址被發現,將選擇當前的網絡發送接口或其他的有可能接受到該ARP回應的網絡接口來進行發送。限制了使用本地的vip地址作為優先的網絡接口。
二.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.2.188:80 rr-> 192.168.2.191:80 Route 1 0 7 -> 192.168.2.192:80 Route 1 0 7
[root@localhost ~]# for ((i=1;i<=10;i++));
> do
> curl 192.168.2.188
> done
share192
share191
share192
share191
share192
share191
share192
share191
share192
share191
1.客戶端持久連接
將來自于同一個客戶端的所有請求都定向至此前選定的 RS,只要 IP 相同,分配的服務器始終相同
[root@localhost ~]# ipvsadm -E -t 192.168.2.188 -s rr -p 20
[root@localhost ~]# for ((i=1;i<=10;i++)); do curl 192.168.2.188; done
share192
share192
share192
share192
share192
share192
share192
share192
share192
share192
2.端口持久連接
將來自于同一個客戶端同一個端口的請求,始終定向至此前選定的 RS
[root@localhost ~]# ipvsadm -E -t 192.168.2.188:80 -s rr -p 20
[root@localhost ~]# for ((i=1;i<=10;i++)); do curl 192.168.2.188; done
share192
share192
share192
share192
share192
share192
share192
share192
share192
share192
3.防火墻標記持久連接
將來自于同一客戶端對指定服務(端口)的請求,始終定向至此選定的 RS,它可以將兩個
毫不相干的端口定義為一個集群服務
[root@localhost ~]# yum install -y iptables*
[root@localhost ~]# systemctl start iptables.service
[root@localhost ~]# iptables -t mangle -A PREROUTING -d 192.168.2.188 -p tcp --dport 80 -j MARK --set-mark 10
[root@localhost ~]# service iptables save
[root@localhost ~]# ipvsadm -A -f 10 -s rr -p 20
?