最新Redis7哨兵模式(保姆级教学)

news2025/4/22 21:36:11

一定一定要把云服务器的防火墙打开一定要!!!!!!!!!否则不成功!!!!!!!!!

哨兵是什么

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

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​      

哨兵的作用

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

案例演示

前期准备

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

一主二从:用于数据读取和存放

由于个人经费有限,只有三台云服务器演示,这里我就将三台哨兵配置到6379这个服务器上

案例步骤

1、/myredis目录下新建或者拷贝sentinel.conf文件

2、配置文件修改

首先我们拷贝三份不同端口的代码:

我们进入每个代码使用vim filename

将内容删除复制以下内容:

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 主机名 62.234.60.208 6379 2
sentinel auth-pass 主机名 密码

解释一下最后两个配置文件作用:

sentinel monitor <master-name><redis-port> <quorum> 设置要监控的master服务器,quorum表示最少有几个哨兵认可客观下线同意故障迁移的法定票数

master设置了密码,连接master服务的密码

 先启动一主二从三个redis实例,则是正常的主从复制

这里我们不能忘记之前主机的配置,6379后续可能会变成从机,需要设置访问新主机的密码, 请设置masterauth项访问密码你其他机器所设置密码

master主机配置文件汇总

哨兵 启动

先启动三个哨兵,完成监控 redis-sentinel sentinel26379.conf --sentine

启动三个哨兵之哦胡在测试一侧主从复制

原有的master挂了

我们这里手动关闭6379服务器,模拟master挂了

此时我们可以等待一下,哨兵投票

此时我们可以看出,当主机down之后从机6381上位

我们看一下sentinel26379.log的日志

这是一段Redis Sentinel的日志,它记录了Redis服务器和Sentinel的一些状态变化。以下是一些关键事件的解释:

  1. sdown(主观下线):Sentinel认为某个服务器无法访问,可能是网络问题或者服务器崩溃。
  2. Redis is starting:Redis服务器正在启动。
  3. Warning: Could not create server TCP listening socket 0.0.0.0:26379: bind: Address already in use:Redis Sentinel试图在端口26379上启动,但是这个端口已经被其他进程使用了。
  4. +new-epoch:Sentinel开始了新的纪元,这通常意味着主服务器失效,Sentinel正在选举新的主服务器。
  5. +vote-for-leader:Sentinel投票选举新的领导者。
  6. +switch-master:Sentinel已经将主服务器从一个服务器切换到另一个服务器。
  7. +slave:Sentinel识别到一个新的从服务器。

以下是这段Redis Sentinel日志中每一行的解释:

  1. 4346:X 30 Dec 2023 20:25:14.957 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo:Redis服务器(PID为4346)正在启动。

  2. 4346:X 30 Dec 2023 20:25:14.957 # Redis version=7.0.14, bits=64, commit=00000000, modified=0, pid=4346, just started:显示Redis服务器的版本信息,位数,提交哈希,修改状态,进程ID和启动状态。

  3. 4346:X 30 Dec 2023 20:25:14.957 # Configuration loaded:Redis服务器已成功加载配置文件。

  4. 4346:X 30 Dec 2023 20:25:14.958 * monotonic clock: POSIX clock_gettime:Redis服务器正在使用POSIX的clock_gettime函数作为其单调时钟源。

  5. 4346:X 30 Dec 2023 20:25:14.958 # Warning: Could not create server TCP listening socket 0.0.0.0:26379: bind: Address already in use:Redis服务器试图在端口26379上创建一个TCP监听套接字,但是这个端口已经被其他进程使用了。

  6. 4346:X 30 Dec 2023 20:25:14.958 # Failed listening on port 26379 (TCP), aborting.:由于无法在端口26379上监听,Redis服务器正在终止。

  7. 26979:X 30 Dec 2023 20:25:58.361 # +sdown master mymaster 62.234.60.208 6379:Sentinel进程(PID为26979)报告主服务器(别名为mymaster,IP地址为62.234.60.208,端口号为6379)已经主观下线。

  8. 26979:X 30 Dec 2023 20:25:58.487 * Sentinel new configuration saved on disk:Sentinel进程已经将新的配置保存到磁盘上。

  9. 26979:X 30 Dec 2023 20:25:58.487 # +new-epoch 893:Sentinel进程已经开始了新的纪元(Epoch),编号为893。

  10. 26979:X 30 Dec 2023 20:25:58.493 * Sentinel new configuration saved on disk:Sentinel进程已经将新的配置保存到磁盘上。

  11. 26979:X 30 Dec 2023 20:25:58.494 # +vote-for-leader a380684d19db383c3e7110c9aee4af069db632d2 893:Sentinel进程正在为领导者(ID为a380684d19db383c3e7110c9aee4af069db632d2)投票,纪元编号为893。

  12. 26979:X 30 Dec 2023 20:25:59.395 # +config-update-from sentinel a380684d19db383c3e7110c9aee4af069db632d2 62.234.60.208 26381 @ mymaster 62.234.60.208 6379:Sentinel进程已经从另一个Sentinel(ID为a380684d19db383c3e7110c9aee4af069db632d2,IP地址为62.234.60.208,端口号为26381)那里更新了配置。

  13. 26979:X 30 Dec 2023 20:25:59.395 # +switch-master mymaster 62.234.60.208 6379 121.43.60.247 6381:Sentinel进程已经将主服务器从62.234.60.208:6379切换到了121.43.60.247:6381。

  14. 26979:X 30 Dec 2023 20:25:59.395 * +slave slave 118.31.6.132:6380 118.31.6.132 6380 @ mymaster 121.43.60.247 6381:Sentinel进程识别到一个新的从服务器(IP地址为118.31.6.132,端口号为6380)。

  15. 26979:X 30 Dec 2023 20:25:59.395 * +slave slave 62.234.60.208:6379 62.234.60.208 6379 @ mymaster 121.43.60.247 6381:Sentinel进程识别到一个新的从服务器(IP地址为62.234.60.208,端口号为6379)。

  16. 26979:X 30 Dec 2023 20:25:59.400 * Sentinel new configuration saved on disk:Sentinel进程已经将新的配置保存到磁盘上。

哨兵运行流程和选举原理

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

运行流程

三个哨兵监控一主二从运行中->主管下线->客观下线->选出领导者哨兵->由领导者哨兵确定新master

主观下线

SDown(主观下线)单个Sentinel实例对服务器做出的下线判断,即单个sentinel认为某个服务下线(有可能是接收不到订阅,之间的网络不通等等原因)。主观下线就是说如果服务器在[sentinel down-after-milliseconds]给定的毫秒数之内没有回应PING命令或者返回一个错误消息, 那么这个Sentinel会主观的(单方面的)认为这个master不可以用了

sentinel down-after-milliseconds <masterName> <timeout>

 表示master被当前sentinel实例认定为失效的间隔时间,这个配置其实就是进行主观下线的一个依据

master在多长时间内一直没有给Sentine返回有效信息,则认定该master主观下线。也就是说如果多久没联系上redis-servevr,认为这个redis-server进入到失效(SDOWN)状态。

客观下线

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

quorum这个参数是进行客观下线的一个依据,法定人数/法定票数

意思是至少有quorum个sentinel认为这个master有故障才会对这个master进行下线以及故障转移。因为有的时候,某个sentinel节点可能因为自身网络原因导致无法连接master,而此时master并没有出现故障,所以这就需要多个sentinel都一致认为该master有问题,才可以进行下一步操作,这就保证了公平性和高可用。

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

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

相关文章

性能测试-jmeter:安装 / 基础使用

一、理解jmeter 官网-Apache JMeter-Apache JMeter™ JMeter是一款开源的性能测试工具&#xff0c;主要用于模拟大量用户并发访问目标服务器&#xff0c;以评估服务器的性能和稳定性。 JMeter可以执行以下任务序号用途描述1性能测试通过模拟多个用户在同一时间对服务器进行请…

go的json数据类型处理

json对象转slice package mainimport ("encoding/json""fmt""github.com/gogf/gf/container/garray" )func main() {// JSON 字符串jsonStr : ["apple", "banana", "orange"]//方法一&#xff1a;// 解析 JSON 字…

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验

目录 三、硬件部分 【1】点灯实验 【2】按键控制灯实验 【3】uart串口实验 核心代码&#xff1a; 实验视频 实现流水灯 uart串口实验 三、硬件部分 GPIO 【1】点灯实验 1.首先找到要点的灯&#xff0c;在板子上看到对应的白色丝印&#xff0c;比如绿灯D10.然后打开底板…

C语言-环境搭建

文章目录 内容Notepad的安装gcc编译工具的配置 编写软件的安装&#xff1a;软件传送门&#xff1a;Notepad软件选择一个合适的路径&#xff0c;一键傻瓜式安装即可 编译工具gcc在windows环境下的配置&#xff1a;解压gcc编辑工具包解压出来的mingw64文件放到一个合适的磁盘路径…

CSS之元素转换

我想大家在写代码时有一个疑问&#xff0c;块级元素可以转换成其他元素吗&#xff1f; 让我为大家介绍一下元素转换 1.display:block(转换成块元素) display&#xff1a;block可以把我们的行内元素或者行内块元素转换成块元素 接下来让我为大家演示一下&#xff1a; <!DO…

车载电子电器架构 —— 电子电气系统开发角色定义

车载电子电器架构 —— 电子电气系统开发角色定义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 注:本文12000字,深度思考者进!!! 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的…

一.windows2012搭建fpt服务器和常见端口介绍

一.windows2012搭建fpt服务器和常见端口介绍 1.打开防火墙2.创建组2.1打开计算机管理2.2创建组并且设置名称和描述 3.创建用户3.1设置用户密码和名称3.2把用户归属于组3.3把user删除掉3.4点击添加然后点高级3.5点击立即查找选择之前设定的组 4.安装ftp服务器4.1点击添加角色和功…

基于metersphere和supper-jacoco 测试覆盖率落地实践

一、背景及目标 背景 1、技术研发流程为测试 提供冒烟用例-开发根据用例自测-提测-开始测试&#xff0c;这一套流程&#xff0c;但是中间开发是否真实执行冒烟&#xff0c;测试并不知晓&#xff0c;而且测试提供冒烟用例是否符合标准也没法进行量化 2、公司产品属于saas产品&…

搞知识竞赛活动要做哪些准备工作

举办知识竞赛&#xff0c;大量的精力和时间投入是在筹划准备阶段。诸如竞赛的策划布置、题库的设计建立、参赛人员的复习准备、竞赛器具的购置、赛场的布置安装、对各环节的督促检验等一系列工作&#xff0c;都是在此期间进行和完成的。无论哪一环节出现疏漏偏差&#xff0c;都…

Android Studio配置国内镜像源和HTTP代理/解决:Android Studio下载gradle速度慢的问题

&#xff08;方案一&#xff09;Android Studio配置国内镜像源和HTTP代理 一、配置国内镜像源/依赖库 1.1 打开项目的setting.gradle.kts文件 配置进去 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https:…

LinuxShell

一、 新建用户 在Linux上新建一个用户并赋予超级用户权限&#xff0c;建立家目录并设置默认shell为bash&#xff0c;并设置Linux在输入sudo密码时显示星号。请提交全部命令及输出截图&#xff08;表明完成需求即可&#xff09;。 1.sudo useradd -m ymhs(用户名) 增加用户 2.su…

linux文件夹介绍

在linux内核文件夹下面存在着许多文件夹&#xff0c;那么那些文件夹是什么用处呢&#xff0c;下面将为你介绍。 (1)documentation 这个文件夹下没有内核代码&#xff0c;仅仅有一套实用的文档&#xff0c;但这些文档的质量不一。比如内核文档的文件系统&#xff0c;在该文件夹下…

vue保姆级教程----组件之间的参数传递

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

4.33 构建onnx结构模型-Expand

前言 构建onnx方式通常有两种&#xff1a; 1、通过代码转换成onnx结构&#xff0c;比如pytorch —> onnx 2、通过onnx 自定义结点&#xff0c;图&#xff0c;生成onnx结构 本文主要是简单学习和使用两种不同onnx结构&#xff0c; 下面以 Expand 结点进行分析 方式 方法一…

【算法】哈希算法和哈希表

一、哈希算法 哈希算法是一种将任意长度的数据&#xff08;也称为“消息”&#xff09;转换为固定长度字符串&#xff08;也称为“哈希值”或简称“哈希”&#xff09;的数学函数或算法。这个固定长度的字符串是由输入数据通过一系列的运算得到的&#xff0c;并且具有一些重要…

FileZilla的使用以及主动模式跟被动模式

目录 FileZilla的安装 下载路径 安装 FileZilla的基本使用 添加组 添加用户 设置权限 测试 开始测试 FileZilla的主动模式及被动模式 主动模式&#xff08;Active Mode&#xff09; 被动模式&#xff08;Passive Mode&#xff09; 思维导图 ​编辑 FileZilla的安装 下载…

高频面试题:合并两个List并去重

欢迎关注微信公众号&#xff1a;互联网全栈架构 合并两个List中并去掉重复的元素&#xff0c;有好几种方法&#xff0c;我们来看看常见的三种&#xff1a; 一、使用HashSet HashSet是一个没有重复元素的集合&#xff0c;可以利用这个特性&#xff0c;把List中的元素逐一添加到H…

数据结构【线性表篇】(一)

数据结构【线性表篇】(一&#xff09; 文章目录 数据结构【线性表篇】(一&#xff09;前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f; 目录一、顺序表(一)、顺序表的定义(二)、顺序表的插入删除(三)、顺序表的查找 二、完整代码(一)、顺序表的…

C语言-第十七周做题总结-数组2

id&#xff1a;464 A.求矩阵各行元素之和 题目描述 本题要求编写程序&#xff0c;求一个给定的mn矩阵各行元素之和。 输入 输入第一行给出两个正整数m和n&#xff08;1≤m, n≤6&#xff09;。随后m行&#xff0c;每行给出n个整数&#xff0c;其间以空格分隔。 输出 每行…

元旦档首日票房超4.69亿,“下雪场尴尬”上热搜!

哇塞&#xff0c;元旦假期终于来啦&#xff01;&#x1f389;在这个喜庆的时刻&#xff0c;电影院也热闹非凡&#xff0c;据猫眼专业版数据显示&#xff0c;截至12月30日&#xff0c;2023年元旦档首日票房竟然超过了4.69亿&#xff01;这简直是个天文数字啊&#xff01;&#x…