从Artemis托管的HA配置中的从属服务器故障恢复到主控服务器不起作用

时间:2019-10-10 19:54:49

标签: activemq-artemis

我在Linux上有一个4节点Artemis 2.10集群,配置为异步IO日志,复制和共置HA服务器。我一直在测试故障转移并进行故障回复,但无法正常工作。当关闭HA对中的一台服务器(A)时,第二台服务器(B)上的共置备份将激活并正确处理针对原始服务器A的消息。我修改了Artemis示例中的ColocatedFailoverExample进行了检查,它是否正常运行。问题在于,当我启动原始服务器A时,它会启动,启用,注册接受方和地址并加入集群,但是有些错误:

  1. 查看服务器A的artemis控制台,不再列出列出的colocated_backup_1来表明它正在为服务器B提供共存的备份。

  2. 服务器A备份后,导致故障转移到服务器B的服务器完全脱机,仅用作备份。它提供的母版停止了,并且不再在UI中显示地址或接受者。

  3. 尽管它说它作为备份服务器B运行,也没有在其控制台中显示colocated_backup_1对象。

  4. 服务器B似乎仍是群集的一部分,但在UI中不再显示绿色的主节点-只是一个红色的从属节点圆圈。客户端与服务器B的连接失败,很可能是因为在服务器B上运行的共置主机已关闭。

  5. 在服务器B的Artemis UI中,在节点名称>群集连接>群集名称下,群集的属性在节点数组中未显示任何节点,并且节点ID错误。现在,节点ID与服务器A上的主代理的ID相同。几乎就像故障转移之前运行的服务器B上正在运行的服务器B上的colocated_backup_01代理的信息已替换了服务器B实时服务器一样,现在只有一个代理服务器B-托管备份。

这一切在我启动服务器A时立即发生。那时服务器B的UI立即刷新,并且colocated_backup_01条目消失,并且在服务器B的主代理名称下的接受者和地址链接也消失了。群集属性页面将刷新,并且在“ nodes”属性中列出的3个节点消失,“ nodes”属性为空。

现在,如果我取下服务器B并将其启动,则服务器对之间的角色将互换。现在,服务器B重新处于活动状态,并显示为拓扑中的主节点(但在UI中仍然没有colocated_backup_01),服务器A主代理脱机,服务器A重新配置为备份/从节点。无论服务器A还是B处于此“离线”状态,代理仅备份状态都显示在UI中显示的集群属性中Node属性的值对于这两者都是相同的值。在进行故障转移测试之前,它们具有不同的节点ID,这很有意义,但是每个节点上的colocated_backup_01备份确实共享了它要备份的节点的节点ID。

总结一下我的想法:故障转移后即将备份的主服务器似乎触发了其伙伴备份节点作为备份,但也不再是主节点本身。从那时起,对托管就停止了,两台服务器之间只有一个实时主服务器,而不是每个服务器上都有一个。故障恢复功能似乎不仅使原始主控方故障,而且还关闭了该备份上的共置主控方。几乎就像是将两者之间的拓扑配置为位于同一位置,并将其视为标准的两节点HA配置,其中一台服务器为主服务器,一台为从服务器。

解决该对问题的唯一方法是同时停止两个服务器和 删除两个代理“数据”目录下的所有内容 框,然后再次启动它们。仅删除每台计算机上位于同一位置的备份文件是不够的-“数据”下的所有内容都必须删除。完成此操作后,它们可以正确启动,并且都是现场主服务器,它们又作为HA托管的备份再次配对。

这是broker.xml文件的ha-policy部分,这对于所有4台服务器都是相同的:

  <ha-policy>
     <replication>
        <colocated>
           <backup-request-retries>5</backup-request-retries>
           <backup-request-retry-interval>5000</backup-request-retry-interval>
           <max-backups>1</max-backups>
           <request-backup>true</request-backup>
           <backup-port-offset>20</backup-port-offset>
           <master>
                <check-for-live-server>true</check-for-live-server>
                <vote-on-replication-failure>true</vote-on-replication-failure>
           </master>
           <slave>
              <max-saved-replicated-journals-size>-1</max-saved-replicated-journals-size>
              <allow-failback>true</allow-failback>
              <vote-on-replication-failure>true</vote-on-replication-failure>
              <restart-backup>false</restart-backup>
           </slave>
        </colocated>
     </replication>
  </ha-policy>

0 个答案:

没有答案