LVS的DR模型实现
实验环境
192.168.31.169 CIP 代表客户机
192.168.31.170 代表路由设备外网地址
192.168.160.136 代表路由设备内网地址
170和136用设备模拟路由器效果
192.168.160.140 RIP 代表http服务器
192.168.160.150 RIP 代表http服务器
192.168.160.160 VIP 代表lvs设备外网地址
192.168.160.200 DIP 代表lvs设备内网地址
192.168.31.169配置
配置网关
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATAWAY=192.168.31.170
systemctl restart network
192.168.31.170配置
开启路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
192.168.160.140配置
写入RS配置脚本,让WEB服务器配置VIP并修改内核参数
#!/bin/bash
vip=192.168.160.200
mask='255.255.255.255'
dev=lo:1
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 "The RS Server is Stop"
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac
执行脚本并发送给150,150同样执行脚本
bash lvs-dr-rs.sh start
scp lvs-dr-rs.sh 192.168.160.150:
192.168.160.160配置
配置网关
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATAWAY=192.168.160.136
systemctl restart network
新增DIP地址
ip a a 192.168.160.200/24 dev eth0
安装ipvsadm
yum install ipvsadm -y
添加LVS规则
ipvsadm -A -t 192.168.160.200:80 -s rr
ipvsadm -a -t 192.168.160.200:80 -r 192.168.160.140
ipvsadm -a -t 192.168.160.200:80 -r 192.168.160.150
目前测试初步成功
清空LVS规则
ipvsadm -C
执行脚本配置VS
#!/bin/bash
vip='192.168.160.200'
iface='lo:1'
mask='255.255.255.255'
port='80'
rs1='192.168.160.140'
rs2='192.168.160.150'
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
echo "the vs is ready"
;;
stop)
ipvsadm -C
ifconfig $iface down
echo "the vs is stop"
;;
*)
echo "Usage $(basename $0) start|stop"
exit 1
esac