ActiveMQ Artemis 集群故障转移问题

ActiveMQ Artemis cluster failover questions

我有一个关于使用消息分组的 Apache Artemis 集群的问题。这也在 Kubernetes 中完成。

我目前的设置是 4 个主节点和 1 个从节点。节点 0 作为 LOCAL 专门处理消息分组,节点 1 是节点 0 的专用备份。节点 2-4 是没有备份节点的 REMOTE 主节点。

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

在一个单独的基本测试中,使用一个主从节点的两个节点集群,我观察到当我关闭客户端连接的主节点时,客户端不会故障转移到从节点.有什么想法吗?

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

中有更详细的描述

值得注意的是,尽管在技术上可行,但集群和消息分组是一种有些奇怪的组合。集群是一种使用水平缩放来提高整体消息吞吐量的方法。但是,消息分组自然地 序列化 每个组的消息消耗(以维护消息顺序),然​​后 减少 整体消息吞吐量(可能严重取决于使用-案件)。单个 ActiveMQ Artemis 节点可能每秒处理数百万条消息。由于您正在对消息进行分组,因此您可能不需要增加集群的消息吞吐量。

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