首页
Octavia UDP 负载均衡算法不生效

问题

测试Octavia中配置的UDP的轮询算法,使用nc发起连接,模拟发送UDP包测试,发现一直是同一个后端响应,只有断开nc命令重新发起连接才会转发到另一个后端。

解决

Octavia使用lvs来实现UDP的负载均衡,这时对于连接到转发有个超时间的配置,UDP默认是300秒,并且连接不变的情况会不断刷新激活时间。

[root@xxx xxxxx]# ipvsadm -L --timeout
Timeout (tcp tcpfin udp): 900 120 300

900 120 300这三个数值分别是TCP TCPFIN UDP的时间.也就是说一条udp的连接经过lvs后,lvs会把这台记录保存5分钟,就是因为这个时间过长,所以很多人都会发现做好LVS DR之后轮询现象并没有发生,我们可以将此数值调整到很小来验证,使用以下命令调整:

ipvsadm --set 1 2 1

调整后测试,每隔1秒发送一次请求,响应的后端变了。

我们可以通过ipvsadm -Ln命令查看ipvsadm规则信息