【问题标题】:HAProxy - stop catering requests on 500 from serverHAProxy - 停止处理来自服务器的 500 请求
【发布时间】:2014-03-01 01:45:35
【问题描述】:

当银行服务器发送 500 时,有什么方法可以停止满足 HAProxy 对服务器的进一步请求?

当服务器接收到类似 SIGINT 的信号时,它将开始提供 "500 Server Internal Error" 。那么当 HAProxy 检测到来自服务器的 500 响应时,它是否能够停止对服务器的进一步请求?

在服务器部分默认启用一个宏“on-error”。尝试并没有产生任何结果。例如:

server nucleus_server1 127.0.0.1:12341 check on-error mark-down

.on-mark-down 宏不能与此一起使用。

有什么想法吗?

【问题讨论】:

    标签: ubuntu haproxy


    【解决方案1】:

    如果您希望 HAProxy 根据此服务器发送的返回码将服务器标记为 DOWN,请在服务器定义中添加“观察 layer7”选项。对于您的示例,它可能如下所示:

    server nucleus_server1 127.0.0.1:12341 check on-error mark-down observe layer7 error-limit 1
    

    这意味着如果 nucleus_server1 向任何客户端请求返回 500,它将从池中删除。通过“错误限制”,您可以配置必须返回多少个 500 才能将此服务器标记为“关闭”。

    如果内部 HAProxy 检查成功(默认为 2 次),服务器将再次标记为“UP”。

    查看:检查、下降、提升、错误限制,查看 HAProxy 文档中的选项以获取更多信息。

    【讨论】:

      【解决方案2】:

      您是否使用httpchk 选项?对于不是 2xx 或 3xx 的响应,它将失败,并且 HAProxy 将停止向该计算机发送流量。

      来自official documentation

      # Relay HTTPS traffic to Apache instance and check service availability
      # using HTTP request "OPTIONS * HTTP/1.1" on port 80.
      backend https_relay
          mode tcp
          option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
          server apache1 192.168.1.1:443 check port 80
      

      但它可以很简单:

          option httpchk GET /_health
      

      /_health 返回一个良好的状态码。

      【讨论】:

      • 请注意,这与原始配置不同。通过检查,HAProxy 会执行主动请求并仅检查这些请求的结果。它不会检查“常规”流量。为此,您必须使用observe layer7 error-limit 10 on-error mark-down 或@user3365898 回答的类似名称。您还需要启用检查。
      猜你喜欢
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-30
      相关资源
      最近更新 更多