Redis高可用Sentinel哨兵

哨兵模式前言

Sentinel哨兵是redis官方提供的高可用方案,可以用它来监控多个Redis服务实例的运行情况。Redis Sentinel 是一个运行在特殊模式下的Redis服务器。Redis Sentinel是在多个Sentinel进程环境下互相协作工作的。

Sentinel系统有三个主要任务:

  1. 监控:Sentinel不断的检查主服务和从服务器是否按照预期正常工作。
  2. 提醒:被监控的Redis出现问题时,Sentinel会通知管理员或其他应用程序。
  3. 自动故障转移:监控的主Redis不能正常工作,Sentinel会开始进行故障迁移操作。将一个从服务器升级新的主服务器。 让其他从服务器挂到新的主服务器。同时向客户端提供新的主服务器地址。

Sentinel配置

  1. 修改sentinel.conf配置文件

    1. 修改133redis的sentinel.conf配置文件

    2. vim sentinel.conf 

    3. 格式:sentinel  monitor  <name>  <masterIP>  <masterPort>  <Quorum投票数>

    4. Sentinel监控主(Master)Redis, Sentinel根据Master的配置自动发现Master的Slave,Sentinel默认端口号为26379 。

    5. 135,136的sentinel.conf 配置文件和133一样

  2. 启动Sentinel

    1. 启动一个运行在Sentinel模式下的Redis服务实例

    2. ./redis-sentinel  sentinel配置文件

    3. 启动133,135,136

    4. 133日志信息

    5. 135日志信息

    6. 136日志信息

    7.  

      停止133主redis

    8. 133sentinel日志信息

    9. 135sentinel日志信息

    10. 136sentinel日志信息

    11. 登录135查看主从关系

    12. 重新启动133,133sentinel日志信息

    13. 135sentienl日志信息

    14. 136sentienl日志信息,把136转换为135的从

    15. 登录136查看主从关系,133加入成功

    16. 至此sentinel高可用搭建完成,主从关系为:135主,133,136从,重新启动也是这样的关系,因为它去修改了redis.conf配置文件中配置的主从关系,自己看一下redis.conf配置文件就可以了

    17. /////////////////////////////////////////////////////////

    18. 报错

    19. 5586:S 20 Feb 12:13:51.068 * Connecting to MASTER 192.168.184.133:6379

      5586:S 20 Feb 12:13:51.068 * MASTER <-> SLAVE sync started

      5586:S 20 Feb 12:13:51.069 # Error condition on socket for SYNC: Connection refused

    20. 添加该配置就可以解决

      protected-mode no   #保护模式如果开启只接受回环地址的ipv4和ipv6地址链接,拒绝外部链接,而且正常应该配置多个哨兵,避免一个哨兵出现独裁情况,如果配置多个哨兵那如果开启也会拒绝其他sentinel的连接。导致哨兵配置无法生效。

    21. /////////////////////////////////////////////////////////

    22. sentinel常用配置

    23. port 26379  #端口
      daemonize yes  #后台启动
      protected-mode no   #保护模式如果开启只接受回环地址的ipv4和ipv6地址链接,拒绝外部链接,而且正常应该配置多个哨兵,避免一个哨兵出现独裁情况,如果配置多个哨兵那如果开启也会拒绝其他sentinel的连接。导致哨兵配置无法生效。
      logfile "/usr/local/redis-3.2.9/log/sentinel.log"      #指明日志文件,如果有该配置的话,显示启动控制台也不会显示日志信息,日志信息都在你指定的日志文件中
      dir "/data/redis/sentinel"
      sentinel monitor mymaster 192.168.184.133 6379 2  #哨兵监控的master。
      sentinel down-after-milliseconds mymaster 5000     #master或者slave多少时间(默认30秒)不能使用标记为down状态。
      sentinel failover-timeout mymaster 9000    #若哨兵在配置值内未能完成故障转移操作,则任务本次故障转移失败。
      sentinel auth-pass mymaster redispass    #如果redis配置了密码,那这里必须配置认证,否则不能自动切换

  3. 监控
    1. Sentinel会不断检查Master和Slave是否正常

    2. 如果Sentinel挂了,就无法监控,所以需要多个哨兵,组成Sentinel网络,一个健康的Sentinel至少有3个Sentinel应用。 彼此在独立的物理机器或虚拟机。

    3. 监控同一个Master的Sentinel会自动连接,组成一个分布式的Sentinel网络,互相通信并交换彼此关于被监控服务器的信息

    4. 当一个Sentinel认为被监控的服务器已经下线时,它会向网络中的其它Sentinel进行确认,判断该服务器是否真的已经下线

    5. 如果下线的服务器为主服务器,那么Sentinel网络将对下线主服务器进行自动故障转移,通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转移到新的主服务器下,以此来让系统重新回到正常状态

    6. 下线的旧主服务器重新上线,Sentinel会让它成为从,挂到新的主服务器下

  4. 总结​​​​​​

    1. 主从复制,解决了读请求的分担,从节点下线,会使得读请求能力有所下降,Master下线,写请求无法执行

    2. Sentinel会在Master下线后自动执行故障转移操作,提升一台Slave为Master,并让其它Slave成为新Master的Slave

详细参考:http://www.redis.cn/topics/sentinel.html

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_39669058/article/details/87777196