Redis_哨兵模式

9. 哨兵模式

9.1 简介

当主库宕机,在从库中选择一个,切换为主库。
问题:

  1. 主库是否真正宕机?
  2. 哪一个从库可以作为主库使用?
  3. 如何实现将新的主库的信息通过给从库和客户端?

9.2 基本流程

哨兵主要任务:

  • 监控
  • 选择主库
  • 通知

会有主观下线和客观下线,就是奇数个哨兵,少数服从多数,多数以为主服务器宕机了,就判断宕机

9.3 哨兵模式配置

  1. 创建一个sentinel.conf文件,进行配置
    #端口号
    port 26379
    #sentinel monitor <自定义的reids主节点名称> <IP> <port> <数量、几个哨兵说主节点下线>
    sentinel monitor mymaster 127.0.0.1 6379 1
    #指定多少毫秒后,主节点没有应答哨兵,就认为下线了
    sentinel down-after-milliseconds mymaster 30000
    
  2. 启动三个redis实例,配置成一主二从模式
  3. 启动哨兵:redis-sentinel sentinel.conf
  4. 将主服务器宕机,观察哨兵监控信息变化
    将一个从库6380,切换成主库,将6381,切换成6379的从库。
  5. 将原来主库6379再次启动,6379切换成6380的从库

9.4 新主库的选定

筛选 + 打分,来实现新主库的选定
在这里插入图片描述

打分
三轮打分

  • 第一轮 优先级
    • 通过replica-priority配置项,给不同的从库设置优先级。可以将内存大,网络好,配置高的从库优先级设置更高。
  • 第二轮 和原主库同步程度
    • 选择和原主库repl_backlog_buffer(唤醒缓冲区)中的位置最接近的,做为分数最高
  • 第三轮 ID号小的从库得分高
    • 每一个redis实例都有一个id。

9.5 哨兵集群

9.5.1 简介

采用多个哨兵,组成一个集群,以少数服从多数的原则,来判断主库是否客观下线。

  • 假如有s个哨兵,那么如果有s/2+1个哨兵确定主库宕机,则判断主库为客观下线

如果集群中,有哨兵实例掉线,其他的哨兵还可以继续协作,来完成主从库监控和切换的工作。

9.5.2 部署

  1. 创建了一个目录 mysentinel

  2. 分别创建三个哨兵配置文件
    sentinel26379.conf sentinel26380.conf sentinel26381.conf
    配置如下

    port 26379
    sentinel monitor mymaster 127.0.0.1 6379 2
    
    port 26380
    sentinel monitor mymaster 127.0.0.1 6379 2
    
    port 26381
    sentinel monitor mymaster 127.0.0.1 6379 2
    
  3. 再次配置一主二从

  4. 启动三个redis实例,配置成一主二从,6379是主库

  5. 依次启动三个哨兵实例。主库宕机,发现主库下线后,选举新的从库做为主库

    出现的指令对应意义
    +sdown进入主观下线状态
    -sdown退出主观下线状态
    +odown进入客观下线状态
    -odown退出客观下线状态
    +switch-master主库地址发生变化切换
    +slave-reconf-sent哨兵发送replicaof命令配置从库
    +slave-reconf-inprog从库配置了新主库,但尚未进行同步
    +slave-reconf-done从库配置了新主库,并且已经完成同步

9.5.3运行机制

基于pub/sub(发布/订阅)机制实现哨兵集群组成
基于info命令对哨兵监控从库
基于哨兵自身的pub/sub功能,实现了客户和哨兵之间的通知

  • subscribe 频道[频道…]
    • subscribe +odown(订阅+odown的频道)
  • publish 频道 内容
    • publish +odown 下线(发布+odown频道’下线’的信息)

有一个投票机制,倘若一个哨兵发现主库主观下线了,会向其他哨兵发起投票,如果有两个都是主观下线,就判定主库为客观下线

并且此哨兵会向其他两个哨兵发送请求,由我(Leader)来判定从库中的哪一个来替换主库

就如同竞争上岗一样,三个哨兵会相互投票,哪个发起的早,哪个成为Leader几率更大,并且每个哨兵只可以投一个赞成票
注意:

  • 在配置哨兵的时候down-after-milliseconds要让每个哨兵都配置相同的时间,否则可能会出现哨兵不同步的问题
    • sentinel down-after-milliseconds mymaster 30000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/62930.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习笔记 - 基于C++的​​深度学习 二、实现卷积运算

一、卷积 卷积是信号处理领域的老朋友。最初的定义如下 在机器学习术语中: I(…)通常称为输入 K(…)作为内核,并且 F(…)作为给定K的I(x)的特征图。 虑多维离散域,我们可以将积分转换为以下求和 对于二维数字图像,我们可以将其重写为: <

BGP小综合

实验要求及拓扑 一、思路 1.使用OSPF使R2-R7之间可通。 2.各自宣告AS区域&#xff0c;两个区域两两之间建邻&#xff0c;AS2两个小区域之间建联邦&#xff08;R2与R5、R4与R7&#xff09;。 3.使R3、R6为路由反射器 RR反射器选取各小区域的路由器作为客户端 、非客户端 4.优…

谷粒商城第十一天-完善商品分组(主要添上关联属性)

目录 一、总述 二、前端部分 2.1 改良前端获取分组列表接口及其调用 2.2 添加关联的一整套逻辑 三、后端部分 四、总结 一、总述 前端部分和之前的商品品牌添加分类差不多。 也是修改一下前端的分页获取列表的接口&#xff0c;还有就是加上关联的那一套逻辑&#xff0c;…

大学生口才培训需求分析

标题&#xff1a;大学生口才培训需求分析 摘要&#xff1a; 本论文旨在分析大学生口才培训的需求&#xff0c;通过对大学生口才培训的重要性、现状和挑战进行研究&#xff0c;并结合相关理论和实践经验&#xff0c;提出相应的培训需求和解决方案。通过本论文的研究&#xff0c…

内生性的蒙特卡罗模拟

这是一个很好的例子,通过蒙特卡洛模拟展示了忽略相关变量时,回归系数估计的偏差。 %% 蒙特卡洛模拟&#xff1a;内生性会造成回归系数的巨大误差 times 300; % 蒙特卡洛的次数 R zeros(times,1); % 用来储存扰动项u和x1的相关系数 K zeros(times,1); % 用来储存遗漏了x2…

解释器模式(Interpreter)

解释器模式是一种行为设计模式&#xff0c;可以解释语言的语法或表达式。给定一个语言&#xff0c;定义它的文法的一种表示&#xff0c;然后定义一个解释器&#xff0c;使用该文法来解释语言中的句子。解释器模式提供了评估语言的语法或表达式的方式。 Interpreter is a behav…

ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960)

ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) 二、CVE-2022-23960 一、ATF(TF-A)安全通告 TFV-9 (CVE-2022-23960) Title TF-A披露通过分支预测目标重用&#xff08;branch prediction target reuse&#xff09;引发的前瞻执行处理器漏洞 CV…

Unity使用C# Protobuf源码

目录 第一步&#xff1a;下载源码 第二步&#xff1a;运行C#构建文件 第三步&#xff1a;处理报错&#xff08;如果你已安装对应的SDK则不会报错&#xff09; 第四步&#xff1a;复制库文件到你的工程 第一步&#xff1a;下载源码 protobuf github源码https://github.com/p…

纯前端 -- html转pdf插件总结

一、html2canvasjsPDF&#xff08;文字会被截断&#xff09;&#xff1a; 将HTML元素呈现给添加到PDF中的画布对象&#xff0c;不能仅使用jsPDF&#xff0c;需要html2canvas或rasterizeHTML html2canvasjsPDF的具体使用链接 二、html2pdf&#xff08;内容显示不全文字会被截断…

使用windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功 1. Linux(centos8…

数据分析两件套ClickHouse+Metabase(二)

Metabase篇 Metabase安装部署 任何问题请查看 -> 官方文档 jar包从GitHub下载 -> 地址 同样有个问题, 默认数据源里没有ClickHouse, 不过ClickHouse官方提供了插件包 -> 插件包 在安装metabase目录下新建一个plugins文件夹, 把下载的clickhouse.metabase-driver.ja…

pve组网实现公网访问pve,访问电脑,访问pve中的openwrt同时经过openwrt穿透主路由地址nginx全公网访问最佳办法测试研究...

一台路由器 做主路由 工控机 装pve虚拟机 虚拟机里面装一个openwrt, 外网可以直接访问pve,可以访问pve里的openwrt 一台主机 可选择连 有4个口&#xff0c;分别eth0,eth1,eth2,eth3 pve有管理口 这个情况下 &#xff0c;没有openwrt 直接电脑和pve管理口连在一起就能进pve管理界…