lvs udp 不能轮发

我采用lvs-nat模式配置负载均衡,测试tcp apache是正常可用的。不过当我改为udp程序后,出现了问题,lvs不能负载均衡(不能轮询),所有的请求都被发到同一台真实服务器上。如果此时从ipvsadm配置中删除这台真实服务器,lvs有认为其他的真实服务器都不可用。
我的配置脚本如下,请章博士和各位高手看一下,是哪里配置有误,还是其他什么问题。十分感谢。

#!/bin/bash
VIP=169.254.222.200
#注:客户端和rs虽然在同一网段,但是我已经修改了路由表,tcp测试也表明是正常的,应该不是这里的问题。
RIP1=169.254.222.155
RIP2=169.254.222.156

case "$1" in
start)
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F
/sbin/iptables -X
/sbin/ifconfig eth0:0 $VIP netmask 255.255.255.0 up
/sbin/ipvsadm -A -u $VIP:22082 -s rr
/sbin/ipvsadm -a -u $VIP:22082 -r $RIP1 -m
/sbin/ipvsadm -a -u $VIP:22082 -r $RIP2 -m
/sbin/ipvsadm
echo "start lvs of NAT"
;;
stop)
echo "0" > /proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
echo "stop lvs of NAT"
;;
*)
echo "Usage :$0 {start|stop}"
exit1
esac

Comments

问题解决了,比较弱,是失效时间问题。udp默认的失效时间是5分钟,我之前都是在5分钟之内使用同一个节点发送数据,这样每次数据都会被发送至同一个节点。今天发现了这个问题,使用命令ipvsadm --set 0 0 10重新设置失效时间,搞定了问题。