如何在多个后端之间共享健康检查?

时间:2017-06-08 14:39:48

标签: haproxy high-availability

我有两个后端,以便在我的应用程序中维护两组规则。一个用于通过浏览器访问的主网站(烹饪会话),一个用于API(无状态和通过API密钥验证)。

配置看起来像这样(大大简化)。

defaults
    option httpchk HEAD /ping

backend web
    cookie _srv insert indirect
    server srv1 10.0.0.1:80 cookie srv1 check inter 10s
    server srv2 10.0.0.2:80 cookie srv2 check inter 10s

backend api
    stick-table type string len 50 expire 1d store http_req_cnt
    stick on url_param(key)
    server srv1 10.0.0.1:80 check inter 10s
    server srv2 10.0.0.2:80 check inter 10s

如图所示,两个后端使用相同的服务器,但API不需要设置cookie。 (或将会)更多地将逻辑分开,例如速率限制规则。

我的问题是如何避免重复健康检查?每台服务器两次ping同一端点是浪费资源。我想让web后端进行运行状况检查,并将api后端标记为向上或向下。这可能吗?或者也许有更好的方法来分离后端,但保留常见的功能。

1 个答案:

答案 0 :(得分:2)

  

track [<proxy>/]<server>

     

此选项可以通过跟踪另一个来设置服务器的当前状态。可以跟踪本身跟踪另一台服务器的服务器,前提是在链的末尾,服务器启用了运行状况检查。如果省略,则使用当前的一个。如果使用disable-on-404,则必须在两个代理上启用它。

     

http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#5.2-track

这是server行。

backend api
    server srv1 10.0.0.1:80 track web/srv1
    server srv2 10.0.0.2:80 track web/srv2

这是1.6,但后来的版本应该是相同的。 该功能也存在于1.5和1.4中。它可能存在于以前的版本中,但这些版本没有维护,您不应该使用它们。