哨兵机制存在的意义:
为了实现redis故障转移的自动化。自动发现,自动转移。不需要人工参与。
用户管理多个Redis服务器,该系统执行三个任务:
- 监控:哨兵会不间断的检查Master和Slave是否正常运行
- 提醒:当被监控的某个Redis出现问题,哨兵通过API向管理员或者应用程序发送通知
- 自动故障迁移:当一个Master不能正常工作,哨兵会开始一次故障迁移,然后将失效的Master的其中一个Slave升级为新的Master,并让失效的Master的其他Slave改为复制新的Master;当客户端尝试链接失效的Master时,集群会向客户端返回新的Master的地址,使集群可以使用Master代替失效的Master。
哨兵是一个分布式系统,可以在一个架构中运行多个哨兵进程,这些进程使用流言协议接收关于Master是否下线的信息,并使用投票协议决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master
-
每个哨兵会向其它哨兵、master、slave定时发送信息,确认对方是否活着, 如果对方在指定时间内未回应,则暂时认为对方已挂。
-
若哨兵(sentinel)群多数sentinel认为某一master么响应,系统才认为该master死亡(down机),通过一定的vote算法,从剩下的slave节点,选一台提升为master,然后自动修改相关配置。