仅在服务器宕机时切换 HAProxy

仅在服务器宕机时切换 HAProxy

假设我有 2 台服务器 - SA 和 SB。是否可以将 HAProxy 配置为如下方式工作:

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

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

答案1

检查一下这个配置:

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

默认情况下,所有请求都会到达 web01。web02 将不会被使用。如果 web01 停止响应,则 30 秒后(每隔 10 秒检查 3 次)服务器将下线。web02 将上线,所有请求都将到达它。

如果 web01 恢复,则只有在每隔 10 秒进行 9999999 次检查后才会重新上线 - 这实际上是永远不会发生的。

答案2

如果您只有两台,且恰好有两台服务器,那么对通过 pacemaker/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

但是,这并不能实现您想要的第二部分:一旦恢复,它就会再次开始使用 A SA。我不确定是否有选项可以让 haproxy 按照您想要的方式运行。我至少从未使用过它。

相关内容