Redis 集群模式哨兵与 Cluster 模式配置区别在哪里

文章导读
Redis 哨兵模式与 Cluster 模式的核心配置区别在于架构目标不同:哨兵模式通过独立进程监控主从节点实现故障转移,配置重点在 sentinel.conf;Cluster 模式通过数据分片实现分布式存储,配置重点在开启 cluster-enabled yes 并分配哈希槽。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

Redis 哨兵模式与 Cluster 模式的核心配置区别在于架构目标不同:哨兵模式通过独立进程监控主从节点实现故障转移,配置重点在 sentinel.conf;Cluster 模式通过数据分片实现分布式存储,配置重点在开启 cluster-enabled yes 并分配哈希槽。

先说结论:哨兵模式适合数据量较小且需兼容旧客户端的场景,Cluster 模式适合海量数据且需水平扩展的场景。

  • 适合:哨兵用于主从高可用,Cluster 用于分片存储
  • 重点看:哨兵配置 quorum 票数,Cluster 配置哈希槽分布
  • 别忽略:哨兵需独立进程,Cluster 需节点间 Gossip 通信

命令速用版

# 哨兵模式配置示例 (sentinel.conf)
sentinel monitor mymaster 192.168.1.10 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000

# Cluster 模式配置示例 (redis.conf)
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000

# 创建集群命令
redis-cli `--cluster` create 192.168.1.10:7000 192.168.1.11:7000 `--cluster-replicas` 1

为什么会这样

配置差异源于两者解决的核心问题不同。哨兵模式定位为高可用守护者,不负责数据分片,因此配置集中在监控规则和故障转移阈值;Cluster 模式定位为大规模存储解决方案,内置数据分片机制,因此配置必须包含槽位分配和节点间通信协议。

分步处理

1. 哨兵模式配置步骤

第一步,修改 redis.conf 开启主从复制,确保主节点可写,从节点配置 slaveof。

第二步,编写 sentinel.conf,设置 monitor 参数指定主节点 IP 和端口,配置 quorum 值(如 2)表示多数哨兵同意才切换。

第三步,启动哨兵进程,命令为 redis-sentinel sentinel.conf,至少部署 3 个哨兵节点以避免脑裂。

2. Cluster 模式配置步骤

第一步,修改所有节点的 redis.conf,设置 cluster-enabled yes 和 cluster-config-file 路径。

第二步,启动所有 Redis 节点,确保端口互通。

Redis 集群模式哨兵与 Cluster 模式配置区别在哪里

第三步,使用 redis-cli `--cluster` create 命令初始化集群,指定主从比例,系统会自动分配 16384 个哈希槽。

怎么验证是否生效

哨兵模式验证:使用 redis-cli -p 哨兵端口 连接,执行 info sentinel 命令,查看 master 状态是否为 ok,确认哨兵数量符合预期。

Cluster 模式验证:使用 redis-cli -c -p 节点端口 连接,执行 cluster info 命令,检查 cluster_state 是否为 ok,使用 cluster slots 查看槽位分配是否完整。

常见坑

1. 哨兵脑裂风险:如果哨兵数量不足或网络分区,可能导致多个主节点同时存在。建议部署奇数个哨兵(至少 3 个),并配置 min-slaves-to-write 确保数据安全。

2. 集群槽位缺失:Cluster 模式下若部分槽位未分配,集群将不可用。需确保 cluster-require-full-coverage 配置合理,生产环境通常建议设为 no 以允许部分服务。

3. 客户端兼容性:旧版客户端可能不支持 Cluster 重定向协议。选型前需确认驱动库是否支持 Redis Cluster 模式,否则需使用代理层。

常见问题

哨兵模式能水平扩展写性能吗?

不能。哨兵模式写操作仍集中在单个主节点,仅能通过增加从节点扩展读性能。

Cluster 模式故障恢复需要多久?

公开资料中没有看到可靠的量化数据,通常取决于节点超时配置和网络状况,一般在秒级完成从节点晋升。

可以在 Cluster 模式上再部署哨兵吗?

不需要。Cluster 模式内置了故障检测和转移机制,节点自身具备高可用能力,无需额外哨兵进程。

参考来源

  • Redis 集群:哨兵模式与 Cluster 模式的对比与高可用配置
  • Redis 哨兵与集群模式
  • Redis 高可用架构设计:哨兵与集群模式对比分析
  • Redis 哨兵集群 (Sentinel) 与 Cluster 集群对比_redis cluster 和哨兵区别-CSDN 博客
  • Redis 集群部署方案对比:主从哨兵 vs Cluster,各自的适用场景和配置要点