如果 HAProxy 后端 nginx 服务器无法连接到 Unicorn,则将其从轮换中移除

如果 HAProxy 后端 nginx 服务器无法连接到 Unicorn,则将其从轮换中移除

我有一个运行 HAProxy 的负载均衡器,其中两个后端服务器均在 Unicorn 上运行 Nginx。

如果 nginx 在其中一个框上出现故障,HAProxy 会将其从集合中移除,并且服务继续运行。

如果 unicorn 出现故障,nginx 就会开始提供 502 错误,并且 HAProxy 会愉快地将它们转发给客户端。

我认为有两种可能的解决方案:

  • 如果无法连接到 unicorn,则配置 nginx 根本不响应。HAProxy 会认为它已关闭并且不再向其发送请求。
  • 配置 haproxy 将 502 视为服务器关闭并且不再向其发送任何请求。

我不知道该怎么做

答案1

从 Unicorn,您将看到一个“ping”页面,如果应用程序正常运行,该页面将响应“OK”。然后使用 http-check-expect 将该页面用作 haproxy 中的健康检查。

答案2

感谢@florin-asavoaie 为我指明了写作方向。以下是完整的写作:

我已经在 /status 上有一个 json 页面,返回 {"status":"up"}

所以我补充道

option httpchk GET /status
http-check expect string up

进入 haproxy.cfg 中的后端并重新启动 haproxy

相关内容