您可以使用 Artemis CLI 执行激活序列维护/恢复工具,用于 复制,并使用可插拔锁管理器。

两个主要命令是 activation listactivation set,它们可以一起使用来恢复本地/协调激活序列发生的某些灾难。

以下是一个围绕 RI(使用 Apache ZooKeeperApache curator)构建的灾难场景,用于演示这些命令的使用方法。

1. ZooKeeper 集群灾难

一个合适的 ZooKeeper 集群应该使用至少 3 个节点,但是如果所有这些节点都崩溃,丢失管理复制所需的任何激活状态信息会发生什么?

在灾难期间(即 ZooKeeper 节点不再可访问)会发生以下情况

  • 活动代理关闭(如果重新启动,应该挂起等待再次连接到 ZooKeeper 集群)

  • 被动代理取消配对并等待再次连接到 ZooKeeper 集群

必要的管理操作

  1. 停止所有代理

  2. 重新启动 ZooKeeper 集群

  3. 通过从代理的 bin 文件夹运行此命令,查找具有其 NodeID 的最高本地激活序列的代理

    $ ./artemis activation list --local
    Local activation sequence for NodeID=7debb3d1-0d4b-11ec-9704-ae9213b68ac4: 1
  4. 从具有最高本地激活序列的代理的 bin 文件夹

    # assuming 1 to be the highest local activation sequence obtained at the previous step
    # for NodeID 7debb3d1-0d4b-11ec-9704-ae9213b68ac4
    $ ./artemis activation set --remote --to 1
    Forced coordinated activation sequence for NodeID=7debb3d1-0d4b-11ec-9704-ae9213b68ac4 from 0 to 1
  5. 重新启动所有代理:以前处于活动状态的代理应该能够再次处于活动状态

ZooKeeper 节点越多,发生此类灾难需要管理员干预的可能性就越小,因为它允许 ZooKeeper 集群容忍更多故障。