当所有后端服务器都宕机时,如何使HAProxy拒绝TCP连接

9

我们正在使用HAProxy将传入的TCP连接转发到使用原始TCP的单独服务器。我们遇到的问题是客户端连接被接受后立即关闭而不是立即拒绝。由于我们启用了健康检查,是否有任何方法让HAProxy解除端口绑定,以便初始连接失败?

listen custom_forward
   mode tcp
   bind *:11144
   default-server inter 10m fastinter 20s downinter 1m maxconn 100
   server custom_server hostname:10144 check
1个回答

14

如果后端服务器宕机,您希望明确拒绝连接:

acl site_dead nbsrv lt 1
tcp-request connection reject if site_dead

或者acl site_dead nbsrv(backend_name) lt 1其中backend_name是另一个后端的名称。

nbsrv文档

acl文档

tcp-reject文档


你应该添加 connection,这样它就应该是 tcp-request connection reject if site_dead,否则 haproxy 在解析配置时会失败。 - Danduk82
1
对我来说足够了,可能更有效率:tcp-request connection reject if { nbsrv(backend_name) lt 1 } - dannyman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接