Я хотел использовать HAProxy в своем веб-приложении для балансировки нагрузки. Я пытаюсь динамически добавить новый узел rabbitmq на сервер HAProxy с помощью команды: haproxy -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)
. Я использую режим tcp-соединения с leastconn
алгоритм балансировки в балансировке нагрузки. Ожидается, что когда в одном rabbitmq есть 3 соединения, я добавляю новый сервер кролика в сервер HAProxy. поэтому следующее соединение перейдет на 2-й сервер rabbitmq, чего в моем случае не происходит. Он беспорядочно раздает соединение.
Вот мой файл конфигурации:
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
Какая проблема вызывает такое поведение? Любое предложение будет оценено по достоинству.
Не уверен, как добавить узел в haproxy. Новый узел уже существует в haproxy.cfg? Если вы добавите узел с помощью команды: haproxy -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)
, haproxy перезапустится, вся информация о подключении будет удалена. Таким образом, новое соединение не может быть отправлено на второй сервер rabbitmq.
В Документы HAProxy сказать относительно leastconn
алгоритм балансировки:
Использование этого алгоритма рекомендуется там, где ожидаются очень длинные сеансы, такие как LDAP, SQL, TSE и т. Д., Но он не очень хорошо подходит для протоколов, использующих короткие сеансы, таких как HTTP.
Я не уверен, как работает AMQP, но не думаю, что вы увидите идеальные результаты, особенно при небольшом количестве подключений с минимальным подключением. Судя по вашим данным, не похоже, что вы добавляете узел динамически, на самом деле кажется, что вы перезапускаете экземпляр HAProxy?