Skip to content

哨兵机制

概述

Sentinel是Redis高可用解决方案,负责监控主从节点、故障检测和自动故障转移。

核心功能

功能说明
监控定期检查主从节点状态
通知事件通知(通过API)
自动故障转移主节点故障时选举新主节点
配置提供者提供服务发现

故障检测

主观下线(SDown)

单个Sentinel认为节点不可达。

redis
sentinel down-after-milliseconds <master-name> <timeout>

客观下线(ODown)

多个Sentinel达成共识认为节点不可达。

redis
sentinel monitor <master-name> <ip> <port> <quorum>

故障转移

选举流程

  1. 发现故障:ODown后开始选举
  2. 选择主节点:根据优先级、offset、runid
  3. 提升新主
    • 向新主发送SLAVEOF NO ONE
    • 通知其他从节点复制新主
    • 通知客户端新主地址

面试考点

Q: 故障转移如何选择新主?

  1. 过滤故障节点
  2. 按优先级排序(replica-priority)
  3. 按复制offset排序(数据最新)
  4. 按runid排序(字典序最小)

Q: 哨兵集群如何通信?

  • 订阅+频道:sentinel:hello
  • Pub/Sub传播节点信息
  • 每2秒交换信息

最后更新: