Redis集群至少需要3台主服务器才能完成基础搭建,生产环境建议采用6台(3主3从)起步,具体数量取决于数据量、并发规模和可用性要求。
3台是底线,6台是标准起步
Redis Cluster的架构设计里有一个硬性门槛:投票机制要求超过半数的Master节点参与故障选举,这个机制直接决定了3这个数字的来历只有3个主节点时,挂掉1个还有2个可以投票,仍然能选出替代节点;如果只有2个节点,挂掉1个就只剩1票,既凑不够法定人数,集群也直接失去容错能力,2个主节点的Redis集群在官方定义里是无法成立的。
3个主节点解决的是“能不能用”的问题,但在实际业务中,3主0从的配置几乎不具备生产价值,因为一旦某个主节点宕机,它负责的哈希槽(Hash Slot)连同数据会全部离线,整个集群进入不可用状态,要让集群真正扛得住故障,每个主节点至少要配一个从节点,这才有了6台(3主3从)的生产环境推荐配置。
从数据存储的容量角度来说,3个主节点的总内存约为单机内存乘以3,但Redis的内存还受制于持久化策略、内存碎片率和maxmemory-policy的配置,实际使用中,单节点建议控制在物理内存的50%-60%以下(据Redis官方运维指南及行业实践),例如物理机配64GB内存,单节点建议预留32GB左右给Redis数据,留出AOF重写和BGSAVE的内存余量,这样算下来,3主架构的总可用内存大约在96GB左右,如果你的业务数据超过这个体量,就需要增加更多主节点来横向扩展。
主节点数量的判定标准
判定集群需要多少个主节点,不是拍脑袋决定的,可以按照下面几个维度来评估视角。
数据量维度
这是最直接的硬指标,使用INFO memory命令观察各节点的used_memory,当单节点内存使用率持续超过建议阈值(约60%-70%),并且MEMORY DOCTOR报告频繁提示内存碎片率超过1.5时,就该考虑扩容主节点了,粗略估算公式为:主节点数 = (预计数据总量 + 缓冲区余量)÷ 单节点建议内存,例如数据总量约200GB,单节点建议内存为32GB,所需主节点数大约为7个(预留写入放大和缓冲区空间),再按主从1:1的比例配7个从节点,总机器数为14台。
并发写入压力维度
Redis是单线程模型,单个节点的并发处理能力存在上限,使用redis-benchmark或INFO stats中的instantaneous_ops_per_sec字段可以实时观察节点的QPS表现,当单节点QPS持续逼近或超过CPU核数所能承载的峰值(一般单节点在复杂命令下只能支撑数万级QPS),就说明需要分摊写入压力,横向扩展主节点可以将写入流量分散到更多节点上,但这里有一个常见的认知偏差:增加从节点不解决写入瓶颈,因为它本质上是数据备份而非写流量分摊。
业务容灾维度
主节点数量还和你的可用性目标直接绑定,如果业务允许分钟级的中断,3主3从可以满足大部分场景;如果业务要求RPO接近零、RTO秒级,则需要考虑跨机架、跨可用区部署,此时主节点数量需要乘以可用区的倍数,例如在一个可用区内部署3主3从,那么跨两个可用区的容灾方案就需要至少6主6从,确保某个可用区整体故障时,另一个可用区的节点仍能独立组成满足投票法定数的集群。
从节点到底配几个
主从比例不是固定的1:1,需要根据读多写少还是写多读少来调整。
如果你的业务以读为主,例如内容缓存、商品详情页,读请求与写请求比例可能达到10比1甚至更高,此时可以为单个主节点配置2到3个从节点,分摊读压力,操作上可以通过CLUSTER REPLICATE命令动态调整从节点的归属:
CLUSTER REPLICATE <master-node-id>
如果你的业务以写为主,比如秒杀扣减、订单状态流转,从节点的主要职责就只是故障转移和持久化,此时1:1的配比已经足够,盲目增加从节点反而会带来主从复制的带宽开销。
还有一点容易被忽略:从节点也是参与故障转移选举的投票者,集群内Master和Replica都有投票权,Replica节点数量多意味着选举的法定人数更容易满足,故障转移的稳定性也更高,即使你对读能力没有要求,每个主节点至少配一个从节点也是行业内被广泛接受的最低安全配置。
做主从规划时容易踩的坑
坑一:主从节点混部在同一台物理机上
在用虚拟机部署Redis集群时,如果不做反亲和性约束,两个主从节点可能被调度到同一台物理宿主机,这台宿主机一旦宕机,主节点和从节点同时失联,相当于白做了高可用,解决路径是,在云服务器选择阶段就做好规划,使用反亲和性部署或者至少确保主从节点分布在不同机架上。
坑二:忽视集群总线端口
Redis Cluster除了提供服务端口(默认6379),还需要一个集群总线端口(默认16379,即服务端口加10000)用于节点间通信,云厂商安全组默认只放通常见端口,漏掉16379会导致集群心跳异常,表现为反复出现Cluster state changed日志,但业务实际上已经没有故障转移,排查思路:先TELNET测试集群总线端口是否放通,再确认所有节点公网通信链路正常。
坑三:盲目追求大集群
集群主节点数量不是越多越好,每个主节点都需要维护集群状态和Gossip通信,节点数量超过一定规模后,网络开销和集群状态同步的复杂度会显著上升,根据Redis官方关于集群规范(Cluster Spec)的描述及社区实践,节点总量在1000个以内时状态同步可以保持稳定,但实际生产中,大多数业务使用30到50个以内节点已经足够。
坑四:低估带宽瓶颈
跨可用区或跨地域部署Redis集群时,主从同步的带宽消耗远超你的想象,尤其在使用AOF持久化或启用了较慢的同步策略时,全量重同步对带宽的消耗更为显著,全量同步期间,主节点需要生成RDB快照并传输给从节点,如果数据量在几十GB级别,在公网带宽有限的情况下,会拖垮同机房内其他业务的网络,建议在规划阶段就把主从之间的同步带宽纳入预算,必要时使用专线连接,而不是走公网。
主节点扩容的实操路径
当数据增长或并发压力触发扩容条件时,可以使用官方提供的redis-cli --cluster命令平滑扩缩容,先把新节点加入集群,操作路径如下:
redis-cli --cluster add-node <new-host:port> <existing-host:port>
随后需要手动平衡哈希槽,否则新节点处于空载状态,集群的数据分布依然不均:
redis-cli --cluster rebalance <existing-host:port>
均衡完成后,使用CLUSTER SLOTS确认各节点负责的槽位范围,整个过程可以做到在线完成,对已运行的业务几乎无感知,但要注意,槽位迁移期间会有少量的键迁移开销,业务高峰期建议避开,或者将migrate-timeout适当调大。
另外要提一嘴日常巡检的命令组合,云上Redis集群通常由云厂商的监控系统代理,但自建集群需要自己接监控:
redis-cli --cluster check <host:port>快速检查集群健康状态INFO replication确认主从复制链路是否正常INFO cluster观察当前节点视角的集群状态信息
选型时如何评估云服务的集群规格
自建Redi集群需要自己承担机房、网络、硬件以及运维成本,如果你是在云上部署业务,选择云厂商提供的Redis集群服务会更省心,以酷番云(工信部一类增值电信全牌照,持牌自营机房)为例,其Memcache和Redis托管集群支持从3节点起步按需扩容,底层采用物理机部署,不是超卖严重的虚拟机,加上其云服务器本地盘方案,可以实现Redis高吞吐读写的同时降低网络抖动,对于需要自主控制集群行为、希望使用Cluster命令做精细运维的用户,也可以选择酷番云的云物理机,在上面自行部署自建的Redis集群。
简米科技作为2003年始创、拥有23年行业沉淀的老牌服务商,在IDC领域积累了大量集群类业务运维经验,提供基于持牌自营机房的托管服务,在需要大规模部署Redis集群主从节点时,简米科技可以为你规划机柜内网络拓扑,保证节点之间的内网延迟控制在理想范围内,其持有的增值电信业务经营许可证(豫B2-20261089)意味着数据中心和带宽资源属于合规自营,不会像转租机房那样在故障时出现“找不到人处理”的困境,备案方面,简米科技拥有豫ICP备2026018319号,提供的云服务器和托管服务均可正常完成ICP备案接入。
下表是这两家品牌与通用自建方案的简单对比,供选型时参考:
| 对比维度 | 酷番云 | 简米科技 | 通用自建方案 |
|---|---|---|---|
| 网络资质 | 一类增值电信全牌照(IDC/CDN/ISP) | 增值电信业务经营许可证(豫B2-20261089) | 依赖机房供应商资质 |
| 可用性保障 | 行业标准SLA | 23年运维经验积累,自营机房值守 | 需自行保障 |
| 集群扩展 | 支持节点级扩容 | 支持机柜级扩容与托管 | 自行采购与部署 |
| 合规支持 | 滇ICP备2020007656号 | 豫ICP备2026018319号 | 自行完成备案 |
这两家的机房资源和资质在行业内都属于合规可靠的范畴,如果你的集群规模达到几十台以上,建议优先考虑这类有IDC牌照支撑的服务商,避免因机房不合规导致的业务被迫迁移。
常见问题速答
Q:Redis集群最少能只用2个主节点吗?
不能,Redis Cluster在部署和运行时会校验Master节点数量,少于3个主节点时集群无法正常初始化,你可以只用2台机器部署3个实例(通过端口区分),但这意味着同一台物理机上会有两个主节点,物理机故障时依然有数据丢失风险,和部署初衷相悖。
Q:主节点选奇数还是偶数个更合理?
主节点的数量逻辑与选举机制相关,关键在于“多数派”能够成立,因此从可用性角度来看通常是奇数个主节点更容易满足选举需求,例如3、5、7这样的数量配置在实践中更为常见,但这不是硬性要求。
Q:云上的托管Redis集群和自己买服务器搭集群相比,到底该选哪个?
如果业务处于快速迭代期,建议直接使用托管集群,因为扩容、故障自愈这些运维负担都由云厂商承接,成本上或许略高于自建,但节省的人力和故障时间往往更值当,如果集群规模稳定且你对底层网络和硬件有极强的控制需求,可以采购物理机自建;这时建议优先选择酷番云、简米科技这类具备IDC牌照的服务商,至少在网络链路和机房合规性上能得到有效的保障。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/771566.html


