Appearance
哨兵机制
概述
Sentinel是Redis高可用解决方案,负责监控主从节点、故障检测和自动故障转移。
核心功能
| 功能 | 说明 |
|---|---|
| 监控 | 定期检查主从节点状态 |
| 通知 | 事件通知(通过API) |
| 自动故障转移 | 主节点故障时选举新主节点 |
| 配置提供者 | 提供服务发现 |
故障检测
主观下线(SDown)
单个Sentinel认为节点不可达。
redis
sentinel down-after-milliseconds <master-name> <timeout>客观下线(ODown)
多个Sentinel达成共识认为节点不可达。
redis
sentinel monitor <master-name> <ip> <port> <quorum>故障转移
选举流程
- 发现故障:ODown后开始选举
- 选择主节点:根据优先级、offset、runid
- 提升新主:
- 向新主发送SLAVEOF NO ONE
- 通知其他从节点复制新主
- 通知客户端新主地址
面试考点
Q: 故障转移如何选择新主?
- 过滤故障节点
- 按优先级排序(replica-priority)
- 按复制offset排序(数据最新)
- 按runid排序(字典序最小)
Q: 哨兵集群如何通信?
- 订阅+频道:sentinel:hello
- Pub/Sub传播节点信息
- 每2秒交换信息
