【Redis】哨兵

文章目录

  • 一、哨兵作用
  • 二、Redis哨兵架构
  • 三、哨兵运行流程和选举原理
    • 3.1、哨兵运行流程
    • 3.2、领导者哨兵的选举原理--Raft算法
  • 四、哨兵使用建议

哨兵巡查监控后台master主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,从而继续提供服务,俗称无人值守运维。


一、哨兵作用

  • 主从监控,监控主从redis库运行是否正常。
  • 消息通知,哨兵可以将故障转移的结果发送道客户端。
  • 故障转移,如果master异常,则进行 主从切换,将其中的一个salve作为新master
  • 配置中心,客户端通过链接哨兵来获得当前redis服务的主节点。

二、Redis哨兵架构

Panda
设置一个包含三台哨兵的集群和一个包含一主二从的集群
  • 3个哨兵:自动监控和维护集群,不存放数据
  • 1主2从:用于数据读取和存放

先配置一主二从集群
再配置三台哨兵的集群,并进行实验


三、哨兵运行流程和选举原理

3.1、哨兵运行流程

  • SDown主观下线
      SDown是单个sentinel自己主观上检测到的关于master的状态,从sentinel角度来看,如果发送了PING心跳后,在sentinel down-after-milliseconds给定的毫秒数内没有收到合法的回复,就达到了SDOWN的条件。

  • ODown客观下线
      ODown需要一定数量的sentinel,多个哨兵达成一致意见才能认为一个master客观上已经宕机了。因为有些时候某个sentinel节点因为自身问题无法连接master,master本身没有问题,这就需要多个sentinel一致认为该master有问题,才能进行下一步操作,保证了公平性和高可用。

  • 3.3、选举领导者哨兵
      当主节点被判断为客观下线后,各个哨兵节点会先选举出一个领导者哨兵节点,并由这领导者节点进行故障迁移。选举领导者哨兵的方式是Raft算法。

  • 3.4 领导者哨兵推动故障切换流程并选出新master
      选出新master的规则为,在剩余slave节点健康的前提下,

    • 比较slave优先级(replica-priority),高的成为master,一样的话下一步
    • 比较复制偏移量(replication offset),大的成为master,一样的话下一步
    • 比较run ID,最小的成为新master

      之后领导者哨兵使用slave of no one将选出的slave节点提升为master,领导者哨兵向其他slave发送命令,使剩余slave成为新的master节点的slave。
      当老master重新上线后,领导者哨兵会让原来的master降级为slave并恢复正常工作。

3.2、领导者哨兵的选举原理–Raft算法

  Raft算法的本质是先到先得,在一轮选举当中,哨兵A向哨兵B发送成为领导者的申请,如果B没有同意过其他哨兵,则同意A成为领导者。


四、哨兵使用建议

  • 哨兵节点应该为多个,且本身应该集群来保证高可用。
  • 哨兵节点的数量应该是奇数。
  • 各个哨兵节点的配置应该一致,比如内存大小等
  • 如果哨兵节点部署在Docker里面,要注意端口的正确映射
  • 哨兵集群+主从复制,并不能保证数据的零丢失,这是由于在master宕机后,哨兵选举新的master需要时间,在这段时间内无法向redis内写入数据,从而导致数据丢失。

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

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

相关文章

Spring MVC系列之九大核心组件

概述 Spring MVC是面试必问知识点其一,Spring MVC知识体系庞杂,有以下九大核心组件: HandlerMappingHandlerAdapterHandlerExceptionResolverViewResolverRequestToViewNameTranslatorLocaleResolverThemeResolverMultipartResolverFlashMa…

AWTK MODBUS Client channel 模型

名称:modbus_client_channel 功能:通过 modbus 协议访问远程 slave 设备上的数据,需要配合 modbus_client模型一起使用。用于将 modbus client 中的 channel 包装成view_model或者view_model_array 一般来说不需要,直接使用modbus…

施耐德 Unity Pro 编程软件导入导出变量

适用范围 施耐德中高端PLC,使用的编程软件为 UnityPro (最新版更名为 Ecostructure Control Expert) 中端 PLC:Premium,M340高端 PLC:Quantum,M580 导出/导入变量 导出变量可导出【变量和 FB…

[Android14] SystemUI的启动

1. 什么是System UI SystemUI是Android系统级应用,负责反馈系统及应用状态并与用户保持大量的交互。业务主要涉及的组成部分包括状态栏(Status Bar),通知栏(Notification Panel),锁屏(Keyguard),控制中心(Quick Setting)&#xff…

工业测径仪的应用场景和可靠性判断

关键字:线缆测径仪,圆棒测径仪,圆管测径仪,金属棒管测径仪,工业测径仪,智能测径仪 智能测径仪主要应用于以下领域: 金属加工:测量金属线材、棒材、管材等的直径。线缆制造:检测电线、电缆的直径。塑料管材生产:监控塑料管材的外…

ubuntu子系统密码忘记了,怎么办?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

App Inventor 2 网络微数据库你用对了吗?

本文假设你已经会使用网络微数据组件,网络数据库用于多用户系统数据的存储和读取。这里仅分享一下更多拓展知识,以及如何选择适合自己的服务器。 网络微数据组件默认(不修改的情况下)使用MIT的服务器,它的缺点是由于服…

Docker基本操作 容器相关命令

docker run:运行镜像; docker pause:暂停容器,会让该容器暂时挂起; docker unpauser:从暂停到运行; docker stop:停止容器,杀死进程; docker start:重新创建进程。 docker ps:查看所有运行的容器及其状态,默认只展…

笔记本硬盘坏了怎么把数据弄出来 笔记本硬盘数据恢复一般需要多少钱

现在办公基本都离不开笔记本电脑,就连学生写作业也大多是都在电脑上完成。硬盘作为电脑存储的重要组成部分,承载着存储文件和各类软件的重任。如果硬盘出现故障,基本上这台电脑就无法正常工作,同时我们可能面临丢失很多重要的数据…

面试经典150题——求根节点到叶节点数字之和

​ 1. 题目描述 2. 题目分析与解析 2.1 思路一——DFS 理解问题: 首先要理解题目的要求,即对于给定的二叉树,我们需要找出从根节点到所有叶子节点的所有路径,然后将每一条路径上的数字组成一个整数,最后求出这些整数…

数据治理和数据管理 傻傻分不清楚?

互联网时代,数据,这一无形资产,已成为现代企业的核心竞争力。如何高效地管理和利用数据,成为企业关注的焦点。在这个过程中,数据治理(Data Governance)和数据管理(Data Management&a…

Web-SpringBootWen

创建项目 后面因为报错,所以我把jdk修改成22,仅供参考。 定义类,创建方法 package com.start.springbootstart.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotati…