Redis哨兵机制(sentinel)

什么是哨兵机制

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. 集群图

                    Redis哨兵机制(sentinel)_第1张图片

3. sentinel.conf文件配置

--- 修改sentinel.conf配置文件
### 主节点 名称 IP 端口号 选举次数
sentinel monitor mymast  192.168.93.138 6379 1
### 修改心跳检测(默认30s,修改为30ms)
sentinel down-after-milliseconds mymaster 30
### 最多多少合格节点
sentinel parallel-syncs mymaster 2

 

4. 开启哨兵机制

--- Redis bin目录启动哨兵机制
./redis-server /usr/local/redis/etc/sentinel.conf --sentinel &
Redis哨兵机制(sentinel)_第2张图片 启动后效果

4. 将master关机,验证哨兵机制

未宕机前主服务器信息(目前为master)

Redis哨兵机制(sentinel)_第3张图片 未宕机前主服务器信息

宕机后slave2信息(由slave转变成master)

Redis哨兵机制(sentinel)_第4张图片 192.168.93.140变为新的master

原先的master重连后自动将新的master作为主服务器

 

Redis哨兵机制(sentinel)_第5张图片 重连后master信息

 

 

 

 

选举机制

引用自 https://blog.csdn.net/sz85850597/article/details/86751215

主观下线:Sentinel集群的每一个Sentinel节点会定时对redis集群的所有节点发心跳包检测节点是否正常。如果一个节点在down-after-milliseconds时间内没有回复Sentinel节点的心跳包,则该redis节点被该Sentinel节点主观下线。

选举:如果需要从redis集群选举一个节点为主节点,首先需要从Sentinel集群中选举一个Sentinel节点作为Leader。

每一个Sentinel节点都可以成为Leader,当一个Sentinel节点确认redis集群的主节点主观下线后,会请求其他Sentinel节点要求将自己选举为Leader。被请求的Sentinel节点如果没有同意过其他Sentinel节点的选举请求,则同意该请求(选举票数+1),否则不同意。

如果一个Sentinel节点获得的选举票数达到Leader最低票数(quorum和Sentinel节点数/2+1的最大值),则该Sentinel节点选举为Leader;否则重新进行选举。

总结

  1. 哨兵机制只是某台服务器上的软件,只占用该台服务器的端口
  2. 一台服务器可以被多个哨兵监听,集群中每个从服务器都可以开启哨兵机制
  3. 哨兵机制至少需要3台服务器。因为master宕机后,至少要有其他服务器投从服务器一票

参考:蚂蚁课堂

           https://blog.csdn.net/sz85850597/article/details/86751215

你可能感兴趣的:(Redis)