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.mzph.cn/news/34595.shtml

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

相关文章

Win11中使用pip或者Cython报错 —— error: Microsoft Visual C++ 14.0 is required.

第一步&#xff1a;下载Visual Studio 2019 下载地址&#xff1a; https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes 第二步&#xff1a;安装组件 选择单个组件&#xff0c;勾选以下两个组件 其他错误&#xff1a; 无法打开文件“python37.li…

iOS开发-WebRTC本地直播高分辨率不显示画面问题

iOS开发-WebRTC本地直播高分辨率不显示画面问题 在之前使用WebRTC结合ossrs进行推流时候&#xff0c;ossrs的播放端无法看到高分辨率画面问题。根据这个问题&#xff0c;找到了解决方案。 一、WebRTC是什么 WebRTC是什么呢&#xff1f; WebRTC (Web Real-Time Communicatio…

【ES】笔记-函数参数默认值

函数参数默认值 ES6 允许给函数参数赋值初始值 1. 形参初始值 具有默认值的参数&#xff0c;一般放到最后 function add(a,b,c10){return abc}let resultadd(1,2);console.log(result);2. 与解构赋值结合 function connect({host"127.0.0.1",username,password,port…

python selenium如何保存网站的cookie用于下次自动登录

## 一、python selenium如何保存网站的cookie 使用Selenium保存网站的Cookie非常简单。下面是一个示例&#xff0c;展示了如何使用Selenium打开网站&#xff0c;然后保存获取到的Cookie&#xff1a; from selenium import webdriver# 初始化浏览器 browser webdriver.Chrome…

考虑分布式电源的配电网无功优化问题研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Shell编程之条件测试、if语句、case语句

条件语句 一、条件测试1.1 测试命令1.1 文件测试1.2 整数比较1.3 字符串比较1.4 逻辑测试1.4.1 逻辑与 &&1.4.2 逻辑或 || 1.4.3 组合应用1.5 多个命令组合执行 ( ) { } 二、if语句2.1单分支结构2.2 多分支结构2.4 if语句练习2.4.1 单分支2.4.2 简单的交互式分数反馈 三…

ubuntu切换python版本

在没有安装类似anoconda的管理工具的时候&#xff0c;我们常常会被Ubuntu下的Python版本切换问题所头疼。 可以使用update-alternatives工具进行python版本的任意切换 当使用update-alternatives工具来切换Ubuntu系统上的Python版本时&#xff0c;您实际上是在系统范围内选择…

PyTorch翻译官网教程-NLP FROM SCRATCH: CLASSIFYING NAMES WITH A CHARACTER-LEVEL RNN

官网链接 NLP From Scratch: Classifying Names with a Character-Level RNN — PyTorch Tutorials 2.0.1cu117 documentation 使用CHARACTER-LEVEL RNN 对名字分类 我们将建立和训练一个基本的字符级递归神经网络(RNN)来分类单词。本教程以及另外两个“from scratch”的自然…

【国赛清单】2023全国大学生电赛综合测试【总结】

综合测评简介 &#xff08;1&#xff09;综合测评是全国大学生电子设计竞赛评审工作中非常重要的一个环节&#xff0c;是“一次竞赛二级评审”工作中全国专家组评审工作的一部分。 &#xff08;2&#xff09;测试对象为赛区推荐上报全国评奖的优秀参赛队全体队员&#xff0c;…

轻松转换TS视频为MP4,实现优质视频剪辑体验

如果你是一个视频剪辑爱好者&#xff0c;你一定会遇到各种视频格式之间的转换问题&#xff0c;特别是将TS视频转换为MP4格式。别担心&#xff0c;我们的视频剪辑软件将为你提供最简单、高效的解决方案&#xff01; 首先第一步&#xff0c;我们要进入媒体梦工厂主页面&#xff…

Elasticsearch同时使用should和must

问题及解决方法 must和should组合查询&#xff0c;should失效。使用must嵌套查询&#xff0c;将should组成的bool查询包含在其中一个must查询中。 SearchRequest request new SearchRequest(); request.indices("function_log");SearchSourceBuilder sourceBuilde…

掌握Python的X篇_32_使用python编辑pdf文件_pdfrw

本篇介绍利用python操作pdf文件&#xff0c;我们平时也会有合并和拆分pdf的需求&#xff0c;此时我们就可以使用本节内容。 文章目录 1. pdfrw的安装2. 切分pdf文件3. pdfrw官网及实现一版四面的实例 1. pdfrw的安装 pip install pdfrw官网地址&#xff1a;https://github.co…

【设计模式】装饰器模式

装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种类型的设计模式属于结构型模式&#xff0c;它是作为现有的类的一个包装。 装饰器模式通过将对象包装在装饰器类中&#xff0c;以便动态地修改其行为…

51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 实验六 静态数码管显示

目录 前言 一、原理图及知识点介绍 1.1、数码管原理图&#xff1a; 二、代码分析 前言 第一个实验&#xff1a; 51单片机&#xff08;普中HC6800-EM3 V3.0&#xff09;实验例程软件分析 实验一 点亮第一个LED_ManGo CHEN的博客-CSDN博客 第二个实验&#xff1a;51单片机&am…

计算机竞赛 LSTM的预测算法 - 股票预测 天气预测 房价预测

0 简介 今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

Java进阶-Oracle(二十)(1)

&#x1f33b;&#x1f33b; 目录 一、Oracle 数据库介绍1、Oracle 的概述2、Oracle 的结构2、Oracle的功能 二、安装与卸载1、卸载2、安装 三、使用&#xff08;需要关注得只有下面这两个&#xff09;四、PLSQL 的简单使用五、DBeaver 的简单使用 一、Oracle 数据库介绍 1、O…

【深度学习】遗传算法[选择、交叉、变异、初始化种群、迭代优化、几何规划排序选择、线性交叉、非均匀变异]

目录 一、遗传算法二、遗传算法概述2.1 选择2.2 交叉2.3 变异 三、遗传算法的基本步骤3.1 编码3.2 初始群体的生成3.3 适应度评估3.4 选择3.5 交叉3.6 变异3.7 总结 四、遗传算法工具箱4.1 initializega4.2 ga4.3 normGeomSelect4.4 arithXover4.5 nonUnifMutation 五、遗传算法…

ASL国产CS5213 转VGA信号输出音频 替代AG6200安格芯片 HDMI to VGA(带音频)方案设计原理图

CS5213功能&#xff1a;HDMI转VGA带音频输出&#xff0c;专注于设计HDMI转VGA带音频输出。可替代AG6200 AG6201。 CS5213芯片是一个HDMI&#xff08;高清多媒体接口&#xff09;到VGA桥接芯片。 它将HDMI信号转换为标准VGA信号它可以在适配器、智能电缆等设备中设计。 Capst…

前端接口修改工具 Requestly具体操作

更新于2023年8月12日18:17:56&#xff0c;插件版本可能会变&#xff0c;界面可能会有所变化 插件下载地址&#xff1a;https://chrome.google.com/webstore/detail/requestly-open-source-htt/mdnleldcmiljblolnjhpnblkcekpdkpa 注意&#xff0c;必须用谷歌浏览器&#xff0c;…

Linux 文件编辑命令

一、三种模式介绍 命令模式 插入模式(编辑模式) 末行模式 二、模式切换 1.命令模式切换到插入模式 &#xff08;1&#xff09; a //进入到当前光标后开始编辑 &#xff08;2&#xff09; A //进入到当前光标所在行的行末开始编辑 &#xff08;3&#xff09;i //进入当前光…