首页 > 代码库 > LVS的DR模式配置

LVS的DR模式配置

做之前需要把ipvsadm的规则和iptables的nat规则清空:

ipvsadm -C

iptables -t nat -F

将rs1和rs2的网关还原,并关闭dir的外网ip:

ifdown eth1


DR模式下rs必须要有独立的公网ip, 这样才能把请求直接回复给客户端,但也正因为有了3个不同的公网IP,会导致回复请求的IP不一致,所以要添加一个虚拟的IP,这样接受请求的IP是同一个,回复客户端请求的IP也是同一个


dir 上:

写一个脚本:

[root@dir ~]# vim /usr/local/sbin/lvs_dr.sh

#! /bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

ipv=/sbin/ipvsadm

vip=192.168.237.100

rs1=192.168.237.133

rs2=192.168.237.137

ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip dev eth0:0

$ipv -C

$ipv -A -t $vip:80 -s rr

$ipv -a -t $vip:80 -r $rs1:80 -g -w 1

$ipv -a -t $vip:80 -r $rs2:80 -g -w 1


rs上:

写一个脚本:

vim /usr/local/sbin/lvs_rs.sh


#! /bin/bash

vip=192.168.237.100

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 "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce


同样也复制到rs2上,然后sh /usr/local/sbin/lvs_rs.sh 执行


实验:

不能在这3台机器上测试curl, 因为netmask是255.255.255.255,数据包可以出去,但是回不来


如果改变了dir的脚本里的权重,需要修改脚本,先关闭eth0:0,再开启它,因为192.168.237.100是虚拟ip

#! /bin/bash

vip=192.168.237.100

ifconfig eth0:0 down

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 "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce


本文出自 “模仿游戏” 博客,请务必保留此出处http://kevinjin117.blog.51cto.com/11655131/1846989

LVS的DR模式配置