【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊

简介

Redis 的哨兵模式(Sentinel)是用于实现 Redis 高可用性的一种机制。它通过监控主节点和从节点,自动进行主节点故障切换,确保 Redis 集群在主节点出现故障时仍然能够继续提供服务。下面是对 Redis 哨兵模式的详细介绍:

1. Redis 哨兵模式的基本组成

哨兵模式主要由以下几个组件组成:

  • 主节点(Master):提供读写服务的 Redis 实例,所有数据的写操作都由主节点处理。
  • 从节点(Slave):从主节点复制数据的 Redis 实例,通常用于分担读取请求。当主节点宕机时,从节点可以提升为新的主节点。
  • 哨兵(Sentinel):负责监控 Redis 主从节点的实例。哨兵会定期检查主节点和从节点的状态,并在主节点出现故障时,自动进行故障转移(failover),选举一个新的主节点。

2. 哨兵模式的功能

  • 监控(Monitoring):哨兵会定期对主节点和从节点进行健康检查,判断它们是否处于正常工作状态。
  • 通知(Notification):当主节点出现问题时,哨兵可以向管理员或其他系统发出通知。
  • 自动故障转移(Automatic Failover):如果主节点发生故障,哨兵会在多个从节点中选举一个作为新的主节点,并将其他从节点重新配置为从新的主节点进行复制。
  • 配置提供者(Configuration Provider):应用程序可以通过哨兵获取当前主节点的地址,这样即使发生故障转移,应用程序仍然可以通过哨兵来找到新的主节点。

3. 工作机制

3.1 健康检查

每个哨兵会定期向主节点、从节点和其他哨兵实例发送 PING 命令,以判断这些实例是否可达。如果在规定时间内没有收到响应,哨兵会将该节点标记为主观下线(Subjectively Down,SDOWN)。

3.2 主观下线与客观下线
  • 主观下线(SDOWN):单个哨兵实例认为一个节点不可达。
  • 客观下线(Objectively Down,ODOWN):当多数哨兵实例都认为主节点不可达时,会达成共识并认为该节点确实下线。
3.3 故障转移(Failover)

当主节点被判定为 ODOWN 后,哨兵会进行故障转移操作:

  1. 选举领导者:如果有多个哨兵实例,首先需要通过 Raft 协议选举一个领导者来执行故障转移操作。
  2. 选举新的主节点:从可用的从节点中选择一个新的主节点。通常会选择数据最完整且与旧主节点同步延迟最小的从节点。
  3. 重新配置集群:将其他从节点指向新的主节点,并通知客户端更新主节点地址。
  4. 通知客户端:更新客户端连接的主节点地址。

4. 哨兵的优势与局限性

优势:
  • 高可用性:在主节点发生故障时,能够自动切换到新的主节点,保证服务的连

你可能感兴趣的:(reids,redis,sentinel,数据库,高可用,缓存)