Я только начал использовать HAProxy и создаю приложение для чата в реальном времени. Интересно, можно ли отправлять клиентов на другой бэкэнд, когда текущий бэкэнд достигает своего maxconn (я использую «источник баланса»). Потому что иногда, когда серверная часть достигает своего предела, все подключения к ней ставятся в очередь, и браузер продолжает загружаться, в то время как другие серверные части остаются бесплатными.
Я не знаю, но попробуйте это в конфигурации бэкэнда (адаптируйте 10 с вашим maxconn):
acl too_many be_sess_rate gt 10
use_backend b_too_many if too_many be_sess_rate
Попробуйте это, он будет использовать другой бэкэнд, если текущее соединение в интерфейсе больше 20, измените номер (строка № 4) в соответствии с вашими потребностями, также я пишу режим tcp, вы можете изменить его на http, если вам нужен баланс нагрузки http
frontend frontend_chat 127.0.0.1:8080
mode tcp
balance roundrobin
acl max_conn_reached fe_conn gt 20
default_backend be_chat1
use_backend be_chat1_and_chat2 if max_conn_reached
backend be_chat1
mode tcp
balance roundrobin
server chat1 127.0.0.1:9001 check maxconn 10
backend be_chat1_and_chat2
mode tcp
balance roundrobin
server chat1 127.0.0.1:9001 check maxconn 10
server chat2 127.0.0.1:9002 check maxconn 10