Redis集群运维实战:从部署到排错的全流程指南

Redis集群在保证高可用和数据分片方面效果显著,但日常运维中很多新手容易在节点管理、故障转移和扩容缩容上踩坑。
本文从零开始,用可重现的命令和配置告诉你每一步该做什么、为什么这么做以及出错了怎么解决。

运维前必须准备的三样东西

  1. 操作系统与Redis版本:建议使用Linux(CentOS 7+ 或 Ubuntu 20.04+),Redis 6.x 或 7.x 均支持集群模式。查看版本命令:
   redis-server --version
  1. 集群基础概念:了解至少三个节点(每个节点再配一个从节点)才能形成可用集群。每个节点需要一个独立的端口(例如 7000~7005)。
  2. 必要的 Ruby 运行环境(仅旧版 redis-trib 需要):新版 redis-cli --cluster 已内置,无需额外安装。

三步完成集群状态检查与健康评估

1. 查看集群节点信息

登录任意集群节点,运行:

redis-cli -h 127.0.0.1 -p 7000 cluster nodes

返回结果中重点看每个节点的 role(master/slave)、status(connected/fail)、slots 分配范围。
如果发现某个节点标记为 fail,需要立即排查。

2. 检查槽位分配是否完整

redis-cli -h 127.0.0.1 -p 7000 cluster slots

正常返回会显示所有 16384 个哈希槽均被分配到可用的 master 节点。
如果出现 (error) CLUSTERDOWN The cluster is down,说明主节点丢失过多或网络分区。

3. 定期查看慢查询与连接数

redis-cli -h 127.0.0.1 -p 7000 slowlog get 10
redis-cli -h 127.0.0.1 -p 7000 info clients

慢查询太多说明业务侧需要优化;
连接数超限则要调整 maxclients 或排查长连接泄漏。

集群节点扩容:加一个主节点并迁移槽位

假设新节点启动在 192.168.1.10:7006(master)和 7007(slave),操作分两步:

  1. 加入集群
   redis-cli -h 192.168.1.10 -p 7000 cluster meet 192.168.1.10 7006
  1. 分配槽位(把其他master的一部分槽位挪过来):
   redis-cli -h 192.168.1.10 -p 7000 cluster reshard --cluster-from <源节点ID> --cluster-to <新节点ID> --cluster-slots 4096 --cluster-yes

--cluster-slots 数量根据集群总槽数和机器负载调整,建议分批迁移避免瞬时流量爆发。

避坑指南:四个高频报错及解决

报错一:Node is not empty

新节点上如果已有数据(比如残留的RDB或AOF),再加入集群会失败。
解决方法:清空数据文件(flushall、删除dump.rdb),然后重启。

报错二:Cluster state is down

通常是因为主节点挂掉超过半数。
先用 cluster nodes 确认哪些主节点失效,如果失效节点能重启,直接启动后它会自动重新加入;
如果不能恢复,需要在集群中强制删除该节点:

redis-cli -h 正常节点IP -p 端口 cluster forget <失效节点ID>

然后重新分配该节点原本负责的槽位。

报错三:MIGRATE socket error

迁移槽位时网络抖动或旧数据过大。
可以增大 cluster-node-timeout(默认15000ms),或者先手工将源节点的一部分 key 迁移走(MIGRATE 命令)避免大key阻塞。

报错四:SLAVE 复制滞后严重

在主从延迟超过 min-slaves-max-lag 时,会触发写入拒绝。
首先检查网络带宽和主库慢查询,其次可以考虑在从节点上开启 slave-serve-stale-data yes 允许提供旧数据(不推荐生产环境)。

效果验证:如何确认运维操作成功

场景一:新节点加入后
运行 cluster nodes 看到新节点 status 为 connected,并且 cluster slots 中槽位分布更新。

场景二:故障转移后
手工模拟主节点宕机:

redis-cli -h 192.168.1.10 -p 7000 debug segfault

稍等几秒后,其他节点会自动选举从节点升级为主节点。
检查 cluster nodes,原主节点标记为 fail,新的主节点出现。

场景三:缩容后
先迁移槽位到其他master,再用 cluster forget 移除节点,最后手动停止进程。验证方法:同样用 cluster nodes 确认节点消失,槽位分布正确。

如果你正在处理 Redis 集群运维,建议先按本文步骤完整执行一遍,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
掌握这些操作后,日常维护和紧急排障都会从容很多。

分享到:
上一篇
零基础搭建Prometheus告警:从规则配置到钉钉通知
下一篇
零基础也能做的MySQL数据库优化:配置、索引与慢查询排查
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意