DR模式最大的特点是LBserver和后端的rs都要配置同一个VIP(rs端vip要配置在回环网卡上,即只让LBserver上的vip对外)。通过LBserver将client端发过来数据包添加MAC头,通过MAC直接将数据包传到后端rs上(所以LBserer的ip与rs的ip要在同一物理网段内)。此时后端回环网卡上也配置了同一个vip,正好对应数据包上的目的ip。rs收到数据包后不用通过LBserver返回数据包,而是直接将数据包返还给client(这也是为什么dr模式rs上也需要配置公网ip)
LBserer配置脚本
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward #打开路由转发
ipv=/sbin/ipvsadm
vip=192.168.100.111
rs1=192.168.100.12
rs2=192.168.100.13
ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up
#注意子网掩码是255.255.255.255,代表vip所在网段没有别的主机了
route add -host $vip dev eth0:0 #增加一条路由
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1 #-g代表dr模式
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
RS端配置脚本
#!/bin/bash
vip=192.168.100.111
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce