什么是哨兵

带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拒绝请求