【问题标题】:HAproxy passive health checkingHAproxy 被动健康检查
【发布时间】: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 错误,这样如果来自前端的请求失败,它将从池中删除失败的后端,然后切换到另一个并生成另一个请求。这样用户就永远不会看到失败。

有没有办法做到这一点,或者我应该尝试其他方法以便我的用户不会收到错误?

【问题讨论】:

    标签: load-balancing haproxy


    【解决方案1】:

    默认情况下,haproxy 将重试 3 次 (retries),间隔为 1 秒到相同的后端。为了允许使用另一个后端,您应该设置option redispatch

    还要考虑(小心,这可能是有害的):

    注意:Haproxy 仅在连接错误时重试(例如 ECONNNREFUSED 就像您的情况一样),它不会重新发送/重新提交请求/数据。

    【讨论】:

    • 太棒了。选项重新调度看起来正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多