我们计划使用 ActiveMQ Artemis HA 复制和单个主/备份对,并使用新的可插拔仲裁投票功能。
这篇文章(回应我之前的问题)表明这是可能的:
一般来说,只有在新的可插拔仲裁投票中才推荐使用具有复制功能的单个主/备份对,因为否则脑裂的风险非常高。
但是文档指出:
网络隔离保护需要配置>=3个Zookeeper节点
由于我们的配置中只有一对节点,该语句的含义是什么?
此外,此链接似乎表明仅用两个节点并不真正可行:
如果您使用复制,则缓解脑裂的推荐节点的最小数量为 6
而且:
网络 pinger 可用于缓解脑裂,但配置起来可能很棘手。您需要执行自己的测试以确保它按照您想要的方式工作。
我的问题是这在两节点架构中是否有效?如果是的话,是否需要复杂的配置?
最重要的是,如果我们添加第三个节点,是否可行且相对容易?
我认为六个节点是不可能的。
可插拔的仲裁投票需要与外部系统集成来仲裁投票。默认实现与 Apache ZooKeeper 集成。
因此,您需要主代理、备份代理和至少一个 ZooKeeper 节点。然而,如果只有一个 ZooKeeper 节点,那么这将成为架构上的弱点,因为如果该节点发生故障,那么高可用性语义可能会受到损害。因此,您可能希望为 ZooKeeper 提供一些冗余。为此,文档建议使用 3 个或更多 ZooKeeper 节点。
需要明确的是,ZooKeeper 是解决此类问题的相当常见的解决方案,因此组织部署 ZooKeeper 集群相对常见。利用此基础设施来实现 ActiveMQ Artemis 高可用性非常有意义。
您链接的关于最小集群部署的答案是在 2020 年实现可插入仲裁投票之前编写的。因此,这个答案已经过时了。
网络 pinger 本身从来就不是一个“推荐”的解决方案。对于那些无法部署推荐的 3 个主/备份对并且也无法使用共享存储的人们来说,这是一种权宜之计,但他们仍然希望缓解脑裂问题。同样,这是在新的可插入法定人数投票之前很久就实施的。