目标
理解一下 redis 集群模式为什么要这么推荐?有啥用
chat
为什么官方推荐的 cluster 要3主3从?
官方推荐 至少 3 主 3 从(共 6 个节点),并不是拍脑袋定的,而是经过故障场景、可用性和一致性权衡之后得出的结论。
🧩 一、Cluster 的最小容错单位是“主节点”
Redis Cluster 的基本设计思想是:
“数据分片在主节点上,备份在从节点上,主挂了由从节点顶上。”
也就是说:
- 主节点负责写;
- 从节点实时同步;
- 故障时从节点可自动提升为主节点。
那么问题来了:
- 如果一个主节点挂了,但它没有从节点,那这部分数据就永远不可用;
- 如果只有一个主节点 + 一个从节点,那系统一旦再挂一个节点,整个集群就“分裂”了。
所以 Redis 官方提出了:
最少要有 3 个主节点,才能组成一个能“正确投票”的集群。
⚖️ 二、为什么至少要 3 个主节点?(避免脑裂)
Redis Cluster 内部使用 Gossip 协议 + 半数投票 来做主节点选举。
- 当某个主节点挂掉时,其他主节点会投票选出它的从节点来顶替;
- 要求半数以上的主节点认为它挂了,才会生效。
举个例子:
集群结构 | 挂了的情况 | 是否还能选主 |
---|---|---|
1 主 1 从 | 主挂了 | ❌ 无法投票,Cluster Down |
2 主 2 从 | 掉一台主 | ❌ 两个主对半分,无法形成多数 |
3 主 3 从 | 掉一台主 | ✅ 还有 2 个主节点可以达成多数投票(2/3) |
👉 这就是“多数派投票原则”,也是分布式系统经典的 quorum 机制。
🧱 三、为什么还要带从节点?
因为在 Redis Cluster 中:
- “主节点”负责写;
- “从节点”只是备份,不参与写;
- 如果主节点宕机,从节点可以被自动提升。
所以:
- 没有从节点 = 没有高可用性。
- 如果主节点宕了且没有从节点,整个 slot 区间直接不可用;
- 即使其他节点还在,也会返回
CLUSTERDOWN
错误。
🧮 四、6 节点的好处总结
设计 | 优点 | 说明 |
---|---|---|
3 主 | 能形成多数派投票,防止脑裂 | |
3 从 | 实现高可用 + 自动故障转移 | |
总共 6 节点 | 可在挂掉任意 1 台主机后仍然可用 | |
6 节点分布 | 通常跨 3 台物理机(每台放 1 主 1 从)以防单机故障 |
典型部署方式:
物理机 | 节点1 | 节点2 |
---|---|---|
A | 主节点1 | 从节点3 |
B | 主节点2 | 从节点1 |
C | 主节点3 | 从节点2 |
✅ 任意机器宕机,不会丢数据,不会失去投票多数。 这就是官方推荐的“最小高可用集群拓扑”。
🧠 五、如果节点更少,会出现什么问题?
配置 | 问题 |
---|---|
1 主 | 没有容错能力 |
2 主 | 不能形成多数派(脑裂) |
2 主 2 从 | 同样不能形成多数派(2 个主对半) |
3 主无从 | 主挂一个就不可用(无从顶替) |
所以:
3 主 3 从是 Redis Cluster 能同时兼顾容错、可用性、自动恢复的最小配置。
🚀 总结一句话:
目的 | 设计 |
---|---|
防止脑裂 | 至少 3 个主节点(投票多数) |
保证高可用 | 每个主节点至少 1 个从节点 |
防止单机故障 | 主从分布在不同机器 |
所以推荐 | 3 主 3 从(6 节点) |
小结
理解为什么这样,反而比直接知道答案更加重要。