HAproxy:服务器速度慢时select不同的后端

我试图实现一种方式来直接从haproxy服务器响应“服务器响应”(或超过一些限制)时,“假”的服务器响应。

我写了一个加载到haproxy(并注册为core.service)的lua脚本,以轻量和快速的方式模仿服务器行为。

现在我需要按照规则做后端select:

  1. 后端已closures(所有服务器运行状况检查失败)。
  2. 后端速度足够慢,我不想等待一个真正的回应。

对于第一部分我设法去:

 acl backend_down nbsrv(be) lt 1 ... use_backend fallback_backend if backend_down backend fallback_backend http-request use-service lua.fallback_service 

我似乎无法find第二部分的好方法。 如何检查响应时间并根据结果在configuration中作出决定?

我的方法 – 你仍然在健康检查中实现这一点。 您只需测量响应时间,如果平均值太高,则计算平均值和返回值,例如503 / HTTP /响应时间的HTTP状态。 我不认为有一个存储可用于ACL的响应时间的variables。 事件(如果存在) – 每个ACLpath将独立处理每个请求 – 您仍然需要根据当前的请求上下文(包括从上游服务器处理返回后得到的单个处理时间)计算ACL。

另一种方法是通过外部服务测量这些时间,并通过pipe理套接字来禁用/启用服务器。