【问题标题】:haproxy http load balancing and status handlinghaproxy http 负载均衡和状态处理
【发布时间】:2015-08-28 12:09:32
【问题描述】:

我无法清楚地理解 Haproxy 如何在 http 模式下执行健康检查。

如果第一个服务器返回一些错误状态代码(例如,503),我需要将 http 请求重新发送到另一台服务器(后端服务器列表中的下一个)。 我需要 Haproxy 的以下行为: 1) 我收到一些 HTTP 请求 2)我将它发送到第一台服务器 3)如果我得到 503(或其他错误代码),这个 HTTP 请求必须发送到下一个服务器 4) 如果它返回 200 代码,则此 tcp 会话的下一个 http 请求将转到第一个服务器

我知道在 nginx 中很容易实现(我想使用 proxy_next_upstream)。但是我需要使用 Haproxy,因为我需要连接的软件在第 4 层工作,我无法更改它,所以它需要在同一个 tcp 会话中保留一组 http 消息。我可以让它们在 haproxy 中保持在同一个会话中,但不能在 nginx 中。

我知道 httpchkobserve,但它们不是我需要的。 第一个允许我发送一些 http 请求,而不是我收到的 http 请求(我需要分析 http 流量来决定我将回答什么 http 状态)。 其次将我的服务器标记为已死并且不再向它发送消息,但我需要分析这些消息。 我真的需要像 nginx 这样的行为,但能够在 tcp 会话中拥有 http 消息。 可能有一些很好的方法可以用 ACL 来实现它?

谁能给我详细的解释一下haproxy如何在http模式下处理负载平衡或者为我的问题提供一些解决方案?

更新: 例如,当我尝试使用观察来执行此操作时,我使用了配置:

global
log 127.0.0.1   local0
maxconn 10000
user haproxy
group haproxy
daemon

defaults
log global
option  dontlognull
retries 3
maxconn 10000
contimeout  10000
clitimeout  50000
srvtimeout  50000

listen zti 127.0.0.1:1111
mode http
balance roundrobin
server zti_1 127.0.0.1:4444 check observe layer7 error-limit 1 on-error mark-down
server zti_2 127.0.0.1:5555 check observe layer7 error-limit 1 on-error mark-down

谢谢, 德米特里

【问题讨论】:

  • 请发布您的配置,
  • @Tan Hong Tat 实际上,我仍然没有编写好的配置,因为我不知道如何实现它。但是,我在帖子中附加了我在尝试使用“观察”做我想做的事情时使用的配置

标签: session nginx tcp haproxy


【解决方案1】:

您可以使用option httpchk

当指定“option httpchk”时,发送一个完整的HTTP请求 一旦建立 TCP 连接,响应 2xx 和 3xx 被认为是有效的,而所有其他的都表示服务器故障, 包括没有任何回应。

listen zti 127.0.0.1:1111
mode        http
balance     roundrobin
option      httpchk HEAD / HTTP/1.0
server      zti_1 127.0.0.1:4444 check inter 5s rise 1 fall 2
server      zti_2 127.0.0.1:5555 check inter 5s rise 1 fall 2

来源:https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#option%20httpchk

【讨论】:

  • 我已经在我的帖子中提到了httpchk。 httpchk 会发送什么消息?我需要发送某些消息。我需要重新发送收到的消息 haproxy
  • httpchk 会返回一个 HTTP 状态,非 2xx 和 3xx 会将请求发送到下一个可用的服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2017-04-12
  • 2021-04-29
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 2018-04-29
相关资源
最近更新 更多