环境规划
按照上图配置好ip地址
路由器开启路由功能
Router开启路由转发功能
[Router]#
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
RS服务器配置
RS1,RS2 的配置
[RS1]#
[RS2]#
vim lvs_dr_rs.sh
#!/bin/bash
vip=192.168.43.100
mask='255.255.255.255'
dev=lo:1
rpm -q httpd &> /dev/null || yum -y install httpd &> /dev/null
service httpd start &> /dev/null && echo "The httpd Server is Ready"
echo "<h1>`hostname`</h1>" > /var/www/html/index.html
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
echo "The RS Server is Ready"
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac
bash lvs_dr_rs.sh start
lvs的配置
lvs的配置
yum install ipvsadmin -y
vim lvs_dr_vs.sh
#!/bin/bash
vip='192.168.43.100'
iface='lo:1'
mask='255.255.255.255'
port='80'
rs1='192.168.43.27'
rs2='192.168.43.37'
scheduler='wrr'
type='-g'
case $1 in
start)
ifconfig $iface $vip netmask $mask #broadcast $vip up
iptables -F
ipvsadm -A -t ${vip}:${port} -s $scheduler
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
;;
stop)
ipvsadm -C
ifconfig $iface down
;;
*)
echo "Usage $(basename $0) start|stop"
exit 1
esac
bash lvs_dr_vs.sh start
客户端测试
在 client 机器上测试
[Client]#
while : ;do curl http://192.168.43.100;sleep 0.5; done
注意
由于lvs-dr模型的回应包不经过lvs转发,所以 lvs 的网关可以随便配置一个与 router一个网段的不存在的ip,但是不能不配置。