LVS-DR的RS进行ARP抑制的原因和LVS持久连接配置

一.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不进行回复。

LVS-DR的RS进行ARP抑制的原因和LVS持久连接配置_第1张图片

LVS-DR的RS进行ARP抑制的原因和LVS持久连接配置_第2张图片 

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

你可能感兴趣的:(Linux,#,集群,lvs,后端,LVS-DR,持久连接,ARP抑制)