Назад | Перейти на главную страницу

Балансировка раундробина HAproxy не распределяется равномерно

Я знаю, что с загруженными серверами roundrobin в HAproxy (1.4.4) не распределяется равномерно, но мои серверы в настоящее время не получают трафика (тестовая установка), а балансировка roundrobin выполняет www1, www1, www1, www1, www1, ... www2, www2, www2, ..., www1 ...

Я проверяю это, запустив сценарий на каждом сервере cat / etc / HOSTNAME (slackware). Мне нужно, чтобы он каждый раз переключался назад и вперед, чтобы протестировать некоторые материалы сеанса (хранящиеся в общем memcached), но у меня возникают проблемы с переключением между двумя моими веб-серверами при каждом запросе.

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

В общем, у меня есть несколько разных серверных компонентов (я убедился, что списки управления доступом работают) с выбранной по умолчанию опцией «roundrobin». Я пробовал убирать веса, убирать атрибуты minconn / maxconn / fullconn для всех серверов (не только тестируемого бэкэнда), пробовал удалять списки контроля доступа и т. Д. Я тестировал на dev.site.com Кстати.

Кто-нибудь видит причину, по которой я не могу получить что-то вроде www1, www2, www1, www2, ...? Кроме того, это один из моих первых вопросов, поэтому, пожалуйста, дайте мне знать, если я оставил что-нибудь нужное в своем сообщении.

Спасибо!

Вы обязательно должны соблюдать ожидаемую нагрузку. Я подозреваю, что некоторые из ваших серверов регулярно не отвечают на проверки работоспособности и что они регулярно извлекаются из фермы, а затем снова вставляются, когда их нагрузка падает, и они могут снова отвечать.

Кроме того, как вы наблюдаете дисбаланс? Журналы регистрируют только предупреждения (в основном только спады).

Не могли бы вы также проверить страницу статистики, вы увидите, сколько сеансов отправлено на каждый сервер, сколько раз они включались / отключались, и были ли какие-то очереди или, по крайней мере, достигли ли они своего maxconn.