我有一个带有单个后端的 HAProxy 配置,与此非常相似:
backend mybackend
option httpchk get /ping
http-check expect ! rstatus ^5
server mybackend-0 192.168.1.1:9041 weight 1
/ping
端点总是200
返回。
我的问题:在单个服务器上进行健康检查有什么好处吗?据我了解,只有当我们有多个后端服务器并且您想要对它们进行负载平衡时,健康检查才有意义。
在这方面的任何帮助将不胜感激。
谢谢
对单个服务器进行健康检查以允许“断路器”场景是有意义的。想象一下,您的后端正在接受 TCP 连接,但无法生成响应。通过此 haproxy 连接的客户端应用程序必须等到它们的内置超时发生才能关闭连接。如果他们通常期望 50 毫秒的响应时间,而现在必须等待 3 秒才能使他们的请求超时到期,那么他们很可能会失败。
一个写得很好的客户端应用程序会检测到这种情况并执行自己的熔断,但根据我的经验,大多数应用程序都不会。将运行状况检查添加到 HAProxy 可以让 HAProxy 代表它们进行断路。
因此,后端无法生成响应并导致运行状况检查失败。HAProxy 然后立即使用格式正确的 503 响应任何传入请求,然后客户端应用程序可以随意处理它。
很多时候,应用程序是在假设后端快速回复成功或失败的情况下编写的。让 HAProxy 进行健康检查可以缓解一些应用程序无法处理无响应的情况。