哨兵模式 , 就是由一个或多个哨兵实例组成的哨兵系统,它可以监视所有的Redis 主节点和从节点 ,并且各个哨兵之间还会相互监控。Redis哨兵模式有三个作用 ,分别是 :监控、 选主和通知。
哨兵进程在运行期间 , 监视所有的Redis 主节点和从节点。 它通过周期性给主从库发送 PING命令 ,检测主从库是否挂了。如果主库没有在规定时间内响应哨兵的PING命令 ,哨兵则会判定主库为主观下线 ,然后该哨兵就会通知其他哨兵去判定主库的情况,如果大多数哨兵同意主库下线,那么主库就会被判定为客观下线,然后开始切换到选主。选主分为两步:过滤和打分,首先把不符合条件的从库过滤掉,主要针对已经下线的从库和网络不好老是超时的从库,过滤之后,对剩下的从库进行打分,打分有三个规则:从库优先级、复制进度和ID号,从库优先级越高,打分越高,复制进度越快,打分越高,ID号越小,打分就越高,如果优先级和复制进度一样,就比ID号,从而选出新的主库。至于通知呢 ,就是选出主库后 ,哨兵把新主库的连接信息发给其他从库 ,让它们和新主库建立主从关系。 同时 ,哨兵也会把新主库的连接信息通知给客户端 ,让它们把请求操作发到新主库上。