• 4.1 Redis哨兵模式


    引子

    Master挂了,如何保证可用性,实现继续读写。

    什么是哨兵

    Sentinel(哨兵)用于监控Redis集群中的Master状态的工具,是Redis高可用解决方法,哨兵可以监视一个或多个redis master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个从服务升级为master来替代一宕机的master继续工作。

    示例图

     配置哨兵监控master

    创建并配置sentinel.conf:

    • 普通配置

    port 26379
    pidfile "/usr/local/redis/sentinel/redis-sentinel.pid"
    dir "/usr/local/redis/sentinel"
    daemonize yes
    protected-mode no
    logfile "/usr/local/redis/sentinel/redis-sentinel.log"

    • 核心配置

    # 配置哨兵
    sentinel monitor mymaster 127.0.0.1 6379 2
    # 密码
    sentinel auth-pass
    # master被sentinel认定为失效的间隔时间
    sentinel down-after-milliseconds mymaster 30000
    # 剩余的slaves重新和新的master做同步的并行个数
    sentinel parallel-syncs mymaster 1
    # 主备切换的超时时间,哨兵要去做故障转移,这个时候哨兵也是一个进程,如果他没有去执行,超过这个时间后,会由其他的哨兵来处理
    sentinel failover-timeout mymaster 180000

    启动哨兵 x 3

    redis-sentinel  sentinel.conf

    测试

    1. master挂了,看slave是否成为master
    2. master恢复,观察slave状态

    结论

    master挂了之后,由于哨兵监控,剩余slave会进行选举,选举后其中一个成为master,当原来的master恢复后,他会成为slave。

    解决原Master恢复后不同步问题

    ●    解决原Master恢复后不同步问题

    ●    一般master数据无法同步给slave的方案检查步骤

    ●    解决原Master恢复后不同步问题

        ◆    原Master恢复后不同步问题

    原来的Master(191)恢复成Slave,他的同步状态不OK,状态为 master_link_status:down,这是为什么?

        原因:这是因为我们只设置了 192 和 193 的masterauth,这是用于同步master的数据

                但是191一开始是 master 是不受影响的

                当master转变为slave,由于它没有设置masterauth,

                所以他不能从新的master同步数据。

                随之导致 info replication的时候,同步状态为 down,

                所以只需要修改redis.conf 中  masterauth 的密码改为一致的即可

    ●    一般master数据无法同步给slave的方案检查步骤

        ◆    网络通信问题,要保证互相ping通,内网互通。   

        ◆    关闭防火墙,对应的端口开放(虚拟机中建议永久关闭防火墙,云服务器的话需要保证内网互通)

        ◆    统一所有的密码,通过逐台检查机器以防某个节点被遗漏   

    进入客户端状态下

    sentinel master sentinel-master  查看主节点的状态

    sentinel slave sentinel-master  查看从节点的状态

    redis-cli -p 26379

    sentinel sentinels sentinel-master 查看主节点哨兵相关的信息

    总结:经典模式一主二从,不过一旦主节点宕机,从节点无法写出信息,这样就不可用了,为了解决这个问题引入哨兵监控,通过投票机制,把从节点提升为主节点;每个节点都有一个哨兵

    采用少数服从多数原则,那么哨兵节点数至少有3个或者为单数,计算方法:节点数除以2再加一,所以3个节点的quorum=2

    quorum=投票人数 ,成为队长以后可以负责故障转移,可以决定哪台slave节点提升为master

    约定

    • 哨兵节点数要设定为奇数个,避免出现重新投票的情况

    • 哨兵部署在不同的计算机节点防止团灭

    • 一组哨兵只监听一组主从

    Springboot集成Redis哨兵配置

    spring:

      redis:

        database: 0

        password: 1TdhblkFcdhx2a

        sentinel:

          master: sentinel-master

          nodes: 192.168.1.191:26379,192.168.1.192:26379,192.168.1.193:26379

  • 相关阅读:
    大一作业HTML网页作业 HTML校园篮球网页作业(12个页面)
    JavaWeb三大组件【Servlet】【Filter】【Listener】学习笔记
    趁热打铁之文本信息标注平台
    Python的一个并行计算库
    【数据结构】手撕单链表
    MySQL如何对SQL做prepare预处理(解决IN查询SQL预处理仅能查询出一条记录的问题)
    第十七次CCF计算机软件能力认证
    第九天 Python爬虫之Scrapy(框架简单使用 )
    第二章:Pythonocc官方demo 案例45(几何轴向曲线偏置)
    MySQL版本升级
  • 原文地址:https://blog.csdn.net/Xx13624558575/article/details/126577401