单个后端的 HAProxy 健康检查

单个后端的 HAProxy 健康检查

我有一个带有单个后端的 HAProxy 配置,与此非常相似:

backend mybackend
option httpchk get /ping
http-check expect ! rstatus ^5
server mybackend-0 192.168.1.1:9041 weight 1

端点/ping总会返回200

我的问题:在单个服务器上进行健康检查有什么好处吗?据我了解,只有当我们有多个后端服务器并且您想要对它们进行负载平衡时,健康检查才有意义。

任何在这方面的帮助都将受到感谢。

谢谢

答案1

对单个服务器进行健康检查以允许“断路器”场景是有意义的。想象一下,您的后端正在接受 TCP 连接,但无法生成响应。通过此 haproxy 连接的客户端应用程序必须等到其内置超时发生才能关闭连接。如果他们通常期望 50 毫秒的响应时间,现在必须等待 3 秒才能让其请求超时到期,那么他们很可能会失败。

编写良好的客户端应用程序会检测到这种情况并自行执行断路,但根据我的经验,大多数应用程序都不会这样做。将健康检查添加到 HAProxy 可让 HAProxy 代表它们断路。

因此,后端无法生成响应并导致健康检查失败。然后,HAProxy 会立即使用格式正确的 503 响应任何传入请求,然后客户端应用程序可以按照自己喜欢的方式处理该请求。

很多时候,应用程序都是假设后端能够快速回复成功或失败。使用 HAProxy 进行健康检查可以缓解应用程序无法处理无响应的情况。

相关内容