nodes.conf 存了什么
cluster-config-file 指定节点保存集群拓扑状态的文件名,默认 nodes.conf,位置在 dir 指定的目录下。文件内容由节点自动维护,包含本节点与其他节点的 ID、地址、角色、槽区间以及配置纪元,节点重启时靠它恢复集群身份。官方明确要求不要人工编辑,手改后文件内容与实际状态冲突,容易出现身份混乱。
基本信息
| 默认文件名 | nodes.conf |
|---|---|
| 存放位置 | dir 参数指向的数据目录 |
| 文件内容 | 节点 ID、地址、角色、槽区间、配置纪元 |
| 维护方式 | 由节点自动重写,禁止手工编辑 |
| 部署建议 | 同一机器多实例按端口区分文件名 |
典型使用场景
- 同一台机器上跑多个集群实例,必须为每个实例指定不同的文件名
- 集群备份时把它与数据文件一起收走,否则恢复后拓扑对不上
- 节点拓扑信息损坏或丢失后,从备份中还原以恢复原有身份
- 排查节点重启后 ID 变化、槽信息丢失一类问题
- 容器化部署时确认它落在持久化卷而不是临时层
配置与查看
配置与查看
cluster-config-file nodes-7000.conf # redis.conf 中的配置写法
cluster-enabled yes # 集群模式必须显式开启
ls -l /data/redis-7000/nodes-7000.conf # 确认文件位置与大小
head -3 /data/redis-7000/nodes-7000.conf # 只读查看,禁止编辑
redis-cli -p 7000 CLUSTER NODES # 与文件内容对照,排查不一致文件内容与风险
| 内容 | 含义 | 丢失或损坏的后果 |
|---|---|---|
| 节点 ID | 本节点在集群中的唯一身份 | 重启后以新 ID 加入,历史身份丢失 |
| 槽区间 | 本节点负责的槽范围 | 槽归属混乱,需要人工重新分配 |
| 其他节点记录 | 已知的集群成员列表 | 需要重新握手发现,收敛变慢 |
| 配置纪元 | 配置版本号,用于冲突裁决 | 纪元回退可能引发拓扑震荡 |
节点重启会读取该文件恢复拓扑;若文件丢失,节点会以新身份加入集群,旧记录还会残留在其他节点的列表里,清理起来比想象中麻烦。
恢复集群时,数据文件与 nodes.conf 必须成对还原,只还原其中之一会得到数据在但槽不对、或槽对但数据空的现场。