GridGain服务器分区丢失

Nuw*_*era 2 gridgain ignite

我们有 3 个节点的 Gridgain 服务器,并且在 GCP Kubernetes 引擎中部署了 3 个客户端节点。集群已启用本机持久性。也<property name="shutdownPolicy" value="GRACEFUL"/>作为关闭政策。每个缓存都有一个备份。集群自动重启后分区丢失。需要通过执行控制命令来重置这些分区。

你能为此提供适当的解决方案吗?我们有大约 60GB 的持久数据。

Sta*_*nov 6

<property name="shutdownPolicy" value="GRACEFUL"/>如果满足某些条件,应该可以防止分区丢失:

  1. 缓存必须PARTITIONED带有backups > 0REPLICATED。检查你的配置。Ignite 中的默认缓存配置是PARTITIONEDwith backups = 0(由于历史原因),因此默认值不起作用。

  2. 必须有多个基线节点(只有基线节点存储数据!)。这是文档

  3. 您必须以优雅的方式停止节点。这有点棘手,因为你并不总是控制它。

    • 如果您使用 a 停止kill进程,请确保它使用SIGTERM而不是SIGKILL因为后者总是立即终止该进程
    • 如果你停止Ignite.close()这样做应该可以
    • 如果你停止使用 JavaSystem.exit()它会工作,但如果你使用System.halt()- 它不会(因为halt()不优雅)
    • 如果您使用 Kubernetes 等编排器,则需要确保它们能够正常停止节点。例如,在 Kubernetes 中,您通常必须设置terminationGracePeriodSeconds一个较高的值,以便 Kubernetes 等待节点完成正常关闭而不是杀死它们。
    • 如果您使用自定义启动脚本,则需要确保它们将信号转发到 Ignite 进程。

要对此进行调试,请检查上述几点。我通常会首先查看服务器日志(带有IGNITE_QUIET=false)以查看是否存在“调用关闭挂钩”消息。如果它不存在,那么您的关闭挂钩不会被调用,问题是第 3 点中的问题之一。否则,应该有其他日志消息来解释这种情况。