难道是ipvsadm-1.24的问题?

环境:as4+ipvsadm-1.24
vip=192.168.100.206
realserver=192.168.100.125/126/128
realserver上启用tunnel的脚本如下:
[root@CVS init.d]# vi tunl0

#!/bin/sh

# chkconfig: 2345 70 10

# description: Config tunl port and apply arp patch

VIP=192.168.100.206
. /etc/rc.d/init.d/functions

case "$1" in

start)

echo "Tunl port starting"

ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up

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

/bin/echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
/bin/echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
/bin/echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
/bin/echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
/bin/echo "0" > /proc/sys/net/ipv4/conf/tunl0/rp_filter

;;

stop)

echo "Tunl port closing"

ifconfig tunl0 down

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

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

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac
现在在192.168.100.128上运行tunl0 stop,其他两台上的tunl0 都是up的,
在三台不同的客户机测试两种情况:
1、realserver都是运行squid透明代理的,
在浏览器里输入192.168.100.206,只有先输入的客户端正常显示,用ipvsadm -lnc会显示有两个established的连接分别给tunl0 up的realserver,其他客户端的连接都是分配给tunl0 down的realserver,只有等established状态变成fin_wait状态以后,其他客户端的连接才能进来,但每次只有两个established,如果先连接上的客户端的连接不释放的话,其他机器的连接都是分派到tunl0 down的那台机器,等于lvs就没起作用了。
2、realserver运行apache的,也差不多是这种情况,几乎所有连接都分派到tunl0 down的 realserver

Forums:

randomness