Kubernetes部署的3节点Gridgain集群修改状态卡住无法激活求助
根因定位
- 手动中断
./control.sh --set-state INACTIVE命令,导致集群状态变更流程被截断,全局状态锁未正常释放,同时部分节点的缓存组件初始化/销毁流程中断,处于不可用的中间状态。 - 节点抛出
GridDhtAffinityAssignmentRequest找不到对应handler的报错,说明异常节点的缓存IO处理链路已经崩溃,无法参与集群拓扑同步,进一步阻塞了状态变更流程。
临时恢复操作(无数据丢失风险)
- 首先停止所有业务写入流量,避免额外数据写入导致集群状态进一步混乱
- 逐台重启3个Gridgain节点:
- 优先重启日志中抛出
GridDhtAffinityAssignmentRequest相关报错的节点 - 每个节点启动完成后等待2分钟,确认节点日志无异常、成功加入集群后再重启下一个节点
- 优先重启日志中抛出
- 所有节点重启完成后,先执行
./control.sh --state查看当前集群状态 - 如果状态显示为INACTIVE,再执行
./control.sh --set-state ACTIVE激活集群即可
注意:如果全量重启节点后仍提示有状态变更操作在进行,可执行
./control.sh --set-state ACTIVE --force强制触发状态变更,该操作不会丢失持久化存储的数据。
后续规避方案
- 调整集群状态前确保没有大量缓存写入/删除操作在执行,避免状态变更超时
- 执行
--set-state命令前可先执行./control.sh --baseline确认基线节点全部在线 - 状态变更命令长时间无响应时不要直接CTRL+C中断,可先开新窗口查看集群节点日志定位卡住原因,确认所有节点无IO/CPU过载问题后再做后续操作
内容的提问来源于stack exchange,提问作者Nowa Concordia
相关产品推荐
相关产品推荐

