当前位置: 首页 > 知识库问答 >
问题:

ActiveMQ Artemis群集故障转移问题

徐文斌
2023-03-14

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

在一个单独的基本测试中,使用一个主从两个节点的集群,我观察到当我关闭客户机所连接的主节点时,客户机不会故障转移到从节点。你知道为什么吗?

共有1个答案

璩涛
2023-03-14

正如您在问题中注意到的,故障转移只支持在活动和备份之间进行。因此,如果您希望对连接到节点2-4的客户端进行故障转移,那么这些节点将需要备份。这在ActiveMQ Artemis文档中有更详细的描述。

值得注意的是,集群和消息分组虽然在技术上是可能的,但有点奇怪。集群是使用水平伸缩来提高总体消息吞吐量的一种方法。然而,消息分组自然会序列化每个组的消息消耗(以维护消息顺序),这会降低总体消息吞吐量(可能严重依赖于用例)。单个ActiveMQ Artemis节点可能每秒处理数百万条消息。可能您不需要集群增加的消息吞吐量,因为您正在对消息进行分组。

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

 类似资料:
  • 我正在尝试用6台机器实现一个Redis集群。我有一个由六台机器组成的流浪集群: 运行redis服务器 我编辑了上述所有服务器的/etc/redis/redis.conf文件,添加了这个 然后我在六台机器中的一台上运行了这个程序; Redis集群已启动并运行。我通过在一台机器上设置值手动检查它显示在其他机器上。 我的问题是,当我关闭或停止任何一台主机上的redis server时,整个集群都会停止运

  • 因此,如果我理解正确的话,在检测并重新启动失败代理的环境中运行Artemis代理集群将提供与运行每个活动服务器都与备份配对的集群相同的语义(以及类似的可用性)。对吗?

  • 目前,我正在使用ActiveMQ,并计划将系统迁移到ActiveMQ Artemis。目前,我有3个生产者和3个消费者,只有一个ActiveMQ服务器/代理。

  • 故障自动转移是指在 TiDB 集群的某些节点出现故障时,TiDB Operator 会自动添加一个节点,保证 TiDB 集群的高可用,类似于 K8s 的 Deployment 行为。 由于 TiDB Operator 基于 StatefulSet 来管理 Pod,但 StatefulSet 在某些 Pod 发生故障时不会自动创建新节点来替换旧节点,所以,TiDB Operator 扩展了 Stat

  • 我们有一个mongodb副本集,其中包含两个实例(127.0.0.1:27017-主要,127.0.0.1:27018-次要)和一个仲裁器(127.0.0.1:27019)。当我使用rs.steppdown(60)从主实例中退出时,它应该成为辅助实例,辅助实例应该成为主实例,所有写操作都应该在辅助实例中发生(退出后的主实例)。但在卸任后,我遇到了一个异常“无法将数据写入传输连接:远程主机强制关闭了

  • null 当我使用Ctrl-C停止活动服务器时,从服务器报告的而断开连接,这是正确的,但是备份服务器没有更改其状态,也没有侦听端口61617。那么我在配置中做错了什么呢? 实时服务器配置: 备份服务器配置: