尚硅谷redis7 63-69 redis哨兵监控之理论简介

63 redis哨兵监控之理论简介

什么是哨兵

master挂了如何办?从机原地待命。此时数据只能读取不能更新。因此需要:

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

哨兵的作用


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

如何使用哨兵

主从监控 监控主从redis库运行是否正常

        Sentinel 实时监控 Redis 的主从节点运行状态,检测节点是否宕机或失联。

消息通知 哨兵可以将故障转移的结果发送给客户端

        当发生主从切换后,Sentinel 会将新的主节点信息通知给客户端或相关服务,确保其连接到正确的主节点。

故障转移 如果Master异常,则会进行主从切换,将其中一个Slave作为新Master

        Sentinel 发现主节点(Master)宕机,并经多个 Sentinel 实例协商确认后,会自动将其中一个从节点(Slave)提升为新的主节点,并将其他从节点重新配置为复制新的主节点。

配置中心 客户端通过连接哨兵来获得当前Redis服务的主节点地址

        客户端可以通过连接 Sentinel 获取当前可用的主节点地址,而不需要手动修改配置,从而实现动态主节点发现。

64 redis哨兵监控之案例实操1

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

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

为什么要有 3 个 Sentinel 哨兵?

1.防止一个哨兵挂了,无法实现监控

2.基数好投票

Redis Sentinel 使用一种简单的共识机制来避免误判【有时候主机并不是真死了,可能是网络不好】。哨兵集群通过“投票”来决定主节点是否真的故障。这个过程称为:

故障主观判断(sdown) → 故障客观判断(odown)

  • 每个 Sentinel 实例独立判断主节点是否故障(sdown

  • 当大多数 Sentinel 都认为主节点不可用时,才会触发故障转移(odown)

Redis 集群中通常部署 3 个 Sentinel(哨兵),是为了实现高可用的主从切换机制。哨兵之间通过投票机制达成共识,判断主节点是否真的故障,并协调自动故障转移。3 个是最小可容忍 1 个故障的投票集,是安全性与资源使用的最佳平衡。

由于硬件问题,无法用6台机子去模拟过程,因此6379:master,6390、6381:slave。同时三个哨兵和6379共用一个主机。

先看看/opt目录下默认的sentinel.conf文件【哨兵配置文件】的内容

将此sentinel.conf文件拷贝到myredis文件夹下

重点参数项说明

bind:服务监听地址,用于客户端连接,默认本机地址

daemonize:是否以后台daemon方式运行

protected-mode:安全保护模式

port:端口

logfile:日志文件路径

pidfile:pid文件路径    用于指定 进程 ID 文件(PID 文件) 的保存路径。
dir:工作目录

设置要监控的Master服务器

sentinel monitor <master-name> <ip> <redis-port> <quorum>

参数说明
<master-name>主节点的名称(逻辑标识,可自定义)
<ip>要监控的主节点的 IP 地址
<redis-port>主节点的端口
<quorum>最少有多少个 Sentinel 认为主节点挂了,才会进行故障转移(投票数量)

sentinel auth-pass <master-name> <password> 配置主节点认证密码的重要命令,用于确保 Sentinel 在连接主节点时通过密码验证。

参数说明
<master-name>sentinel monitor 中配置的主节点名称保持一致
<password>主节点 Redis 的访问密码(即 requirepass 设置的密码)

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster myRedisPassword
这个配置告诉 Sentinel:
“连接并监控名为 mymaster 的主节点时,需要使用密码 myRedisPassword。”

61 redis哨兵监控之案例实操2 

我们知道,网络是不可靠的,有时候一个sentinel会因为网络堵塞而误以为一个master redis已经死掉了,在sentinel集群环境下需要多个sentinel互相沟通来确认某个master是否真的死了,quorum这个参数是进行客观下线的一个依据,意思是至少有quorum个sentinel认为这个master有故障,才会对这个master进行下线以及故障转移。因为有的时候,某个sentinel节点可能因为自身网络原因,导致无法连接master,而此时master并没有出现故障,所以,这就需要多个sentinel都一致认为该master有问题,才可以进行下一步操作,这就保证了公平性和高可用。

其他参数配置

  • sentinel down-after-milliseconds <master-name> <milliseconds>:
    • 指定多少毫秒之后,主节点没有应答哨兵,此时哨兵主观上认为主节点下线
  • sentinel parallel-syncs <master-name> <nums>:
    • 表示允许并行同步的slave个数,当Master挂了后,哨兵会选出新的Master,此时,剩余的slave会向新的master发起同步数据
  • sentinel failover-timeout <master-name> <milliseconds>:
    • 故障转移的超时时间,进行故障转移时,如果超过设置的毫秒,表示故障转移失败
  • sentinel notification-script <master-name> <script-path> :
    • 配置当某一事件发生时所需要执行的脚本
  • sentinel client-reconfig-script <master-name> <script-path>:
    • 客户端重新配置主节点参数脚本

66 redis哨兵监控之案例实操3

如果你使用的是 redis-sentinel 可执行文件(或者你有一个指向 redis-server 的符号链接,名为 redis-sentinel),你可以通过以下命令来以 Sentinel 模式运行:

redis-sentinel /path/to/sentinel.conf

否则,你也可以直接使用 redis-server 可执行文件,并通过 Sentinel 模式启动,如下所示:

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

哨兵默认监听 TCP 端口 26379,因此要让哨兵正常工作,你的服务器必须开放 26379 端口,以接收来自其他哨兵实例 IP 地址的连接。否则,哨兵之间将无法通信,也无法就该执行什么操作达成一致,故障转移也将无法进行。

本案例sentinel文件通用配置

由于机器硬件关系,我们的3个哨兵都同时配置进一台虚拟机中【例如:192.168.111.169】
sentinel26379.conf

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. 111. 169 6379 2
sentinel auth-pass mymaster 111111

配置项含义
bind 0.0.0.0监听所有网卡(对外可访问)
daemonize yes以守护进程方式运行(后台运行)
protected-mode no关闭保护模式(确保你已配置防火墙,否则不安全)
port 26379Sentinel 的监听端口,默认就是这个
logfile日志文件路径(建议确保 /myredis 目录存在)
pidfilePID 文件路径(注意你原来写的是 redis-sentine126379. pid,有空格和拼写错)
dirSentinel 持久化信息的工作目录
sentinel monitor配置要监控的主节点(名称、IP、端口、投票数)
sentinel auth-passSentinel 连接主节点使用的认证密码

sentinel26380.conf


sentinel26381.conf
请看一眼sentinel26379.conf、sentinel26380.conf、sentinel26381.conf我们自己填写的内容
master主机配置文件说明

67 redis哨兵监控之案例实操4

哨兵内容部分

启动3个哨兵,完成监控

redis-sentinel sentinel26379.conf -- sentinel
redis-sentinel sentinel26380.conf -- sentinel
redis-sentinel sentinel26381.conf -- sentinel

启动3个哨兵后再测试一次主从复制

原有的master挂了

        两台从机数据是否OK         ok
        是否会从剩下的2台机器上选出新的master         是,master变为6381
        之前down机的master机器重启回来,谁将会是新老大?会不会双master冲突?        重启回来会变为从机。

69 reids哨兵监控之案例实操6

broken pipe

6379突然断开后会报两种错误:

6379断开后,6380先是会报错,但过一会又能正常使用

这两种错误几乎是一样的原因

认识broken pipe

        pipe是管道的意思,管道里面是数据流,通常是从文件或网络套接字读取的数据。当该管道从另一端突然关闭时,会发生数据突然中断,即是broken.对于socket来说,可能是网络被拔出或另一端
的进程崩溃

解决问题

        其实当该异常产生的时候,对于服务端来说,并没有多少影响。因为可能是某个客户端突然中止了进程导致了该错误

总结 Broken Pipe
        这个异常是客户端读取超时关闭了连接,这时候服务器端再向客户端已经断开的连接写数据时就发生了broken pipe异常!

谁是master

6381被选为新master,上位成功,以前的6379从master降级变成了slave
6380还是slave,只不过换了个新老大6381(6379变6381),6380还是slave

注意!6379后续可能会变成从机,需要设置访问新主机的密码,请设置masterauth项访问密码为111111,不然后续可能报错master_link_status:down

对比配置文件

由于主机从机的位置互换,检查配置文件会发现里面有关主从机配置的参数也会发生改变:

文件的内容,在运行期间会被sentinel动态进行更改
Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换

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

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

相关文章

word文档格式规范(论文格式规范、word格式、论文格式、文章格式、格式prompt)

文章目录 prompt prompt [格式要求] - 字体&#xff1a;中文宋体小四&#xff1b;英文Times New Roman 12pt&#xff1b;标题黑体 - 行距&#xff1a;1.5倍&#xff08;段前段后0行&#xff09; - 边距&#xff1a;A4默认&#xff08;上下2.54cm&#xff0c;左右3.17cm&…

SpringBoot+tabula+pdfbox解析pdf中的段落和表格数据

一、前言 在日常业务需求中&#xff0c;往往会遇到解析pdf文件中的段落或者表格数据的需求。 常见的做法是使用 pdfbox 来做&#xff0c;但是它只能提取文本数据&#xff0c;没有我们在文件页面上面的那种结构化组织&#xff0c;文本通常是散乱的包含各种换行回车空格等格式&a…

【Elasticsearch】stored_fields

在 Elasticsearch 中&#xff0c;stored_fields 是一个非常重要的概念&#xff0c;主要用于控制文档存储和检索时的行为。以下是对 stored_fields 的详细解释&#xff1a; 1\. stored_fields 的作用 stored_fields 用于指定在检索文档时需要返回的字段。默认情况下&#xff0c;…

计算机网络 | 1.1 计算机网络概述思维导图

附大纲&#xff1a; 计算机网络的概念 一个通过通信设备与线路把不同计算机系统连接起来&#xff0c;实现资源共享和信息传递的系统 计算机网络的组成 从组成成分上 硬件&#xff1a;主机、通信链路、交换设备、通信处理机软件&#xff1a;网络操作系统、聊天软件等协议&…

HOW - 简历和求职面试宝典(三)

文章目录 1. 面试邀约2. 开始面试和自我介绍第一、面试前的准备工作第二、如何全面地介绍自己1. 面试邀约 第一、先认识日常HR 的工作流程 首先,电话沟通是 HR 核心工作内容的一部分。电话沟通分为两种:一种是电话预约;另外一种是电话确认。 电话预约很清晰,就是确认面试…

Java基础 Day24

一、进程和线程 1、进程 &#xff08;1&#xff09;概念 进程 (Process) 是计算机中的程序关于某数据集合上的一次运行活动 是系统进行资源分配的基本单位 简单理解&#xff1a;程序的执行过程&#xff08;正在运行的应用程序&#xff09; &#xff08;2&#xff09;特性…

C#学习:基于LLM的简历评估程序

前言 在pocketflow的例子中看到了一个基于LLM的简历评估程序的例子&#xff0c;感觉还挺好玩的&#xff0c;为了练习一下C#&#xff0c;我最近使用C#重写了一个。 准备不同的简历&#xff1a; 查看效果&#xff1a; 不足之处是现实的简历应该是pdf格式的&#xff0c;后面可以…

git怎么合并两个分支

git怎么合并分支代码 注意: 第一步你得把当前分支合到远程分支去才能有下面的操作 另外我是将develop分支代码合并到release分支去 git 命令 查看本地所有分支 git branch切换分支 例如切换到release分支 git checkout release拉取代码 git pull up release 合并分支 …

Android-kotlin协程学习总结

Kotlin协程实战对话​ ​真题1&#xff1a;协程与线程的本质区别是什么&#xff1f;为什么说协程是轻量级的&#xff1f;​​ ​面试官​&#xff1a; “我看你项目中用协程替代了线程池&#xff0c;能说说协程和线程的核心区别吗&#xff1f;为什么协程更适合高并发&#xf…

uni-app学习笔记十四-vue3中emit的使用

在组件传值中&#xff0c;无论是props还是slot都是单向数据流&#xff0c;父组件向子组件传值&#xff0c;子组件不能直接对父组件传过来的值进行重新赋值。 下面学习子组件向父组件传值的工具--emit。 在子组件emit设置传递的函数名和值 <template><view>子组件…

Java设计模式从基础到实际运用

第一部分&#xff1a;设计模式基础 1. 设计模式概述 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结&#xff0c;它描述了在软件设计过程中一些不断重复出现的问题以及该问题的解决方案。设计模式是在特定环境下解决软件设计问题…

鸿蒙OSUniApp 制作自定义的进度条组件#三方框架 #Uniapp

使用 UniApp 制作自定义的进度条组件 在移动应用开发中&#xff0c;进度条是非常常见的 UI 组件&#xff0c;无论是文件上传、下载、任务进度还是表单填写反馈&#xff0c;进度条都能为用户提供直观的进度提示。虽然 UniApp 提供了一些基础的进度条能力&#xff0c;但在实际项…

Python爬虫实战:研究Beautiful Soup框架相关技术

1. 引言 1.1 研究背景与意义 随着互联网的快速发展,网络上的数据量呈爆炸式增长。如何从海量的网页数据中高效提取有价值的信息,成为信息科学领域的重要研究课题。网络爬虫作为一种自动获取网页内容的技术,能够按照预设规则遍历互联网并采集数据,为信息检索、舆情分析、商…

【Tips】关于PCI和PCIe的配置空间差异和io/memory io读写

最近在看同事2023年讲的PCI基础课&#xff0c;感觉确实是豁然开朗了&#xff0c;赞美同事。 PCIe实际上是PCI的扩展&#xff08;extended&#xff09;&#xff0c;PCIe设备相当于是迭代升级产品。 而PCIe的配置空间基于PCI原有的0xFF&#xff08;256字节&#xff09;配置空间…

桂花网体育运动监测方案:开启幼儿园运动健康管理新篇章

在幼儿教育领域&#xff0c;运动能力的培养与健康监测始终是备受关注的核心环节。随着科技的飞速发展&#xff0c;如何科学、有效地监测幼儿的运动状态&#xff0c;成为了幼儿园教育者面临的一大挑战。桂花网体育运动监测方案凭借其高效、精准、智能化的特性&#xff0c;为幼儿…

Perforce P4产品简介:无限扩展+全球协作+安全管控+工具集成(附下载)

本产品简介由Perforce中国授权合作伙伴——龙智编辑整理&#xff0c;旨在带您快速了解Perforce P4版本控制系统的强大之处。 世界级无限可扩展的版本控制系统 Perforce P4&#xff08;原Helix Core&#xff09;是业界领先的版本控制平台&#xff0c;备受19家全球Top20 AAA级游…

pikachu靶场通关笔记08 XSS关卡04-DOM型XSS

目录 一、XSS原理 二、DOM型XSS 三、源码分析 1、进入靶场 2、XSS探测 3、源码分析 四、渗透实战 1、Payload1 2、Payload2 3、Payload3 本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关&#xff09;渗透集合&#xff0c;通过对XSS关卡源码的代码审计找到XSS风…

安全访问 std::tuple 的容错方法及气象领域应用

安全访问 std::tuple 的容错方法及气象领域应用 1. std::tuple 安全访问的核心问题 1.1 元组结构性问题&#xff08;编译时错误&#xff09; 当元组元素数量为空时&#xff08;std::tuple<>&#xff09;&#xff0c;任何访问元素的尝试都会导致编译错误​&#xff1a;…

Webug4.0靶场通关笔记03- 第3关SQL注入之时间盲注(手注法+脚本法 两种方法)

目录 一、源码分析 1.分析闭合 2.分析输出 &#xff08;1&#xff09;查询成功 &#xff08;2&#xff09;查询失败 &#xff08;3&#xff09;SQL语句执行报错 二、第03关 延时注入 1.打开靶场 2.SQL手注 &#xff08;1&#xff09;盲注分析 &#xff08;2&#xf…

【大模型学习网络互联】Memory-Mapped I/O MMIO语义与MEM语义

MMIO语义和MEM语义的区别 嗯&#xff0c;用户要求更详细地区分MMIO和MEM语义&#xff0c;看来之前的中文对比虽然系统但还不够深入。用户可能是嵌入式开发者或OS内核学习者&#xff0c;需要从硬件行为层面理解差异。 用户连续追问MMIO相关概念&#xff0c;说明ta在接触底层开发…