什么是哨兵机制
Redis集群中,如果主服务器宕机(扑街)则需要手动去重启或者切换主服务器。通过哨兵机制能实现自动监听,并在从服务器中投票选举出新的master
Redis的哨兵机制功能如下:
监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。
配置实现
1. 前提准备
- 主从同步
2. 集群图
3. sentinel.conf文件配置
4. 开启哨兵机制
4. 将master关机,验证哨兵机制
未宕机前主服务器信息(目前为master)
宕机后slave2信息(由slave转变成master)
原先的master重连后自动将新的master作为主服务器
选举机制
引用自 https://blog.csdn.net/sz85850597/article/details/86751215
主观下线:Sentinel集群的每一个Sentinel节点会定时对redis集群的所有节点发心跳包检测节点是否正常。如果一个节点在时间内没有回复Sentinel节点的心跳包,则该redis节点被该Sentinel节点主观下线。
选举:如果需要从redis集群选举一个节点为主节点,首先需要从Sentinel集群中选举一个Sentinel节点作为Leader。
每一个Sentinel节点都可以成为Leader,当一个Sentinel节点确认redis集群的主节点主观下线后,会请求其他Sentinel节点要求将自己选举为Leader。被请求的Sentinel节点如果没有同意过其他Sentinel节点的选举请求,则同意该请求(选举票数+1),否则不同意。
如果一个Sentinel节点获得的选举票数达到Leader最低票数(quorum和Sentinel节点数/2+1的最大值),则该Sentinel节点选举为Leader;否则重新进行选举。
总结
- 哨兵机制只是某台服务器上的软件,只占用该台服务器的端口
- 一台服务器可以被多个哨兵监听,集群中每个从服务器都可以开启哨兵机制
- 哨兵机制至少需要3台服务器。因为master宕机后,至少要有其他服务器投从服务器一票
参考:蚂蚁课堂
https://blog.csdn.net/sz85850597/article/details/86751215
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!