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,一经查实,立即删除!

相关文章

layui-表单(输入框)

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

芯片的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…

MQ:RabbitMQ

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

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

排序 排序算法分为交换类排序、插入类排序、选择类排序、归并类排序。 交换类排序 冒泡排序 冒泡排序的基本思想是&#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 简单载具路线 Waypoint 导航

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

用Python轻松转换PDF为CSV

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

【国产开源可视化引擎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 \…

《昇思25天学习打卡营第6天|网络构建》

文章目录 前言&#xff1a;今日所学&#xff1a;1. 定义模型类2. 模型层3. 模型参数 前言&#xff1a; 在第六节中我们学习了网络构建&#xff0c;了解了神经网络模型是由神经网络层和Tensor操作构成&#xff0c;我们使用的mindspore.nn中提供了常见的升级网络层的实现&#x…

在线图片转文字的软件,分享3种强大的软件!

在信息爆炸的时代&#xff0c;图片作为信息的重要载体之一&#xff0c;其内容往往蕴含着巨大的价值。然而&#xff0c;面对海量的图片信息&#xff0c;如何高效、准确地将其转化为文字&#xff0c;成为了许多人的迫切需求。今天&#xff0c;就为大家盘点几款功能强大的在线图片…

【python基础】—如何理解安装程序时要配置Widows和DOS操作系统中的path环境变量?

文章目录 前言一、环境变量是什么&#xff1f;二、为什么需要设置环境变量&#xff1f;三、配置anaconda的环境变量 前言 在安装一些程序的时候&#xff0c; 我们总是需要将安装路径配置到正在使用电脑的环境变量里。为什么要进行这一步呢&#xff1f;本文主要解释Widows和DOS…

特殊用途二极管+二极管故障检测+三极管(BJT)的工作原理+定时器的使用(小灯定时闪烁实现)

2024-7-5&#xff0c;星期五&#xff0c;17:27&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。今天没有什么特殊的事情发生&#xff0c;继续学习啦&#xff0c;加油加油&#xff01;&#xff01;&#xff01; 今日完成模电自选教材第二章内容的学习&#xff…

1-4 NLP发展历史与我的工作感悟

1-4 NLP发展历史与我的工作感悟 主目录点这里 第一个重要节点&#xff1a;word2vec词嵌入 能够将无限的词句表示为有限的词向量空间&#xff0c;而且运算比较快&#xff0c;使得文本与文本间的运算有了可能。 第二个重要节点&#xff1a;Transformer和bert 为预训练语言模型发…

【ABB】原点设定

【ABB】原点设定 操作流程演示 操作流程 操作轴回原点编辑电机校准偏移更新转速计数器 1.首先得了解机器手的轴&#xff0c;这里以6轴作参考。 注意先回456轴&#xff0c;后回123轴。 2.然后需要了解机器人关节运动模式&#xff0c;即选择如下两个模式。 3.注意机器人各轴移动…

QT的编译过程(底层逻辑)

qmake -project 用于从源代码生成项目文件&#xff0c;qmake 用于从项目文件生成 Makefile&#xff0c;而 make 用于根据 Makefile 构建项目。 详细解释&#xff1a; qmake -project 这个命令用于从源代码目录生成一个初始的 Qt 项目文件&#xff08;.pro 文件&#xff09;。它…

吃顿饭的时间,用AI开发一个应用官网

最早接触开发时做的第一个项目就是企业官网&#xff0c;到后来自己开始走上独立开发者的道路时&#xff0c;哪怕是开发面向消费者的移动端产品&#xff0c;在产品上架时也需要提供应用官网。 感觉&#xff0c;编程这件事情和官网开发&#xff0c;紧密相连。 过往为了追求开发效…

个人微信 微信营销系统

个人微信 微信营销系统 CRM系统