and*_*rew 6 configuration load-balancing haproxy
我知道在加载服务器的情况下,HAproxy (1.4.4) 中的 roundrobin 不会均匀分布,但我的服务器目前没有流量(测试设置),并且 roundrobin 平衡做了 www1,www1,www1,www1,www1,... www2,www2,www2,...,www1...
我通过在每台服务器 cat /etc/HOSTNAME (slackware) 上运行脚本来验证这一点。我每次都需要让它来回切换以测试一些会话内容(存储在共享的 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
Run Code Online (Sandbox Code Playgroud)
所以基本上,我有一些不同的后端(我已经验证了 ACL 正在工作),并选择了默认选项“roundrobin”。我尝试删除权重,删除所有服务器的 minconn/maxconn/fullconn 属性(不仅仅是我正在测试的后端),尝试删除 ACL 等。我一直在 dev.site.com 上进行测试。
任何人都知道为什么我不能得到像 www1,www2,www1,www2,... 这样的东西的原因吗?另外,这是我在这里的第一个问题,所以如果我在帖子中遗漏了任何需要的东西,请告诉我。
谢谢!
您绝对应该观察您期望的负载。我怀疑您的某些服务器经常无法响应运行状况检查,并且它们会定期从服务器场中拔出,然后在负载下降后重新插入,并且可以再次响应。
另外,你如何观察不平衡?日志仅记录警告(基本上仅记录故障)。
您还可以检查统计页面,您将看到有多少会话发送到每个服务器,它们启动/关闭多少次,以及是否存在一些排队或至少是否已达到其 maxconn。
归档时间: |
|
查看次数: |
6731 次 |
最近记录: |