ActiveMQ Artemis群集故障转移问题

时间:2020-02-26 01:28:36

标签: activemq-artemis

关于带消息分组的Apache Artemis集群,我有一个问题。在Kubernetes中也可以做到这一点。

我当前拥有的设置是4个主节点和1个从属节点。节点0专门用作本地处理消息分组,节点1是专门备份到节点0。节点2-4是没有备份节点的REMOTE主节点。

我已经注意到,当连接的Artemis节点出现故障时,连接到节点2-4的客户端不会故障转移到其他3个可用的主节点,这实际上并没有发现其他节点。即使原始节点恢复后,客户端仍然无法建立连接。我从单独的Stack Overflow帖子中看到,不支持主机到主机故障转移。这是否意味着我还需要创建一个从属节点来处理故障转移的每个主节点?这会导致两个实例发生故障吗,而不是群集中有很多节点?

在一个单独的基本测试中,该群集使用两个节点组成的集群,其中一个主节点和一个从节点组成两个节点,当我断开主节点的连接时,客户端不会故障转移到从节点。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

正如您在问题中指出的那样,仅在实时备份和备份之间支持故障转移。因此,如果要对连接到节点2-4的客户端进行故障转移,则这些节点将需要备份。 ActiveMQ Artemis documentation中对此进行了详细说明。

值得注意的是,从技术上讲,聚类和消息分组是有点奇怪的配对。群集是一种使用水平缩放来提高整体邮件吞吐量的方法。但是,消息分组自然会为每个组序列化消息消耗(以保持消息顺序),然​​后降低总体消息吞吐量(可能严重取决于使用情况)。一个ActiveMQ Artemis节点每秒可能会处理数百万条消息。因为您正在对消息进行分组,所以可能不需要增加群集的消息吞吐量。

我经常看到用户只是认为他们需要一个集群来处理他们的预期负载,而没有实际进行任何性能基准测试。这可能会导致开发,测试,管理和(尤其是)硬件的成本增加,并且在某些用例中,它实际上可能会产生更差的性能。请确保您已对应用程序和代理体系结构进行了彻底的基准测试,以确认建议的设计。