cluster-config-file 参数用于指定 Redis 集群节点自动保存集群状态信息的文件名,包括节点拓扑、槽位分配和故障转移状态,该文件由 Redis 内部维护且不可人工编辑。
先说结论:cluster-config-file 是 Redis Cluster 节点持久化集群元数据的核心文件,每个节点必须配置独立文件名且禁止手动修改。
- 适合:开启 cluster-enabled yes 模式的 Redis 实例配置场景。
- 先准备:为集群中每个节点规划唯一的配置文件路径和名称。
- 验收:重启节点后确认文件自动生成且集群状态正常。
命令速用版
在 redis.conf 配置文件中添加以下参数即可启用集群状态持久化,无需执行额外命令生成该文件。
cluster-enabled yes cluster-config-file nodes-6379.conf cluster-node-timeout 5000
注意不同端口节点需使用不同文件名,例如 7000 端口使用 nodes-7000.conf。
为什么会这样
cluster-config-file 本质是集群节点的“记忆文件”,用于在重启后恢复集群拓扑和槽位映射关系。
Redis 集群运行时,节点间的握手、槽位迁移、主从切换等状态变更会实时写入该文件。如果缺少此文件或内容损坏,节点重启后将无法识别原有集群身份,可能导致集群分裂或数据不可用。
分步处理
配置 cluster-config-file 需确保每个节点文件独立且路径可写。
- 编辑配置文件:在每个节点的 redis.conf 中设置 cluster-enabled yes 和 cluster-config-file 参数。
- 区分文件名:确保不同节点使用不同文件名,如 nodes-7000.conf、nodes-7001.conf,避免状态覆盖。
- 设置目录权限:确认 Redis 进程对配置文件所在目录有读写权限,防止状态无法持久化。
- 启动节点:启动 Redis 实例后,系统会自动创建该文件,无需手动新建。
怎么验证是否生效
通过检查文件生成情况和集群状态命令确认配置生效。
- 检查文件:查看配置路径下是否自动生成 nodes-*.conf 文件,且文件大小不为 0。
- 查看集群:执行 redis-cli `--cluster` info 127.0.0.1:7000 确认所有节点状态在线。
- 重启测试:重启节点后观察日志,确认无集群状态丢失报错。
常见坑
- 禁止手动编辑:该文件由 Redis 内部维护,人工修改会导致集群状态不一致或节点无法加入集群。
- 文件名的唯一性:多个节点共用同一个配置文件名会导致状态冲突,必须每个节点独立配置。
- 路径权限问题:配置文件所在目录若无写权限,节点启动后会报错无法写入集群状态。
常见问题
cluster-config-file 文件可以手动修改吗?
不可以,该文件由 Redis 集群内部自动维护,手动编辑会导致集群状态混乱。
所有节点的 cluster-config-file 文件名必须一样吗?
不一样,集群中每个节点必须使用不同的配置文件名,防止状态覆盖。
删除 cluster-config-file 文件会有什么后果?
节点重启后会丢失原有集群元数据,可能被视为新节点导致集群分裂或槽位丢失。
参考来源
- 51CTO 博客 - redis cluster 常用命令 redis cluster-config-file_jordana 的技术博客
- Redis Cluster 配置文件和集群状态详解
- Redis 运维实战 第 02 期:Redis Cluster
- redis 集群的配置和使用
- Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵