Redis---8---哨兵(sentinel)

Redis—8—哨兵(sentinel)

是什么

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

吹哨人巡查监控后台master主机是否故障,如果故障了根据*** 投票数 *** 自动将某一个从库转换为新主库,继续对外服务。

作用: 俗称,无人值守运维

1,监控redis运行状态,包括master和slave
2,当master down机,能自动将slave切换成新master

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

能干嘛

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

怎么玩(案例演示实战步骤)

  • Redis Sentinel 架构,前提说明

    • 三个哨兵 自动监控和维护集群,不存放数据,只是吹哨人

    • 1主2从 用于数据读取和存放

      • ​ 6379

      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不服就干

  1. /myredis目录下新建或者拷贝sentinel.conf文件,名字绝不能错

  2. 先看看/opt目录下默认的sentinel.conf文件的内容

  3. 重点参数项说明

    bind		服务监听地址,用于客户端连接,默认本机地址
    daemonize	是否以后台daemon方式运行
    protected-mode	安全保护模式
    port		端口
    logfile		日志文件路径
    pidfile		pid文件路径
    dir			工作目录================================哨兵      监控									法定投票数
    sentinel monitor <master-name> <ip> <redis-port> <quotum>设置要监控的master服务器quorum表示最少有几个哨兵认可“客观下线” ,同意故障迁移的法定票数。
    sentinel auth-pass <master-name> <password>		master设置了密码,连接master服务的密码。
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  4. 本次案例哨兵sentinel文件通用配置

    ​ 哨兵默认的端口号是26379

    26379:
    bind 0.0.0.0
    daemonize yes
    protected-mode no
    port 26379
    logfile "/myredis/sentinel26379.log"
    pidfile /var/run/redis-sentinel26379.pid
    dir /myredis
    sentinel monitor mymaster 192.168.137.132 6379 2
    sentinel auth-pass mymaster 924721
    26380:
    bind 0.0.0.0
    daemonize yes
    protected-mode no
    port 26379
    logfile "/myredis/sentinel26380.log"
    pidfile /var/run/redis-sentinel26380.pid
    dir /myredis
    sentinel monitor  mymaster 192.168.137.132 6389 2
    sentinel auth-pass mymaster 924721
    26381:
    bind 0.0.0.0
    daemonize yes
    protected-mode no
    port 26379
    logfile "/myredis/sentinel26381.log"
    pidfile /var/run/redis-sentinel26381.pid
    dir /myredis
    sentinel monitor  mymaster 192.168.137.136 6381 2
    sentinel auth-pass mymaster 924721

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  5. 先启动一主二从3个redis实例,测试正常的主从复制

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    6379这台机器要设置masterauth 是因为后续可能变成从机,需要设置访问新主机的密码,不然可能后续报错master_line_status:down

  6. 以下是哨兵内容部分=====

  7. 再启动三个哨兵,完成监控

    redis-sentinel /path/to/sentinel.conf	或
    redis-server /path/to/sentinel.conf --sentinel
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  8. 启动3个哨兵监控后在测试一次主从复制

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  9. 原有的master挂了

    • 手动关闭6379服务器,模拟master挂了

    • 问题思考

      1. ​ 两台从机数据是否ok?

      2. ​ 是否会从剩下的2台机器上选出新的master

      3. ​ 之前down机的master机器重启回来,谁将会是新老大?会不会双master冲突?

        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

        在本次案例中,6380被选为新master,上位成功

        以前的6379从master降级变成了slave

        6381还是slave,只不过换了个新老大6380

  10. 对比配置文件

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    master哨兵配置文件自动生成新增内容

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    master主配置文件会在最下面自动生成新增内容

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    结论:
    Master-Slave切换后,master_redis.conf、salve_redis.conf和sentinel.conf 的内容都会发生改变,即master_redis.conf会多一行slaveof的配置,sentinel.conf的监控目标会随之调换
    

    其他备注

    • ​ 生产都是不同机房不同服务器,很少出现3个哨兵全挂掉的情况
    • 可以同时监控多个master,一行一个。

哨兵运行流程和选举原理

当一个主从配置中的master失效之后,sentinel可以选举出一个新的master,用于自动接替原master的工作,主从配置中的其他redis服务器自动指向新的master同步数据,一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。

运行流程,故障切换

  • ​ 三个哨兵监控一主二从,正常运行中…

  • SDown主观下线(Subjectively Down)

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • ODown客观下线(Objectively Down)

    ODown需要一定数量的sentinel,多个哨兵达成一致意见才能认为一个master客观上已经宕掉

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 选举出领导者哨兵(哨兵中选出兵王)

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    当主节点被判断客观下线以后,各个哨兵节点会进行协商,先选举出一个领导者哨兵节点(兵王)并由该领导者节点,也即被选举出的兵王进行failover(故障迁移)
    
    日志文件:
    sdown master mymaster 192.168.137.132 6379		//主管下线
    odown master mymaster 192.168.137.132 6379 quorum 	2/2	//认为6379客观下线达到了两个票数
    new-epoch 1					//开始新的一轮选举
    +try-failover master mymaster 192.168.137.132 6379	//尝试故障迁移
    Sentinel new configuration saved on disk
    +vote-for-leader 哨兵一号ID 1		//选举兵王
    哨兵N号ID voted for 哨兵一号ID 1	//给哨兵一号选取兵王投取一票 
    哨兵M号ID voted for 哨兵一号ID 1	//给哨兵一号选取兵王投取一票 
    =======================
    +switch-master mymaster ......6379(IP)  .....6380(IP)	//交换master
    +slave slave ......6379 @ mymaster ......6380		//给新master6380 重新指定两个slave
    +slave slave ......6381 @ mymaster ......6380

    哨兵领导者–兵王是如何选出来的?---->Raft算法外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 由兵王开始推动故障切换流程并选出一个新master

    新主登基
    某个slave选举为新的master
    priority	值越小,优先级越高,默认是100
    规则:先比优先级高-----》再比复制偏移量大-----》RunID谁小(字典顺序,ASCII码)
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    群臣俯首
    执行slaveof no one命令让选出来的从节点成为新的主节点,并通过slaveof命令让其他节点成为其从节点。
    Sentinel leader会对选举出的新master执行slave no one操作,将其提升为master节点。
    Sentinel leader向其它slave发送命令,让剩余的slave成为新的master节点的slave。
    
    旧主拜服
    老master回来也认怂
    将之前已下线的老master设置为新选出的新master的从节点,当老master重新上线后,它会成为新master的从节点。
    Sentinel leader 会让原来的master降级为slave并恢复正常工作。
    

    小总结,上述的failover操作均由sentinel自己独自完成,完全无需人工干预。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

哨兵使用建议

哨兵节点的数量应为多个,哨兵本身应该集群,保证高可用。
哨兵节点的数量应该是奇数。(保证高可用,可投票)
各个哨兵节点的配置(硬件)应一致。
如果哨兵节点部署在Docker等容器里面,尤其要注意端口的正确应声。
哨兵集群+主从复制,并不能保证数据零丢失。

eader 会让原来的master降级为slave并恢复正常工作。


小总结,上述的failover操作均由sentinel自己独自完成,完全无需人工干预。[外链图片转存中...(img-5mwIEnTO-1719890634085)]## 哨兵使用建议

哨兵节点的数量应为多个,哨兵本身应该集群,保证高可用。
哨兵节点的数量应该是奇数。(保证高可用,可投票)
各个哨兵节点的配置(硬件)应一致。
如果哨兵节点部署在Docker等容器里面,尤其要注意端口的正确应声。
哨兵集群+主从复制,并不能保证数据零丢失。


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

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

相关文章

基于深度学习的异常行为检测

基于深度学习的异常行为检测是一种通过分析视频或传感器数据自动检测异常行为的技术&#xff0c;广泛应用于公共安全、工业监控、金融欺诈检测等领域。异常行为检测旨在识别与正常行为模式不同的异常活动&#xff0c;从而及时预警和采取措施。以下是关于这一领域的系统介绍&…

layui-表单(输入框)

1.基本使用方法 先写一个表单元素块 form 加上layui-form 里面写行区块结构&#xff0c;如下&#xff1a; 2.输入框选项 placeholder默认文本 autocomplete自动填充 lay-verify required必填

社交媒体原生应用开发:Facebook的创新之路

摘要 在数字化时代&#xff0c;社交媒体的原生应用开发已成为连接用户与平台的桥梁。Facebook作为全球领先的社交媒体平台&#xff0c;其原生应用的开发经验为行业提供了宝贵的参考。 关键词 社交媒体&#xff0c;原生应用开发&#xff0c;Facebook&#xff0c;用户体验&…

报错:CodeArts部署Java/SpringBoot/SpringCloud项目报错:Deploy task execution failed.

背景&#xff1a; 目前想要部署SpringCloud服务&#xff0c;使用页面传参的方式。但是传参后&#xff0c;部署报错。错误如下&#xff1a; [2024/06/28 18:09:29.114 GMT08:00] ok: [1_***.***.***.226] > { [2024/06/28 18:09:29.114 GMT08:00] "msg": &quo…

芯片的PPA-笔记

写在前面&#xff1a;这个仅记录自己对芯片PPA的一些思考&#xff0c;不一定正确&#xff0c;还请各位网友思辨的看待&#xff0c;欢迎大家谈谈自己的想法。 1 此次笔记的起因 记录的原因&#xff1a;自己在整理这段时间的功耗总结&#xff0c;又看到工艺对功耗的影响&#x…

Spring AOP源码篇二之 代理工厂ProxyFactory学习

了解AspectJ表达式以及PointCut、Advice、Advisor后&#xff0c;继续学习Spring AOP代理工厂 AspectJ表达式参考&#xff1a;Spring AOP之AspectJ表达式-CSDN博客 PointCut、Advice、Advisor参考&#xff1a;Spring AOP源码篇一之 PointCut、Advice、Advisor学习-CSDN博客 简单…

H5 Canvas实现转盘效果,控制指定数字

效果图 实现思路&#xff1a; 用Canvas画圆&#xff0c;然后再画扇形&#xff0c;然后中奖的开始用一张图片代替&#xff0c;点击的时候触发转动效果。 实现代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8"><tit…

前端文件预览汇总

一、vue中预览word、excel、pdf&#xff1a; vue-office vue-office支持多种文件(docx、excel、pdf)预览的vue组件库&#xff0c;支持vue2/3&#xff0c;也支持非Vue框架的预览。 特点&#xff1a; 一站式&#xff1a;提供word(.docx)、pdf、excel(.xlsx, .xls)多种文档在线…

C# 键值对的使用

在C#中&#xff0c;键值对&#xff08;Key-Value Pair&#xff09;通常在字典&#xff08;Dictionary<TKey, TValue>&#xff09;数据结构中使用&#xff0c;它允许你根据一个唯一的键&#xff08;Key&#xff09;来存储和检索一个值&#xff08;Value&#xff09;。下面…

MQ:RabbitMQ

同步和异步通讯 同步通讯: 需要实时响应,时效性强 耦合度高 每次增加功能都要修改两边的代码 性能下降 需要等待服务提供者的响应,如果调用链过长则每次响应时间需要等待所有调用完成 资源浪费 调用链中的每个服务在等待响应过程中,不能释放请求占用的资源,高并发场景下…

在Java项目中集成单元测试与覆盖率工具

在Java项目中集成单元测试与覆盖率工具 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 单元测试是软件开发中至关重要的一环&#xff0c;它用于验证代码在独立…

排序——交换类排序、插入类排序、选择类排序、归并类排序

排序 排序算法分为交换类排序、插入类排序、选择类排序、归并类排序。 交换类排序 冒泡排序 冒泡排序的基本思想是&#xff1a;从后往前&#xff08;或从前往后&#xff09;两两比较相邻元素的值。若A[ j - 1 ] > A[ j ]&#xff0c;则交换它们&#xff0c;直到序列比较…

commonjs、module 模块同时启动

怎样同时在一个项目中同时启动node服务和我们前端项目&#xff08;commonjs、module 模块同时启动&#xff09; 今天在使用node实现完增删改查的接口之后&#xff0c;将自己node代码嵌入到我们react项目中 启动完前端项目之后&#xff0c;当我使用node service.js的时候&#x…

Unity渲染管线介绍

Unity中的渲染管线渲染场景主要分为三个阶段 剔除&#xff08;Culling&#xff09; 剔除摄像机不可见对象&#xff08;视锥体剔除Frustum Culling&#xff09;和被遮挡对象&#xff08;遮挡剔除Occlusion Culling&#xff09;。 渲染&#xff08;Rendering&#xff09; 将可见…

Unity 简单载具路线 Waypoint 导航

前言 在游戏开发和导航系统中&#xff0c;"waypoint" 是指路径中的一个特定位置或点。它通常用于定义一个物体或角色在场景中移动的目标位置或路径的一部分。通过一系列的 waypoints&#xff0c;可以指定复杂的移动路径和行为。以下是一些 waypoint 的具体用途&…

用Python轻松转换PDF为CSV

数据的可访问性和可操作性是数据管理的核心要素。PDF格式因其跨平台兼容性和版面固定性&#xff0c;在文档分享和打印方面表现出色&#xff0c;尤其适用于报表、调查结果等数据的存储。然而&#xff0c;PDF的非结构化特性限制了其在数据分析领域的应用。相比之下&#xff0c;CS…

Three 颜色Color

构造器&#xff08;Constructor&#xff09; Color( r : Color_Hex_or_String, g : Float, b : Float ) r - (可选参数) 如果参数g和b被定义&#xff0c;则r表示颜色中的红色分量。 如果未被定义&#xff0c;r可以是一个十六进制 hexadecimal triplet 颜色值或CSS样式的字符串…

【国产开源可视化引擎Meta2d.js】图元

图元 又称画笔Pen。图形表达的基本元素&#xff0c;组成图像的基本单元。 构成 每一个图元由ID、名字、类型、属性&#xff08;数据&#xff09;组成。 ID 名为“id”的特殊属性&#xff0c;图元实例&#xff08;画布上的图元对象&#xff09;的唯一标识。拖拽到画布或创建…

【线性代数的本质】矩阵与线性变换

线性变化要满足两点性质&#xff1a; 直线&#xff08;连续的点&#xff09;在变换后还是直线。原点不变。 假设有坐标轴&#xff08;基底&#xff09; i ^ \widehat{i} i 和 j ^ \widehat{j} j ​&#xff1a; i ^ [ 1 0 ] , j ^ [ 0 1 ] \widehat{i}\begin{bmatrix} 1 \…

android Dialog沉浸式状态栏实现

在Android中&#xff0c;创建沉浸式状态栏通常意味着让状态栏背景与应用的主题颜色一致&#xff0c;并且让对话框在状态栏下面显示&#xff0c;而不是浮动。为了实现这一点&#xff0c;你可以使用以下代码片段&#xff1a; 首先&#xff0c;在你的Activity中设置状态栏为隐藏或…