HAproxy roundrobin平衡似乎不均匀分布

我知道在加载服务器,HAroxy(1.4.4)roundrobin不均匀分布,但我的服务器正在获得没有stream量(testing设置),和roundrobin平衡做www1,www1,www1,www1,www1,… WWW2,WWW2,WWW2,…,WWW1 …

我通过让脚本在每个服务器cat / etc / HOSTNAME(slackware)上运行来validation这一点。 我需要每次来回切换testing一些会话内容(存储在共享memcached中),但是在每个请求中无法在两台Web服务器之间切换时遇到问题。

global log 127.0.0.1 local0 warning maxconn 4096 chroot /usr/share/haproxy pidfile /var/run/haproxy.pid uid 99 gid 99 daemon defaults balance roundrobin fullconn 100 maxconn 4096 mode http option dontlognull option http-server-close option forwardfor option redispatch retries 3 timeout connect 5000 timeout client 20000 timeout server 60000 timeout queue 60000 stats enable stats uri /haproxy stats auth ***:*** frontend www *:80 log global acl is_upload hdr_dom(host) -i uploads.site.com acl is_api hdr_dom(host) -i api.site.com acl is_dev hdr_dom(host) -i dev.site.com use_backend uploads.site.com if is_upload use_backend api.site.com if is_api use_backend dev.site.com if is_dev default_backend site.com backend site.com option httpchk HEAD /alive.php HTTP/1.1\r\nHost:site.com server www1 1.1.1.1:8080 weight 10 minconn 5 maxconn 25 check inter 2000 rise 2 fall 2 server www2 1.1.1.2:8080 weight 10 minconn 5 maxconn 25 check inter 2000 rise 2 fall 2 backend api.site.com option httpchk HEAD /alive.php HTTP/1.1\r\nHost:api.site.com server www1 1.1.1.1:8080 weight 10 minconn 5 maxconn 25 check inter 2000 rise 2 fall 2 server www2 1.1.1.2:8080 weight 10 minconn 5 maxconn 25 check inter 2000 rise 2 fall 2 backend dev.site.com option httpchk HEAD /alive.php HTTP/1.1\r\nHost:dev.site.com server www1 1.1.1.1:8080 weight 10 minconn 5 maxconn 25 check inter 2000 rise 2 fall 2 server www2 1.1.1.2:8080 weight 10 minconn 5 maxconn 25 check inter 2000 rise 2 fall 2 backend uploads.site.com option httpchk HEAD /alive.php HTTP/1.1\r\nHost:uploads.site.com server www1 1.1.1.1:8080 weight 10 minconn 5 maxconn 25 check inter 2000 rise 2 fall 2 server www2 1.1.1.2:8080 backup weight 10 minconn 5 maxconn 25 check inter 2000 rise 2 fall 2 

所以基本上,我有一些不同的后端(我已经validation了ACL正在工作),select默认选项“roundrobin”。 我已经尝试删除权重,删除所有服务器(不只是我testing的后端)的minconn / maxconn / fullconn属性,尝试删除ACL等,我一直在dev.site.com BTWtesting。

任何人看到我无法得到像www1,www2,www1,www2,…的东西的原因? 另外,这是我在这里的第一个问题之一,所以请让我知道,如果我留下任何需要我的职位。

谢谢!

你一定要观察你所期望的负载。 我怀疑你的一些服务器经常无法响应健康检查,并且定期将其从服务器场中取出,然后在负载下降后重新插入,并且可以再次响应。

另外,你如何观察失衡? 日志只会logging警告(基本上只能起作用)。

你还可以检查统计页面,你会看到有多less会话发送到每个服务器,多less次上/下,如果有一些排队或至less如果他们已经达到了他们的maxconn。