Redis——哨兵机制(Sentinel)、哨兵原理

一、哨兵机制 Sentinel

1、哨兵的概念

  • Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。简单的说哨兵就是带有自动故障转移功能的主从架构
  • 简单来说, 当一个master节点的redis服务挂掉了, sentinel机制会发现, 并从剩余的slave节点的redis服务中, 选举出一个slave, 来充当新的master节点。

在这里插入图片描述

  • 哨兵(sentinel)是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。

在这里插入图片描述

2、哨兵的作用

  • 监控
    • 不断的检查masterslave是否正常运行。
    • master存活检测、master与slave运行情况检测
  • 通知(提醒)
    • 当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知
  • 自动故障转移
    • 断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址

注意:

  • 哨兵也是一台redis服务器,只是不提供数据服务
  • 通常哨兵配置数量为单数(选举master防止同票)

二、启用哨兵机制

在这里插入图片描述

在同一个服务器中如何模拟三个哨兵服务呢?

  • 将Redis安装包中的配置文件sentinel.conf拷贝出来, 然后在sentinel.conf中修改端口, 以及设置master的端口地址, 然后通过redis-sentinel sentinel-端口号.conf即可
  • 启动哨兵, redis-cli -p 26379

在这里插入图片描述
在这里插入图片描述
当启动哨兵服务后, 每一个哨兵都会相互注册, 此时sentinel.conf配置文件以及修改了;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、哨兵机制的原理

主从切换
  • 哨兵在进行主从切换过程中经历三个阶段
    • 监控
    • 通知
    • 故障转移

1、监控阶段

就是上面我们启动各个哨兵服务的时候, 不同的哨兵服务的信息会相互监控, 包括master节点的信息以及master节点的slave节点信息; 能拿到master节点信息是因为在哨兵的配置文件sentinel.conf中配置了master节点的ip,端口地址;

  • 一个哨兵服务, 可以监控其他的哨兵, 还可以监控master节点的信息, 以及该master节点下的slave节点的信息。
    在这里插入图片描述
  • 多个哨兵服务之间可以相互通信, 它们是一个小圈子, 它们直接通过 发布订阅 的方式来相互通知
    在这里插入图片描述

2、通知阶段

在这里插入图片描述

3、故障转移阶段

  • 首先sentinel1master发送hello指令, 此时master没有任何反应, 也拿不到它的信息, 标记master为SRI_S_DOWN(主观下线); 此时该sentinel1会在它的小圈子(sentinel系统)中说, master挂掉了; 此时sentinel2、sentinel3也都向master发送hello指令, 也得不到回应(或者超过半数), 此时该master确定挂掉了, 标记为SRI_O_DOWN(客观下线);

在这里插入图片描述
下一步就是清理该master了, 也就是将宕机的master下线, 首先要在多个sentinel中选举一个来清理; 在多个sentinel中通过投票来选举出来一个领头的sentinel;
在这里插入图片描述

然后领头的sentinel会从多个slave中挑选一个来充当master

在这里插入图片描述

具体选举的要求
  • 由推选出来的哨兵对当前的slave进行筛选,筛选条件有:
    • 服务器列表中挑选备选master
    • 在线的
    • 响应慢的
    • 与原master断开时间久的
    • 优先原则
      • 优先级
      • offset
      • runid
    • 发送指令( sentinel )
      • 向新的master发送slaveof no one(断开与原master的连接)
      • 向其他slave发送slaveof 新masterIP端口(让其他slave与新的master相连)

在这里插入图片描述

4、详细解读sentinel服务打印的信息

在这里插入图片描述

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

white camel

感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值