Ignite 集群&x27;s基线历史记录不';t包含加入节点BlT的分支点哈希

Ignite 集群&x27;s基线历史记录不';t包含加入节点BlT的分支点哈希,ignite,Ignite,我有两个服务器节点组成的Ignite集群(v2.9.1),用作Java应用程序的嵌入式db(键值)。我正在使用Java设置基线拓扑,并在它们之间持久化- 当我启动一个节点时- ignite.cluster().state(ClusterState.ACTIVE); ignite.cluster().baselineAutoAdjustEnabled(true); ignite.cluster().baselineAutoAdjustTimeout(1 * 60 * 1000); // 1min

我有两个服务器节点组成的Ignite集群(v2.9.1),用作Java应用程序的嵌入式db(键值)。我正在使用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)的单元程序时,我遇到如下错误情况-

  • 节点A启动-ignite.cluster().state(ClusterState.ACTIVE)
  • 节点B启动–加入群集。-setBaselineTopology如上所述
  • 过了一段时间。节点A停止
    • B仍在更新中。“”1分钟后的基线-自动调整超时“”
  • 现在停止节点B
  • 节点A已启动。“”ignite.cluster().state(ClusterState.ACTIVE)。“”
    • A正在更新
  • 启动节点B。它挂起
  • 错误:由以下原因引起:class org.apache.ignite.spi.IgniteSpiException:加入节点(1000)的BaselineTopology与群集中的BaselineTopology不兼容。加入节点(3)的BlT id小于群集(4)的BlT id,但群集的基线历史记录不包含加入节点BlT(1000)的分支点哈希。考虑清理节点的持久存储并将其再次添加到群集。

    对于此环境,因为节点数始终为2- 有没有一种方法可以预先创建带有静态节点详细信息的基线拓扑,并将其传递给java api,以便Ignite识别它并将基线大小保持为2,当前一个在线,另一个离线,直到它加入。对于这些节点,如果一个或两个连接、离开或移除,则对BlT编号没有影响。另外,如何确保这两个节点始终位于BaselineHistory中。如果是这样的话,你能指出正确的方向吗


    或者可能是如何恢复/更新基线历史记录问题,以便不出现此问题。

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


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

    您确定已高亮显示此序列中的每个基线更改吗?@alamar:是的,您是正确的,我在节点A和节点B中都有相同的代码。在启动期间,ignite.cluster().state(ClusterState.ACTIVE)->设置基线,并且由于autoAdjust有1分钟的超时,所以它也在设置基线。同样的问题,如何从基线历史问题中恢复?谢谢你,阿拉玛。