HAProxy 仅在服务器关闭的情况下切换

Joe*_*Joe 15 load-balancing haproxy

假设我有 2 个服务器 - SA 和 SB。是否可以将 HAProxy 配置为这样工作:

所有连接到 SA -> SA 关闭 -> HAProxy 将所有连接切换到 SB -> 直到 SB 没有关闭 - 没有连接到 SA,即使它再次启动 -> SB 关闭 -> HAProxy 切换到 SA.. .

简而言之,我希望 HAProxy 仅在当前服务器出现故障时切换。也许我应该使用 HAProxy 以外的其他东西?

小智 26

看看这个配置:

listen my-server 0.0.0.0:80
    balance roundrobin
    server web01 10.10.10.1:80 check inter 10s fall 3 rise 99999999
    server web02 10.10.10.2:80 check backup
Run Code Online (Sandbox Code Playgroud)

默认情况下,所有请求都会命中 web01。将不会使用 web02。如果 web01 停止响应,30 秒后(每 10 秒检查 3 次)服务器将脱机。web02 将联机,所有请求都会命中它。

如果 web01 恢复,它只会在 99999999 以 10 秒的间隔通过检查后重新联机 - 这实际上永远不会。

  • -1,解决方案在正常运行 31 年后停止工作 =P (6认同)

Den*_*ker 7

如果您只有两台,而且正好是两台服务器,则为您通过起搏器/corosync 管理的服务使用 vip 以使其高度可用可能更有意义。

通过将 SB 标记为备份服务器,haproxy 也是可能的。这样它只在 SA 不可用时使用:

backend mybackend
mode            http
balance         roundrobin
option          httpchk /test.html
server          server1.example.com server1.example.com:80 weight 1 check port 80 inter 5s rise 3 fall 2
server          server2.example.com server2.example.com:80 backup weight 1 check port 80 inter 5s rise 3 fall 2
Run Code Online (Sandbox Code Playgroud)

但是,这并没有完成您想要的第二部分:一旦它回来,它就会再次开始使用 A SA。我不确定是否可以选择让 haproxy 按照您想要的方式运行。至少我没用过。