Redis集群部署,多节点缓存高可用方案

Redis 集群部署的核心目标是把缓存数据分散到多个主节点,并在主节点故障时由从节点自动接管,从而避免单点缓存故障导致业务雪崩。
下面按零基础也能照做的顺序,讲清三主三从集群的准备、配置、启动和验证过程。

集群部署前先确认这些条件

Redis 集群至少需要 3 个主节点,推荐 3 主 3 从,共 6 个实例,分别部署在 3 台或更多服务器上。
生产环境建议每台服务器至少 2 核 4G,并且关闭透明大页、设置合理的 vm.overcommit_memory

需要准备的内容包括:

  • 6 个 Redis 实例端口,例如 70017006
  • 每个实例独立的数据目录和配置文件
  • 服务器之间内网互通,集群总线端口为业务端口加 10000,例如 7001 对应 17001
  • Redis 版本建议使用 5.0 以上,具体以官方文档和实际软件源为准

如果使用宝塔面板,可以在软件商店安装 Redis,但多实例集群更建议用命令行编译或包管理器安装,方便控制配置文件。

创建实例目录和配置文件

假设 6 个实例都放在 /data/redis-cluster 下,先创建目录:

mkdir -p /data/redis-cluster/{7001,7002,7003,7004,7005,7006}

7001 为例,创建 /data/redis-cluster/7001/redis.conf,关键配置如下:

port 7001
bind 0.0.0.0
protected-mode no
daemonize yes
pidfile /data/redis-cluster/7001/redis.pid
logfile /data/redis-cluster/7001/redis.log
dir /data/redis-cluster/7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
appendonly yes

其余 5 个实例只需把端口、pidfile、logfile、dir、cluster-config-file 中的 7001 替换为对应端口。
注意 cluster-config-file 不能重复,每个实例必须独立。

启动实例并组建集群

逐个启动 6 个 Redis 实例:

for port in 7001 7002 7003 7004 7005 7006; do
  redis-server /data/redis-cluster/$port/redis.conf
done

确认进程存在:

ps -ef | grep redis-server

然后使用 redis-cli --cluster create 组建集群。
如果是三台服务器,每台两个实例,命令类似:

redis-cli --cluster create \
  192.168.1.10:7001 192.168.1.10:7002 \
  192.168.1.11:7003 192.168.1.11:7004 \
  192.168.1.12:7005 192.168.1.12:7006 \
  --cluster-replicas 1

执行后会提示分配主从关系,输入 yes 确认。
看到 All 16384 slots covered 说明槽位分配完成,集群创建成功。

常见报错和避坑说明

部署过程中最容易卡在几个地方。

  • 节点无法通信:检查防火墙是否放行业务端口和对应总线端口,云服务器还要检查安全组。
  • cluster-config-file 重复:每个实例必须使用不同文件名,否则启动后节点信息会互相覆盖。
  • 槽位未完全覆盖:执行 redis-cli --cluster check 192.168.1.10:7001 查看哪些槽位未分配,必要时用 --cluster fix 修复。
  • 从节点无法自动切换:确认 cluster-node-timeout 不要设置过小,网络抖动频繁时容易误判。
  • 密码问题:如果设置了 requirepassmasterauth,所有节点必须一致,否则主从同步会失败。

另外,Redis 集群模式下 mgetmset 等多键命令要求所有 key 落在同一槽位,业务代码需要做 key 哈希标签处理,例如 user:{1001}:name

验证高可用是否真正生效

集群创建完成后,先用集群模式连接:

redis-cli -c -h 192.168.1.10 -p 7001

执行 cluster info 查看状态,cluster_state:ok 表示集群正常。
再执行 cluster nodes 可以看到主从角色和槽位分布。

写入一个测试 key:

set testkey hello

如果返回 OK,说明读写正常。
接着可以手动停掉一个主节点,观察对应从节点是否在 cluster-node-timeout 后接管。
切换完成后再次执行 get testkey,如果仍能读到值,说明缓存高可用方案基本生效。
生产环境建议配合监控工具持续观察节点状态和延迟。

几个常见疑问

集群最少几个节点?
Redis 集群至少需要 3 个主节点,推荐 3 主 3 从共 6 个实例,才能在主节点故障时自动完成故障转移。

能不能只用 3 个主节点不加从节点?
可以创建,但主节点故障后没有从节点接管,缓存高可用无法保证,生产环境不建议这样部署。

集群模式下客户端需要改代码吗?
需要。
客户端要支持集群模式,并且多键操作要注意 key 落在同一槽位,很多语言的标准客户端已经内置支持。

部署完成后建议把配置文件、启动命令和节点列表整理成文档,后续扩容或迁移时可以直接复用。
遇到异常先看日志和 cluster info 输出,再按报错方向逐项排查,通常比盲目重启更有效。

分享到:
上一篇
MySQL慢查询监控平台,可视化SQL性能
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意