keepalived如果设置可以使得LVS的UDP负载均衡可用?

我自己写了一个UDP的文件传输程序服务端,端口开在8090。 VIP地址是10.45.8.200。服务端配置不是本地地址,而是VIP地址。
我写的keepalived.conf文件
global_defs {
router_id LVS_DEVEL_1
}

vrrp_sync_group G1 {
group {
VI_1
VI_2
}
}

vrrp_instance VI_1 {
state MASTER  # ha2 机器为 BACKUP
interface eth0
virtual_router_id 51
priority 102    #ha2 机器为 101
advert_int 1

authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.45.8.200
}
}
virtual_server 10.45.8.200 80 {
delay_loop 6
lb_algo wrr
lb_kind DR

#  persistence_timeout 50 
# 如果你想每次都轮询的话就把这句去掉!#

protocol TCP
real_server 10.45.8.5 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
real_server 10.45.8.111 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
}

vrrp_instance VI_2 {
state MASTER  # ha2 机器为 BACKUP
interface eth0
virtual_router_id 52
priority 102    #ha2 机器为 101
advert_int 1

authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.45.8.200
}
}
virtual_server 10.45.8.200 8090 {
delay_loop 6
lb_algo wrr
lb_kind DR

#  persistence_timeout 50 
# 如果你想每次都轮询的话就把这句去掉!#

protocol UDP
real_server 10.45.8.5 8090 {
weight 1
}
real_server 10.45.8.111 8090 {
weight 1
}
}

我现在用客户端去获取文件,请求的地址是10.45.8.200 8090,通过ipvsadm可以看到
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
UDP test1.local:8090 wrr
-> test2.local:8090 Route 1 0 1
-> test3.local:8090 Route 1 0 1
TCP test1.local:www wrr
-> test2.local:www Route 1 0 0
-> test3.local:www Route 1 0 0

LVS已经把请求分给服务端,但似乎没法保持客户端与服务端的交互,很快就变成非激活状态了。
想请教各位如何使得UDP可以正常工作,是不是DR方式不能用于UDP。
另外,keepalived如何做UDP检测呢?

Forums:

看keepalived提供的配置范例。你可以用MISC_CHECK来实现端口检查。如果你的服务可以用脚本来实现检查,用vrrp_script来实现就行。

最主要的问题是UDP没办法长时间保持,难道是服务端不应该把地址设置为VIP?或者DR方式不应该用于UDP?

不知道您是用什么方式来确认非激活状态,UDP是有状态连接?您想要什么样的长时间保持?明确需求,提供验证方法,才能知道到底会不会有问题,哪儿有问题。

randomness