在HAproxy服务器中dynamic添加节点时出现意外的行为

我想为我的Web应用程序使用HAProxy进行负载平衡。 我正在尝试在HAProxy服务器中使用命令dynamic添加一个新的rabbitmq节点: haproxy -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid) 。 我正在使用leastconn不平衡algorithm进行负载均衡的tcp连接模式。 预计什么时候在一个rabbitmq中有3个连接,我在HAProxy服务器上添加一个新的兔子服务器。 所以下一个连接将传递到第二个rabbitmq服务器,这是不是在我的情况发生。 它以随意的方式分配连接。

这是我的configuration文件:

 defaults log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 5000 srvtimeout 5000 listen rabbitmq 0.0.0.0:5672 mode tcp stats enable balance leastconn option tcplog server rabbit01 xx.xx.xx.xx:5672 check server rabbit02 xx.xx.xx.xx:5672 check listen tomcatq 0.0.0.0:80 mode http stats enable balance roundrobin stats refresh 10s stats refresh 10s stats uri /lb?stats stats auth admin:admin option httplog 

造成这种行为的问题是什么? 任何build议将不胜感激。

HAProxy文档说leastconn平衡algorithm:

在期望很长的会话时,推荐使用这种algorithm,比如LDAP,SQL,TSE等等,但是不适合使用诸如HTTP的短会话的协议。

我不确定AMQP是如何工作的,但是我不认为你会看到完美的结果,特别是与less量连接的最less连接。 根据您的详细信息,它似乎不像你dynamic地添加节点,它实际上只是显示你重新启动HAProxy实例?

不知道如何将节点添加到haproxy。 新节点是否已经存在于haproxy.cfg中? 如果使用以下命令添加节点: haproxy -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)将重新启动,所有连接信息将被清除。 所以新的连接可能不会被调度到第二个rabbitmq服务器。