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检测呢?
changtailiang
周五, 2010-05-07 05:30
Permalink
看keepalived提供的配置
看keepalived提供的配置范例。你可以用MISC_CHECK来实现端口检查。如果你的服务可以用脚本来实现检查,用vrrp_script来实现就行。
njchenyi
周五, 2010-05-07 08:01
Permalink
最主要的问题是UDP没
最主要的问题是UDP没办法长时间保持,难道是服务端不应该把地址设置为VIP?或者DR方式不应该用于UDP?
changtailiang
周六, 2010-05-15 23:33
Permalink
您如何确定非激活状态?
不知道您是用什么方式来确认非激活状态,UDP是有状态连接?您想要什么样的长时间保持?明确需求,提供验证方法,才能知道到底会不会有问题,哪儿有问题。