达到 maxconn HAProxy 时更改后端

达到 maxconn HAProxy 时更改后端

我刚刚开始使用 HAProxy,我正在构建一个实时聊天应用程序。我想知道当当前后端达到其 maxconn 时是否可以将客户端发送到另一个后端(我正在使用“平衡源”)。因为有时,当后端达到其限制时,到该后端的所有连接都会排队,并且浏览器会继续加载,而其他后端则处于空闲状态。

答案1

我不知道,但是请在后端配置中尝试这个(使用你的 maxconn 调整 10):

acl too_many be_sess_rate gt 10
use_backend b_too_many if too_many be_sess_rate

答案2

试试这个,如果前端的当前连接数大于 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

相关内容