在 ActiveMQ Artemis HA 集群 (v2.13.0) 中,<scale-down/>
如果主实例失败,HA 策略的属性会导致备份代理将所有未决消息移动到剩余的活动实例之一。一旦耗尽,从代理将自行停止并等待主实例再次上线。这种行为有效地减少了集群中代理对的数量,即使只有一个主代理失败。正确的?
未设置该<scale-down/>
属性时,从代理在主故障时变为活动,并且集群中的活动代理的数量不会改变。但是,我想知道如果故意关闭(即,SIGTERM
),实时备份实例是否仍将挂起的消息移动到其他代理。此行为将在代理有意关闭的情况下保留所有消息,同时在发生故障时保留活动代理的数量。
这是正确的。
这也是正确的。
如果
scale-down
未配置,则不会移动任何消息。缩减功能实际上是为云用例设计的,在这些用例中,只有实时集群会根据需求增长和缩小。当集群收缩时,即将消失的代理需要一种方法来保存其消息,以便将它们转储到集群中的另一个代理。此外,由于云本身提供的管理和冗余,云基础设施通常会使 HA 配置变得毫无意义。例如,如果一个节点发生故障,那么云基础设施可以简单地重新启动它。在这种情况下,代理可以简单地重新附加到它之前使用的任何存储,并且在崩溃(或其他任何东西)之前存在的所有持久消息仍然存在。
在我看来,虽然技术上可以在具有实时和备份的 HA 配置中使用缩减,但我认为这样做没有多大意义,因为实时和备份已经共享消息数据(通过共享-存储或复制)。
最后,值得注意的是,可以使用
ActiveMQServerControl
MBean 以管理方式执行缩减。