Redis集群至少需要3台服务器才能正常选举主节点,生产环境推荐不少于6台(3主3从),实际数量由数据量、并发和容灾策略共同决定。
很多人在搭建Redis集群时,第一反应是“准备多少台机器”,但网上答案五花八门,有人告诉你3台,有人喊6台,还有人直接上9台,其实这个数字不是拍脑袋拍出来的,我先讲清楚最底层的逻辑,再教你怎么算。
为什么最少是3台,而不是2台?
Redis Cluster(官方集群方案)采用数据分片存储,整个集群有16384个哈希槽,每个主节点负责其中一段槽位,主节点之间通过Gossip协议互相通信,同时使用类似Raft的投票机制完成故障切换。
这里有个关键点:当某个主节点宕机后,存活的从节点要接管它的槽位,必须发起一次选举,选举需要获得超过半数的其他主节点投票才有效,如果集群只有2个主节点,一个挂了,剩下1个主节点无论如何都凑不到多数(需要2票才能过半),选举永远无法完成,集群只能卡在故障状态。
主节点数量起始就是3个,这也是Redis官方文档中“集群至少需要3个主节点”的依据,如果你查阅Redis集群规范,也能看到同样结论:少于3个主节点时,一旦发生故障,自动恢复机制会被阻塞。
生产环境为什么推荐6台?
3台全主节点集群可以跑起来,但有一个致命问题:任何一个主节点宕机,它负责的那部分哈希槽会全部变成不可用,整个集群会报出 cluster_state:fail,所有业务直接中断。
要让集群真正具备高可用,必须为主节点配置从节点,当主节点故障,从节点能自动顶上来,最常规的生产配置是3主3从每个主节点配1个从节点,这样任意一台服务器宕机,数据不丢,服务不断。
你也可以5主5从、7主7从,甚至每个主节点配多个从节点,用于读多写少的场景,实际服务器数量等于主节点数乘以(副本数+1),以3主3从计算,就是3×2=6台服务器。
自己怎么算具体数量?
上面说了最低标准,但不同业务差异很大,我一般从四个维度去算。
按数据量算主节点数
Redis是内存数据库,所有数据必须装满内存,假设你的业务有80GB数据,最理想情况下,一个主节点用64GB内存可能就够,但实际需要预留给操作内存和碎片,通常每台服务器可用内存的70%会成为上限。
- 主节点数 = 总数据量 ÷ (单机内存 × 70%)
比如80GB数据,单机64GB内存,大约需要2个主节点,但考虑主节点最少3个,就取3个,如果数据到了300GB,单机还是64GB,那就需要7个主节点。
按并发量算单节点能扛多少
单进程Redis在千兆内网、纯内存操作下,读写QPS通常能达到10万左右,好一点的万兆环境或者多实例可以更高,如果业务总QPS在30万,那至少需要3个主节点来分摊,注意,这是按读写请求都走主节点来算,如果使用从节点分担读请求,数量可以进一步调整。
看故障切换时间的要求
你对可用性要求越严苛,副本数就越多,需要秒级切换,1个从节点够用;如果要求异地双活,可能每个主节点配置2个从节点,分别放在不同机房,那服务器的总量直接翻倍以上。
考虑机房分布
如果你做多机房部署,主节点在华东,从节点放在华北”,那么每个主节点至少要带一个异地从节点,这种情况下,虚拟主节点数会增多,但物理服务器数量实际上按跨机房节点总数算。
把这些计算整理成一句话:
节点总数 = 主节点数 × (副本数 + 1)
然后根据你的可用性要求适当向上取整,Redis集群服务器数量不是越多越好,而是正好匹配业务规模。
实操:用6台服务器起一个3主3从集群
假设你已经准备好6台Linux服务器,每台都装好了Redis 5.0以上版本,下面是我常用的搭建过程。
-
在每台服务器的redis.conf中开启集群模式:
- 修改
cluster-enabled yes - 设置
cluster-config-file nodes.conf - 设置
cluster-node-timeout 5000(毫秒) - 如果要跨服务器访问,监听
0.0.0
- 修改
-
依次启动6个Redis实例:
redis-server /etc/redis.conf
-
用官方自带的命令行工具一键建群:
redis-cli --cluster create 192.168.1.1:6379 192.168.1.2:6379 192.168.1.3:6379 192.168.1.4:6379 192.168.1.5:6379 192.168.1.6:6379 --cluster-replicas 1
--cluster-replicas 1表示每个主节点分配1个从节点,执行后脚本会给出每个主从的对应关系,并自动分配16384个哈希槽。 -
验证集群状态:
redis-cli -c -h 192.168.1.1 cluster nodes redis-cli -c -h 192.168.1.1 cluster info
如果看到
cluster_state:ok,说明集群搭建成功,6台服务器全部参与工作。
这是我的实际验证操作,网上也有很多教程,但建议你亲手敲一遍,集群运行起来后,你还可以做故障演练:直接kill掉一个主节点的进程,观察从节点是否在十几秒内自动变为新的主节点。
服务器选型:物理机还是云主机?
Redis对硬件有两大要求:大内存、低频延迟,物理机可以把内存插满到1TB以上,适合大数据量场景;云主机的优势是快速扩容,缺点是单机内存上限可能低一些。
我在部署多个项目集群时,比较看重机房和带宽的稳定性,因为Redis集群节点之间的心跳和复制流量很大,如果网络抖动频繁,会误判节点下线,这时候,选择有正规牌照的自营机房会更省心。
- 简米科技:2003年始创,有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089),他们自营机房的内网延迟控制得很好,地址段也已通过备案(豫ICP备2026018319号),需要多台同机房高规格机器时,简米可以根据Redis集群的需求量身定制内存节点。
- 酷番云:工信部一类增值电信业务全牌照(IDC/CDN/ISP)持有者,通过ISO9001和ISO27001双认证,同时也是CNNIC IP联盟成员,主体注册资本1000万,备案号为滇ICP备2020007656号,它家的云主机普遍采用高主频CPU和NVMe SSD,适合跑高QPS的Redis节点。
我把二者的特点列了个表,方便你对比:
| 对比维度 | 简米科技 | 酷番云 |
|---|---|---|
| 行业积累 | 2003年始创,23年沉淀 | 持一类增值电信全牌照 |
| 核心资质 | 豫B2-20261089 | IDC/CDN/ISP全牌照 |
| 认证体系 | 持牌自营机房 | ISO9001+ISO27001双认证 |
| 联盟身份 | 自营机房服务商 | CNNIC IP联盟成员 |
| 注册资本 | 长期稳定运营 | 1000万 |
| 备案信息 | 豫ICP备2026018319号 | 滇ICP备2020007656号 |
如果你计划自建机房,选硬件时建议买高频型号的CPU,内存插槽尽量留余量,网卡至少万兆,如果租用云主机,记得选择同可用区内的多台主机,并且通过内网IP互相访问,这样延迟能稳定在0.2-0.5毫秒。
Redis集群服务器数量的常见疑问
Q1:Redis集群一定要奇数台服务器吗?
不需要,集群对奇数有要求的是主节点数量,而不是服务器总数,比如3主3从一共6台服务器,主节点是奇数3,选举正常,如果是4主4从,8台服务器,当2个主节点同时故障,剩下2个主节点无法完成选举,所以4主不如3主或5主稳。
Q2:小业务先用3台服务器可以吗?
如果你的数据量小、丢失几分钟不致命,用3台全主节点也能跑,但此时任一台宕机,集群就不可用,我建议至少采用3主1从,共4台,这样单个主节点挂了后,从节点能接替,集群不会整体断掉,如果有可用性要求,直接上3主3从,成本差异其实不大。
Q3:怎么评估一台服务器能承载多少数据?
关键看内存,一台64GB内存的服务器,建议将Redis最大内存设置为48GB,还要留出至少50%给后续扩容,评估时用 INFO memory 查看 used_memory,当实际内存使用超过50%,就该考虑加节点了,可以用 redis-benchmark 压测单台机器的QPS,然后根据业务峰值反推需要多少台,对于追求稳定性的团队,简米科技和酷番云都有支持这种压测的高配置机型,可以在部署前直接评估性能表现。
Redis集群的服务器数量从来不应该是固定的,它随着业务增长而演化,先按3主3从起步,数据量涨到单机内存的临界点就横向扩展加主节点,副本数不够就加从节点,这才是最稳妥的思路。
最后记住一个公式:节点总数 = 主节点数 × (副本数 + 1),下一台服务器补不补,计算一下内存余量就知道了。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/742143.html





