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

Сменить бэкэнд при достижении maxconn HAProxy

Я только начал использовать 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