当bankend服务器发送500时,有没有办法停止从HAProxy服务器对服务器的进一步请求?
当服务器收到SIGINT之类的信号时,它将开始提供"500 Server Internal Error".因此,当HAProxy从服务器检测到500响应时,是否能够停止对服务器的进一步请求?
在服务器部分中默认启用宏"on-error".尝试这不会产生任何结果.例如:
server nucleus_server1 127.0.0.1:12341 check on-error mark-down
Run Code Online (Sandbox Code Playgroud)
.宏标记下降与此无关.
有任何想法吗?
小智 6
如果您希望HAProxy根据此服务器发送的返回代码将服务器标记为DOWN,请在服务器定义中添加"observe layer7"选项.对于您的示例,它可能看起来像:
server nucleus_server1 127.0.0.1:12341 check on-error mark-down observe layer7 error-limit 1
Run Code Online (Sandbox Code Playgroud)
这意味着如果nucleus_server1向任何客户端请求返回500,它将从池中删除.通过'error-limit',您可以配置必须返回多少500个以将此服务器标记为"DOWN".
如果内部HAProxy检查成功(默认为2次),服务器将再次标记为"UP".
请查看:检查,下降,提升,错误限制,观察HAProxy文档中的选项以获取更多信息.
你在用这个httpchk选项吗?对于非2xx或3xx的响应,它将失败,并且HAProxy将停止向该计算机发送流量.
从官方文档:
# 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
Run Code Online (Sandbox Code Playgroud)
但它可以很简单:
option httpchk GET /_health
Run Code Online (Sandbox Code Playgroud)
其中/_health返回了良好的状态代码.
| 归档时间: |
|
| 查看次数: |
6643 次 |
| 最近记录: |