由于redis主从模式无法解决主从节点的状态监测及异常情况的故障切换,redis引入哨兵模式,进行状态监测和故障切换。
redis哨兵模式是基于主从模式(主从模式优点得以保留)。相对于主从模式需要手动修改redis.properties配置来实现从节点升级为主节点手动干预,哨兵模式可以通过哨兵监测选举实现主从节点的自动化切换。哨兵模式的部署图如下图所示
特点
- 引入独立哨兵
- 自动检测状态
- 主从自动切换
- 奇数的哨兵数
哨兵模式下存在如下的定时任务
- 哨兵每1s向所有节点发送ping命令做心跳监测
- 哨兵每2s向主节点的_sentinel_.hello频道发送命令进行交互
- 哨兵每10s向所有数据节点发送info命令获取最新的拓扑结构
因为哨兵模式基于主从模式,主从模式的优点(数据同步)得以保存,此处仅介绍状态监测和故障切换的过程
状态监测-节点下线
- 哨兵每1s进行ping命令,如果发现节点超过时间未回复,标记为主观下线sdown
- 当标记的主观下线的节点为主节点,会遍历所有的其他sentinel节点询问对该主节点的判断,
- 超过quorum(默认2)数的senti