需要做下面这些事情:
- 将宕机的master下线
- 找一个slave作为master
- 通知所有的slave连接新的master
- 启动新的master与slave
- 全量复制*N+部分复制 *N
哨兵(sentinel)在redis集群架构中是一个非常重要的组件,其主要功能有下面这些:
- 监控
不断的检查master和slave是否正常运行
master存活检测、master与slave运行情况检测 - 通知(提醒)
当被监控的服务器出现问题时,向其他(哨兵间、客户端)发送通知 - 自动故障转移
断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的master的地址。
注意: 哨兵也是一台redis服务器,只是不提供数据服务,通常哨兵配置数量为单数。
启动哨兵指令:
redis-sentinel 配置文件.conf
连接命令:
redis-cli -p 端口号
监控阶段


工作内容:
- 第一个sentinel与master进行连接后,发送info指令
- 建立长期cmd连接,sentinal同时保存所有哨兵状态,master中记录redis实例信息
- 通过master中的slave信息与其中的slave进行连接并发送info指令
- 第二个sentinel进入,与master连接发送info指令,发现master端的sentinels
有信息 - 与第一个sentinel建立连接并同步信息,互相发送ping命令保证对方在线,并于master建立cmd连接
通知阶段

故障转移阶段
故障转移阶段引起原因:其中一台sentinel多次获取master状态失败。

发现master宕机
选出sentinel担任处置工作:
投票机制:每个sentinel均是投票者也是参选者,例如:当前有五台sentinel,其中4台sentinel会同时向剩余的一台sentinel发送自己的信息,剩余这台的sentinel会将自己的票投给信息最先到达的sentinel,最后通过所有投票情况选出获得票数最多的sentinel。
通过投票机制产生的sentinel从服务器列表中选择出备选的master
担任master的选择条件:
- 在线的
- 响应速度快的
- 与原master断开时间短的
- 优先原则:
- 优先级
- offset
- runid
发送指令
当原来的master重新启动后,会变成看slave节点。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/137581.html