Redis 集群配置文件里的 cluster-config-file 参数是做什么的?

文章导读
cluster-config-file 参数用于指定 Redis 集群节点自动保存集群状态信息的文件名,包括节点拓扑、槽位分配和故障转移状态,该文件由 Redis 内部维护且不可人工编辑。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

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 集群运行时,节点间的握手、槽位迁移、主从切换等状态变更会实时写入该文件。如果缺少此文件或内容损坏,节点重启后将无法识别原有集群身份,可能导致集群分裂或数据不可用。

Redis 集群配置文件里的 cluster-config-file 参数是做什么的?

分步处理

配置 cluster-config-file 需确保每个节点文件独立且路径可写。

  1. 编辑配置文件:在每个节点的 redis.conf 中设置 cluster-enabled yes 和 cluster-config-file 参数。
  2. 区分文件名:确保不同节点使用不同文件名,如 nodes-7000.conf、nodes-7001.conf,避免状态覆盖。
  3. 设置目录权限:确认 Redis 进程对配置文件所在目录有读写权限,防止状态无法持久化。
  4. 启动节点:启动 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 原理说的头头是道,这些配置不懂就是纸上谈兵