本文采用知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。
访问 https://creativecommons.org/licenses/by-sa/4.0/ 查看该许可协议。

1) LVS D-NAT 模型

发生 404 了

2) LVS DR 模型(多公网 IP)

发生 404 了

2.1) DR 模型搭建

2.1.0) 前言

DR 模型的关键在于,如何让 RealServer 持有 VIP,但是不向本机外通告持有该 VIP。
实现需要修改内核参数 arp_ignore、arp_announce,并在环回接口上虚拟 VIP。
将 arp_ignore 设置 1,不响应 VIP 的 arp 广播请求; arp_announce 设置 2,不向外通告拥有 VIP。

2.1.0.1) arp_ignore

0:只要本地配置有相应地址,就给予相应。
1:仅在请求到达的接口 MAC 地址匹配时,才给予响应。

2.1.0.2) arp_announce

0:将本地任何接口上任何地址向外通告。
1:试图仅向目标网络通告与其网络匹配的地址。
2:仅向与本地接口上地址匹配的网络进行通告。

2.1.1) 服务端机器 lvs-web-1 (10.9.6.11)

# 软件包准备并搭建一个 web 容器
yum install net-tools httpd -y
echo web-1 > /var/www/html/index.html
systemctl start httpd
systemctl enable httpd
# (注意,将 enp0s5 替换成相应的网卡)
echo 'net.ipv4.conf.enp0s5.arp_ignore = 1' | tee -a /etc/sysctl.conf
echo 'net.ipv4.conf.enp0s5.arp_announce = 2' | tee -a /etc/sysctl.conf
echo 'net.ipv4.conf.all.arp_ignore = 1' | tee -a /etc/sysctl.conf
echo 'net.ipv4.conf.all.arp_announce = 2' | tee -a /etc/sysctl.conf
sysctl -p
# 配置 VIP 到环回接口上
ifconfig lo:0 10.9.6.10 netmask 255.255.255.255

2.1.2) 服务端机器 lvs-web-2 (10.9.6.12)

# 软件包准备并搭建一个 web 容器
yum install net-tools httpd -y
echo web-2 > /var/www/html/index.html
systemctl start httpd
systemctl enable httpd
# (注意,将 enp0s5 替换成相应的网卡)
echo 'net.ipv4.conf.enp0s5.arp_ignore = 1' | tee -a /etc/sysctl.conf
echo 'net.ipv4.conf.enp0s5.arp_announce = 2' | tee -a /etc/sysctl.conf
echo 'net.ipv4.conf.all.arp_ignore = 1' | tee -a /etc/sysctl.conf
echo 'net.ipv4.conf.all.arp_announce = 2' | tee -a /etc/sysctl.conf
sysctl -p
# 配置 VIP 到环回接口上
ifconfig lo:0 10.9.6.10 netmask 255.255.255.255

2.1.3) 负载机器 lvs-main (10.9.6.3/10.9.6.10)

ipvsadm -A -t 10.9.6.10:80 -s rr
ipvsadm -a -t 10.9.6.10:80 -r 10.9.6.12 -g -w 1
ipvsadm -a -t 10.9.6.10:80 -r 10.9.6.11 -g -w 1

3) LVS DR 模型(单公网 IP)

发生 404 了