Eu não sei, mas tente isso na configuração backend (adapte 10 com o seu maxconn):
acl too_many be_sess_rate gt 10
use_backend b_too_many if too_many be_sess_rate
Acabei de começar a usar o HAProxy e estou criando um aplicativo de bate-papo em tempo real. Gostaria de saber se é possível enviar clientes para outro back-end quando o back-end atual atinge seu maxconn (estou usando "balance source"). Porque, às vezes, quando um back-end atinge seu limite, todas as conexões para esse back-end são enfileiradas e o navegador continua carregando, enquanto outros back-ends estão livres.
Tente isso, ele usará outro backend se a conexão atual no frontend for maior que 20, mude o número (linha no 4) para atender às suas necessidades, também eu escrevo o modo tcp, você pode alterá-lo para http se você precisar de saldo de carga 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
Tags haproxy