【发布时间】:2016-04-25 05:37:10
【问题描述】:
我是 haproxy 和负载平衡的新手。我想看看在代理运行时关闭后端主机会发生什么。
问题是,如果我关闭其中一个后端并刷新浏览器,页面会立即向用户显示 503 错误。在下一页加载后,它不再收到错误,因为大概该后端已从池中删除。
作为测试,我设置了两个后端 Flask 应用程序并配置 HAProxy 以像这样平衡它们:
backend app
mode http
balanace roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
我的理解是这样的: https://www.haproxy.com/doc/aloha/7.0/haproxy/healthchecks.html#check-parameters
是每 2 秒 ping 一次后端主机以查看它们是否已启动。然后,如果它们关闭,它们将从池中移除。 5xx 错误发生在我杀死后端到 2 秒之间。
我认为有一种方法可以通过让 HAProxy 执行一些逻辑来解决这个 5xx 错误,这样如果来自前端的请求失败,它将从池中删除失败的后端,然后切换到另一个并生成另一个请求。这样用户就永远不会看到失败。
有没有办法做到这一点,或者我应该尝试其他方法以便我的用户不会收到错误?
【问题讨论】: