Redis Cluster集群搭建:三主三从实战配置与常见报错处理

Redis Cluster 集群搭建的核心是让多个 Redis 节点通过分片和主从复制组成一个可横向扩展的高可用集群。
本文以最常见的三主三从架构为例,在三台或六台 Linux 服务器上完成部署,适合零基础用户按步骤操作。

搭建前的节点规划与环境确认

开始前先确认目标:至少 3 个主节点,每个主节点配 1 个从节点,共 6 个 Redis 实例。
如果只有 3 台服务器,可以在每台机器上启动 2 个实例,端口分别用 7001 和 7002。

系统层面需要确认三点。

  • Redis 版本建议 5.0 以上,安装命令以系统包管理器或源码编译为准,本文不绑定具体版本号。
  • 每个节点开放两个端口:客户端端口(如 7001)和集群总线端口(客户端端口 + 10000,即 17001)。防火墙和安全组都要放行。
  • 关闭或调整可能影响集群通信的保护模式,并确保各节点时间同步。

查看 Redis 是否可用:

redis-server --version
redis-cli --version

如果命令不存在,先完成 Redis 安装再继续。

修改每个节点的 redis.conf

Redis Cluster 搭建失败,多数是配置文件没改对。
以下配置项在每个实例的 redis.conf 中都要修改,不能只改一台。

port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
appendonly yes
daemonize yes
protected-mode no
bind 0.0.0.0

几个关键点说明。

  • cluster-enabled yes 是开启集群模式的总开关,不写这一项后面所有集群命令都会失败。
  • cluster-config-file 由 Redis 自动维护,不要手动编辑,每个实例的文件名建议带端口号区分。
  • cluster-node-timeout 15000 表示节点失联超过 15 秒才判定故障,内网环境可保持默认或适当调整。
  • protected-mode no 和 bind 0.0.0.0 用于允许跨机通信,生产环境应配合防火墙限制来源 IP,不要直接暴露公网。

改完后按实例逐个启动:

redis-server /path/to/7001/redis.conf
redis-server /path/to/7002/redis.conf

启动后用 ps -ef | grep redis 确认每个端口对应的进程都在。

用 redis-cli 创建三主三从集群

所有节点启动后,用一条命令完成槽位分配和主从关系建立。
假设六台机器 IP 为 10.0.0.11 到 10.0.0.16,端口均为 7001。

redis-cli --cluster create \
10.0.0.11:7001 10.0.0.12:7001 10.0.0.13:7001 \
10.0.0.14:7001 10.0.0.15:7001 10.0.0.16:7001 \
--cluster-replicas 1

--cluster-replicas 1 表示每个主节点自动分配一个从节点。
命令执行后会列出主从分配方案,输入 yes 确认。

如果只有三台机器、每台两个实例,把地址写成 10.0.0.11:7001 10.0.0.11:7002 ... 的形式即可。

看到 All 16384 slots covered 就说明槽位分配完成。

验证集群状态是否正常

创建完成后不要直接上业务,先做三项检查。

查看集群整体信息:

redis-cli -c -p 7001 cluster info

重点看 cluster_state:ok 和 cluster_slots_assigned:16384。
如果状态是 fail 或槽位不是 16384,说明集群没有真正就绪。

查看节点列表和主从关系:

redis-cli -c -p 7001 cluster nodes

输出中每个主节点后面应跟一个 slave 节点,且槽位区间连续覆盖 0 到 16383。

做一次读写测试:

redis-cli -c -p 7001 set testkey hello
redis-cli -c -p 7001 get testkey

注意集群模式要用 -c 参数,否则遇到槽位不在当前节点时会报 MOVED 错误。
能正常写入和读出,说明集群基本可用。

搭建过程中容易踩的坑

端口没放行导致节点无法握手。 集群总线端口是客户端端口加 10000,只开 7001 不开 17001,节点之间会一直 handshake 失败。

配置文件只改了一部分节点。 六个实例必须全部开启 cluster-enabled yes,漏掉任何一个都会在创建时提示节点未启用集群。

已有数据未清理就建集群。 如果节点里已有数据,创建集群前先执行 flushall 并删除旧的 nodes-*.conf,否则可能残留旧集群信息。

用单机思维连接集群。 业务代码连接 Redis Cluster 需要使用支持集群的客户端,普通单点客户端无法自动处理槽位跳转。

节点时间不同步。 时间偏差过大会影响故障判定,建议开启 NTP 同步。

常见问题排查

创建集群时提示 Node is not empty。 说明该节点存在数据或旧集群配置,清理数据并删除 nodes-*.conf 后重启再试。

cluster_state:fail 且槽位不足。 通常是部分主节点未成功分配槽位,可用 redis-cli --cluster fix 尝试修复,或检查是否有节点掉线。

业务连接报 CLUSTERDOWN。 说明集群处于不可用状态,先用 cluster info 和 cluster nodes 确认是否有多数主节点失联,再检查网络和防火墙。

从节点没有同步数据。 用 cluster nodes 确认主从关系是否建立,若显示 disconnected,检查主节点总线端口是否可达。

Redis Cluster 集群搭建的关键不在于命令多复杂,而在于每个节点的配置是否一致、端口是否互通、创建后是否验证到 cluster_state:ok。
按本文顺序执行并逐项检查,三主三从集群通常可以一次搭建成功。

分享到:
上一篇
云服务器成本优化:从账单定位到配置瘦身的实操流程
下一篇
Kafka消息队列集群部署:从单机到三节点的实操教程
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意