哨兵
哨兵 哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。
哨兵的作用
●监控
不断的检查master和slave是否正常运行。
master存活检测、master与slave运行情况检测
●通知(提醒)
当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。
●自动故障转移
断开master与slave连接,选取一个slave作为master ,将其他slave连接到新的master ,并告知客户端新的服务器地址
注意: 哨兵也是一台redis服务器 ,只是不提供数据服务 通常哨兵配置数量为单数
配置哨兵
●配置一拖二的主从结构
●配置三个哨兵(配置相同,端口不同)
参看sentinel.conf
●启动哨兵
redis - sentinel sentinel-端口号. conf
主从切换
哨兵在进行主从切换过程中经历三个阶段:
1.监控
2.通知
3.故障转移
阶段一:监控阶段
阶段二:通知阶段
维护信息对等的阶段
阶段三:故障转移阶段
超过半数sentinel认为master挂了 它就挂了
标志从:SRI_S_DOWN(一个哨兵认为它挂了)变为了SRI_O_DOWN(半数认为它挂了)
当选的sentiel会去选择备选的master
●服务器列表中挑选备选master
●在线的(pass掉不在线的)
●响应慢的(pass掉)
●与原master断开时间久的
●优先原则
●优先级
●offset(优先级相同的情况下,选择偏移量小)
●runid(如果优先级和offset相同,选择runid小的)
●发送指令( sentinel )
●向新的master发送slaveof no one
●向其他slave发送slaveof 新masterIP端口
总结
●监控
●同步信息
●通知
●保持联通
●故障转移
●发现问题
●竞选负责人
●优选新master
●新master上任,其他slave切换到新的master ,原master作为slave故障恢复后连接