You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Ignite 2.13.0集群重启后崩溃及分区丢失问题求助

Apache Ignite 2.13.0集群故障排查与配置调整咨询

集群基础信息

  • Ignite版本:2.13.0
  • JDK环境:OpenJDK 64-Bit Server VM Zulu11.52+13-CA (build 11.0.13+8-LTS, mixed mode)
  • 集群架构:3个基线服务器节点,启用持久化,每周操作系统自动更新后逐一重启

故障发生时序

  1. 3月28日19:03,节点2完成重启
  2. 19:13,节点2与节点3的Ignite服务同时崩溃,核心报错:

    [19:13:17,302][SEVERE][sys-stripe-5-#6][] JVM will be halted immediately due to the failure: [failureCtx=FailureContext [type=SYSTEM_WORKER_TERMINATION, err=java.lang.IllegalStateException: Failed to find security context for subject with given ID : 74f979dd-342d-4055-bda4-58535b8ab282]]

  3. 故障后仅1个节点保持活跃
  4. 次日节点3自动重启后成功加入集群,未再崩溃

更新:集群不可用与分区丢失问题

故障导致剩余节点及重启故障节点后的集群完全不可用,应用侧报错:

Caused by: org.apache.ignite.IgniteException: Failed to execute the cache operation (all partition owners have left the grid, partition data has been lost) [cacheName=datastructures_ATOMIC_PARTITIONED_1@default-ds-group, partition=299, key=GridCacheQueueItemKey [queueId=d6743312681-6ddd800e-39e6-473f-915a-39c576ef32be, queueName=cluster_processing_6-queue, idx=1322]]

当前仅能通过全量重启所有服务器和客户端恢复集群,无法对该缓存执行重置丢失分区操作,需咨询:

  • 能否将datastructures_ATOMIC_PARTITIONED_1这类系统缓存配置为2个备份(默认1个),避免双节点故障引发的分区丢失?
  • 如何从根源避免此类违背高可用设计的故障?

故障原因解析

  1. 安全上下文同步bug触发节点崩溃
    报错中的Failed to find security context for subject with given ID是Ignite 2.13.0版本的已知bug:节点重启重新加入集群后,系统线程处理跨节点安全相关操作时,会出现上下文引用丢失的情况,触发SYSTEM_WORKER_TERMINATION级别故障,直接终止JVM。

  2. 系统缓存默认备份数不足引发分区丢失
    datastructures_ATOMIC_PARTITIONED_1是Ignite存储分布式数据结构(如队列)的内部系统缓存,默认备份数为1。当2个节点同时崩溃时,部分分区的主、备节点均离线,导致分区丢失;由于系统缓存不支持常规的resetLostPartitions恢复操作,最终造成集群不可用。

解决方案建议

  1. 升级Ignite版本
    该安全上下文bug在Ignite 2.14.0及后续版本已修复,建议升级至稳定版本(如2.15.0),从根源解决节点崩溃问题。

  2. 调整系统缓存备份数
    可通过配置修改系统缓存的备份数为2,需确保集群节点数(3个)满足备份数+1 ≤ 节点数的要求,配置示例:

    <bean class="org.apache.ignite.configuration.IgniteConfiguration">
        <!-- 其他集群配置 -->
        <property name="systemCacheConfiguration">
            <list>
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="datastructures_ATOMIC_PARTITIONED_1"/>
                    <property name="backups" value="2"/>
                    <property name="cacheMode" value="PARTITIONED"/>
                    <property name="atomicityMode" value="ATOMIC"/>
                </bean>
                <!-- 按需添加其他系统缓存配置 -->
            </list>
        </property>
    </bean>
    

    注:修改系统缓存配置需全量重启集群后生效。

  3. 优化节点重启流程
    延长节点重启间隔至30分钟以上,确保节点完全加入集群、集群状态稳定后,再重启下一个节点,避免短时间内多节点波动。

  4. 调整故障处理策略
    配置故障处理策略,避免单个系统线程异常直接终止JVM,示例:

    <bean class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="failureHandler">
            <bean class="org.apache.ignite.failure.StopNodeFailureHandler">
                <property name="failOnIgniteWorkerBlocked" value="false"/>
            </bean>
        </property>
    </bean>
    

内容的提问来源于stack exchange,提问作者Sven Borkert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:02:48