什么是哨兵
带Sentinel的主从模式,可以自动切换Redis的主从模式
实现原理
Sentinel监控
- 每10s向主从节点发送info获取节点信息
- 每1s向主从节点发送心跳检测
- 每2s向channel发布sentinel信息和集群判断
选主流程
1 主观下线
某个sentinel向master发送ping失败且超过了一定时间,就认为是主观下线
2 客观下线
- 判断为主观下线的sentinel向其他sentinel发送master是否同意下线请求
- 其他的sentinel根据自己的结果检查是否下线并返回信息
- sentinel收到响应根据结果判断客观下线
3 重新选主
- 选择其中一个sentinel发起故障迁移(先到先得)
- 过滤掉下线的从服务
- 按以下顺序选择(优先级最高/偏移量最大/run id最小)
哨兵存在问题
主节点压力大
只有主节点负责写
脑裂
在配置文件中配置master与slave同步延迟超过x秒,master拒绝请求
