目标

理解一下 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 节点)

小结

理解为什么这样,反而比直接知道答案更加重要。