ignite - GridGain Server 分区丢失

标签 ignite gridgain

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

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

最佳答案

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

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

  2. 基线节点必须不止一个(只有基线节点存储数据!)。这是 doc .

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

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

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

关于ignite - GridGain Server 分区丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69360787/

相关文章:

java - Apache Ignite 中单个分区上的 ScanQuery 是单线程还是多线程?

ignite - Apache Ignite 的混合平台集群限制和数据流

java - 构建或购买计算网格平台更好?

java - 点燃异常 : Query execution failed ScanQuery

java - 执行 CronJobSchedulingExample 时出现以下错误

centos - 任何 apache 点燃 deb/rpm 镜像?

java - 使用 java 通过 Apache Ignite 访问 IGFS 文件

ignite - Apache 点燃 org.apache.ignite.IgniteCheckedException : Invalid handshake message

hadoop - 如何在GridGain内存加速器中获取Hadoop内置计数器?

java - Apache 点燃: caching ClusterGroup