HAProxy - 停止服务器上500的餐饮请求

时间:2013-02-27 10:58:16

标签: ubuntu haproxy

当班克服务器发送500个服务器时,有没有办法停止向HAProxy服务器提供进一步的请求?

当服务器收到SIGINT之类的信号时,它将开始提供“500 Server Internal Error”。因此,当HAProxy从服务器检测到500响应时,是否能够停止对服务器的进一步请求?

在服务器部分默认启用宏“on-error”。尝试这不会产生任何结果。例如:

server nucleus_server1 127.0.0.1:12341 check on-error mark-down

。宏标记下降与此无关。

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

如果您希望HAProxy根据此服务器发送的返回代码将服务器标记为DOWN,请在服务器定义中添加“observe layer7”选项。对于您的示例,它可能看起来像:

server nucleus_server1 127.0.0.1:12341 check on-error mark-down observe layer7 error-limit 1

这意味着如果nucleus_server1向任何客户端请求返回500,它将从池中删除。通过'error-limit',您可以配置必须返回多少500个以将此服务器标记为“DOWN”。

如果内部HAProxy检查成功(默认为2次),

服务器将再次标记为“UP”。

查看:检查,降低,提升,错误限制,观察HAProxy文档中的选项以获取更多信息。

答案 1 :(得分:5)

您使用的是httpchk选项吗?对于非2xx或3xx的响应,它将失败,并且HAProxy将停止向该计算机发送流量。

来自official documentation

# Relay HTTPS traffic to Apache instance and check service availability
# using HTTP request "OPTIONS * HTTP/1.1" on port 80.
backend https_relay
    mode tcp
    option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
    server apache1 192.168.1.1:443 check port 80

但它可以很简单:

    option httpchk GET /_health

其中/_health返回正确的状态代码。