Tim*_*Tim 5 high-availability haproxy
我有两个后端,以便在我的应用程序中维护两组规则。一种用于通过浏览器访问的主网站(cookied 会话),另一种用于 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
Run Code Online (Sandbox Code Playgroud)
如图所示,两个后端使用相同的服务器,只是 API 不需要设置 cookie。有(或将会有)更多的逻辑需要分离,例如速率限制规则。
我的问题是如何避免重复健康检查?对每台服务器对同一端点执行两次 ping 操作会浪费资源。我想让web
后端进行健康检查,并将api
后端标记为启动或关闭。这可能吗?或者也许有更好的方法来分离后端但保留通用功能。
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
Run Code Online (Sandbox Code Playgroud)
这是从1.6开始的,但是以后的版本应该是一样的。该功能也存在于 1.5 和 1.4 中。它可能存在于以前的版本中,但这些版本没有维护,您不应该使用它们。
归档时间: |
|
查看次数: |
2254 次 |
最近记录: |