当前位置: 首页 > news >正文

Redis的哨兵模式

什么是哨兵模式

        Redis的哨兵模式( Sentinel mode )是⼀个⾼可⽤解决⽅案,当运⾏多个 Redis 实例并且需要⾃动故障转移时,哨兵模式⾮常有⽤。
  在⼀个典型的哨兵模式下,⾄少需要3 个哨兵实例来避免 脑裂 (⽹络分裂导致多个主服务器同时存在)。哨兵们会通过投票来决定主服务器是否已经下线,以及选择哪个从服务器升级为新的主服务器。
        哨兵模式的实现是基于发布 - 订阅模式的,每个哨兵节点都会订阅其它哨兵节点的信息,这样当主服务器出现故障时,哨兵节点可以及时进⾏⼴播,实现快速故障转移。

哨兵模式主要有三个⽬标:

  • 监控:哨兵模式会不断地检查主服务器和从服务器是否按预期⼯作。
  • 通知:如果某些Redis实例有故障,哨兵模式可以通过API向管理员或者其他应⽤程序发送通知。
  • ⾃动故障转移:如果主服务器⽆法正常⼯作,哨兵模式可以开始⼀个故障转移过程,由⼀个从服务器升级为新的主服务器,并让其他从服务器改变他们的主服务器为新的主服务器。

哨兵模式的特点:

  • 哨兵模式⾃动转移失败的主服务器到⼀个从服务器。
  • 哨兵模式持续监控所有Redis服务器,以便在需要时报告错误。
  • 通过提供⼀个基于哨兵的API,客户端可以⾃动发现新的主服务器地址。

哨兵模式的判断下线过程:

Sentinel (哨兵)时基于⼼跳机制检测服务状态的,每隔 1 秒向每隔实例发送⼀个ping命令,如果某个 sentinel 发现某 Redis 实例未在规定时间内响应,则认为该实例 主观下线 ,若超过指定数量( quorum )的 sentinel 都认为该实例 主观下线 ,则该实例客观下线 quorum 的值最好超过 Sentinel 实例数的⼀半

  1. 如果此时主服务器宕机,哨兵1检测到了,系统并不会⽴即进⾏failover(故障转移)过程
  2. 此时仅仅是哨兵1主管的认为主服务不可⽤,此现象为主观下线
  3. 当后续的哨兵也检测到主服务器不可⽤时,并且数量达指定数量时
  4. 哨兵之间就会进⾏⼀次投票,投票结果由1个哨兵发起,进⾏failover操作
  5. 切换成功之后,就会通过发布订阅模式,让各个哨兵把⾃⼰监控的从服务器切换主机,这个过程为客观下线

哨兵模式的选举过程:

⼀旦发现 master 故障, sentinel 需要在 salve 中选择⼀个作为新的 master
  1. ⾸先会判断slave节点与master节点断开时间⻓短,如果超过指定值 (down-after-milliseconds*10)则会排除该slave节点
  2. 然后判断slave节点的slave-priority值,越⼩优先级越⾼,如果是0则永不参与选举
  3. 如果slave-prority⼀样,则判断slave节点的offset值,越⼤说明数据越新,优先级越⾼
  4. 最后是判断slave节点的运⾏id⼤⼩,越⼩优先级越⾼

故障转移过程:

  1. Sentinel给备选的节点发送slaveof on one命令,让该节点成为Maskter
  2. Sentinel给其他slave发送 “slaveof ip 端⼝命令,开始从Master上同步数据
  3. 最后Sentinel将故障节点标记为slave(执⾏slaveof ip 端⼝命令),故障节点恢复以后也会成为新Masterslave
http://www.lryc.cn/news/364092.html

相关文章:

  • Hadoop伪分布式安装教程
  • Day43 代码随想录打卡|二叉树篇---左叶子之和
  • 微信小程序动画
  • js, ellipsis属性, 超出宽度自动省略... , 并且显示2行
  • ucharts自定义添加tooltip悬浮框显示项内容且换行
  • Mongo 地理位置查询:海量密集点转换成聚合信息
  • bpmn+vue 中文文档
  • React Router v5 和 v6 中,路由对象声明方式有什么区别?
  • 【全开源】知识库文档系统(ThinkPHP+FastAdmin)
  • Python赋能自然语言处理,解锁通往AI的钥匙
  • Ktor库的高级用法:代理服务器与JSON处理
  • VS2017配置OpenCV4.5.1
  • phpstudy配置的站点不能访问了
  • Java Web学习笔记2——Web开发介绍
  • 从零开始实现自己的串口调试助手(3) - 显示底部收发,优化串口打开/关闭
  • 更改Web网站设计——css和css框架
  • 持续监控和优化的简单介绍
  • 针对硅基氮化镓高电子迁移率晶体管(GaN-HEMT)的准物理等效电路模型,包含基板中射频漏电流的温度依赖性
  • 基于websocket与node搭建简易聊天室
  • DevOps全面综述:从概念到实践
  • [C++]vector的模拟实现
  • 【云原生】Kubernetes----POD控制器
  • Java环境配置(超详细)
  • 【操作系统】(详细理解进程的状态)执行状态、就绪状态、阻塞状态、挂起状态
  • C++ -- string常用接口的底层实现
  • 怎么做好企业短信服务呢?(文字短信XML接口示例)
  • 鸿蒙小案例-音乐播放器
  • 语言模型测试系列【9】
  • 优思学院|质量工程师工资不高怎么办?
  • 【面向就业的Liux基础】从入门到熟练,探索Linux的秘密(一)