集群的基线历史记录不包含加入节点 BlT 的分支点哈希



我有一个由2个服务器节点组成的Ignite集群(v2.9.1(,用作我的Java应用程序的嵌入式数据库(键值(。我正在使用Java设置基线拓扑,它们之间具有持久性—当我启动一个节点时-

ignite.cluster().state(ClusterState.ACTIVE);
ignite.cluster().baselineAutoAdjustEnabled(true);
ignite.cluster().baselineAutoAdjustTimeout(1 * 60 * 1000); // 1min

当其他节点加入时–

ignite.cluster().setBaselineTopology(topVer);

当使用更新两个节点a(1001(和B(1000(的单元程序时,我遇到了如下错误场景——

  1. 节点A启动-inlighte.cluster((.state(ClusterState.ACTIVE(
  2. 节点B启动-加入群集。-如上所述设置基线拓扑
  3. 过了一段时间。节点A已停止
  • B仍在更新。"1分钟后的基线-autoAdjustTimeout">
  1. 现在停止节点B
  2. 节点A已启动。"ignite.cluster((.state(ClusterState.ACTIVE(。''
  • A正在更新
  1. 启动节点B。它挂起

错误:由以下原因引起:class org.apache.Initure.spi.InitiesPi异常:加入节点(1000(的BaselineTopology与群集中的Baseline拓扑不兼容。加入节点(3(的BlT id小于集群(4(的BlT id,但集群的BaselineHistory不包含加入节点BlT(1000(的分支点哈希。请考虑清理节点的永久存储,然后再次将其添加到集群中。

对于此环境,由于节点数将始终为2-有没有一种方法可以预先创建带有静态节点详细信息的Baseline Topology,并将其传递给javaapi,这样Ignite就可以识别它,并将基线大小保持为2,当前一个在线,另一个离线,直到它加入。对于这些节点,如果其中一个或两个连接、离开或移除,则不会对BlT数产生影响。此外,如何确保这两个节点始终在比较基准历史记录中。如果是这样的话,你能指出正确的方向吗。

或者可能是如何恢复/更新基线历史记录的问题,这样就不会看到这个问题。

恐怕您必须擦除有问题的节点的数据目录,可能在此之前以独立模式(单节点集群(运行它,以从中卸载数据。

如果计划将节点与数据一起带回,请确保不要将其从基线拓扑中排除,当然也不要将分段服务器节点上的基线拓扑调整为仅包括其自身。

最新更新