CnosDB 2.4.0集群Data Node状态无法从Unreachable恢复至healthy
CNOSDB 2.4.0 节点重启后无法恢复健康状态的排查与解决
问题场景
使用版本为CNOSDB 2.4.0(修订版本2fd7e8d02516beb696472d9bee115d948c224d1c)的集群,运行3天2小时后出现如下异常:
- 执行
show datanode node查看节点状态; - 杀死某data node进程后,等待数分钟再次查询,该节点状态变为
Unreachable; - 重启被杀死的data node后,节点无法自动恢复为
healthy状态,持续保持Unreachable。
相关元数据日志:
2024-02-01T10:11:58.526608000Z INFO meta::store::storage: METADATA WRITE(ver: 1046): /cluster_xxx/data_nodes_metrics/2001 :{"id":2001,"disk_free":23970435072,"disk_total":243107192832,"time":1706782318,"status":"Unreachable"}
排查与解决步骤
1. 验证节点间网络连通性
- 在重启的data node上,测试与meta node的IP及默认端口(6001)的连通性,可使用
telnet <meta-node-ip> 6001或nc -zv <meta-node-ip> 6001命令; - 检查集群节点间的防火墙、安全组规则,确保data node与meta node的通信端口(如6001、8902)未被拦截;
- 查看data node启动日志(默认路径为
/var/log/cnosdb/),确认是否存在连接meta node失败的报错。
2. 手动修正节点状态
在meta node节点上执行以下命令,强制设置目标节点为健康状态:
alter datanode node 2001 set status healthy;
执行后等待1-2分钟,再次执行show datanode node确认状态是否恢复。
3. 检查心跳机制与系统资源
- 查看data node配置文件
cnosdb.toml中的heartbeat_interval参数,确认心跳间隔设置在合理范围(建议10-30秒); - 使用
top、free -h命令检查data node所在服务器的CPU、内存使用率,若资源耗尽会导致心跳无法正常发送,需清理占用资源的进程或扩容节点。
4. 重启meta node服务
若上述操作无效,可尝试重启meta node服务(多meta节点集群需逐个重启,避免集群不可用):
systemctl restart cnosdb-meta
重启后等待集群同步完成,再次查询节点状态。
5. 版本补丁升级
该修订版本可能存在节点状态恢复的已知问题,建议升级至CNOSDB 2.4.x系列的最新补丁版本,或查阅官方版本日志确认是否有相关修复内容。
内容的提问来源于stack exchange,提问作者ilila
相关产品推荐
相关产品推荐

