假设我在集群中运行了两个HAProxy实例,为其他事物提供负载平衡。两个节点的 HAProxy 集群可以使用 Pacemaker 和 Corosync 来实现。
考虑两个节点彼此失去联系(但外部世界仍然可以访问)的情况。在这种情况下,他们将决定两者都采用与该集群关联的虚拟 IP。会不会出现这种情况?如果是这样,您是否必须实施 STONITH 来保护虚拟 IP 资源?没有 STONITH 有没有办法解决这个问题?
假设我在集群中运行了两个HAProxy实例,为其他事物提供负载平衡。两个节点的 HAProxy 集群可以使用 Pacemaker 和 Corosync 来实现。
考虑两个节点彼此失去联系(但外部世界仍然可以访问)的情况。在这种情况下,他们将决定两者都采用与该集群关联的虚拟 IP。会不会出现这种情况?如果是这样,您是否必须实施 STONITH 来保护虚拟 IP 资源?没有 STONITH 有没有办法解决这个问题?
您不需要 stonith,因为 HAProxy 不需要共享存储容器。如果您的集群对进入裂脑情况,这有什么关系?您的路由器选择击中哪一个都可以正常工作。
You will probably want the following in sysctl.conf:
#Allow haproxy to start without the interface present - Required for stick table replication:
net.ipv4.ip_nonlocal_bind = 1
还要确保您的 HA 解决方案正常失败,即在脑裂场景中确保两个节点都尝试并上线(在 Loadbalancer.org,我们使用了几个补丁来修复 HA-Linux 心跳以确保发生这种情况)但是在说了这么多之后STONITH 的硬件实现也可以。