Redis 如何使用 Sentinel 构建主从复制的高可用架构?

news/2024/5/9 9:09:51/文章来源:https://blog.csdn.net/chenfei3306/article/details/130032526

文章目录

  • Redis 如何使用 Sentinel 构建主从复制的高可用架构?
    • 什么是 Sentinel 服务?
    • 如何配置 Sentinel 集群服务?
      • 启动 Sentinel 服务
      • 配置说明
    • 测试主节点失效
      • 查看 Sentinel 主节点服务状态
      • 查看 Sentinel 从节点服务状态
      • 模拟主节点失效
      • 观察各个 Sentinel 执行情况
      • 查看此时的 Sentinel 主从节点相关信息
        • 查看主节点信息
        • 查看从节点信息
      • 观察 Sentinel 配置文件

Redis 如何使用 Sentinel 构建主从复制的高可用架构?

在 Redis 如何配置读写分离架构(主从复制)? 篇中,介绍了 Redis 主从复制的架构,该架构能够提升系统整体的吞吐量,但是也有其弊端,就是在主节点失效时,系统并不能自动完成故障的转移,也就是系统不能够自动将从节点提升为主节点,继续提供服务。

什么是 Sentinel 服务?

Sentinel 服务是 Redis 的高可用架构方案,用来解决主从复制场景下,从节点无法自动提升为主节点的问题。

Sentienl 服务的四大能力:

  • 监控:Sentinel 总是不间断的检查主从节点是否按照预期工作。
  • 通知:Sentinel 可以通过 Api 来通知系统管理员或者计算机程序,某个监控的 Redis 实例出现错误。
  • 自动故障转移:当主节点发生故障时,Sentinel 可以提升一个从节点为新的主节点,并通知应用程序使用新的地址。
  • 配置提供:客户端可以通过 Sentinel 来获取权威的地址信息。

如何配置 Sentinel 集群服务?

以下面这张图为例,进行 Redis Sentinel 集群服务的配置。

在这里插入图片描述

在配置 sentinel 之前,请先按照 Redis 如何配置读写分离架构(主从复制)? 篇中的方式,配置好相关主从节点,并启动 Redis 服务。

启动 Sentinel 服务

按照如下的配置来进行 Sentinel 服务的启动。

# 分别在三台主机的在 /etc 目录下新建 redis-sentinel-26379.conf 文件,并写入如下配置vim /etc/redis-sentinel-26379.confport 26379
sentinel monitor mymaster 10.211.55.6 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1# 保存配置,调用 Sentinel 启动命令
redis-sentinel /etc/redis-sentinel-26379.conf

当然,Sentinel 集群服务可以监控多个 Redis 主从节点,需要使用不同的 master 名称。

配置说明

sentinel monitor <master-name> <ip> <port> <quorum>
  • master-name:给主节点起一个名称。
  • ip:主节点 Redis 的 ip 地址。
  • port: 主节点 Redis 的端口。
  • quorum:表示多少个 Sentinel 服务标记主节点失效,进而执行失效转移。
sentinel down-after-milliseconds mymaster 5000
  • down-after-milliseconds:主节点在配置的毫秒内不可达,则认为主节点下线。
sentinel failover-timeout mymaster 60000
  • failover-timeout:失效转移的超时时间(毫秒)。
sentinel parallel-syncs mymaster 1
  • parallel-syncs:从节点并行同步节点数,数值越小,失效转移完成的时间就越长。数值越大,同时执行同步的从节点就多,在从节点加载新的主节点数据时,会暂时地不可用,进而导致应用程序不可用。

测试主节点失效

查看 Sentinel 主节点服务状态

# 登陆 Sentinel 控制台
redis-cli -h 10.211.55.6 -p 26379# 执行查看主节点相关数据信息
sentinel master mymaster

得到 Sentinel 主节点的类似的服务数据,如下所示:

10.211.55.6:26379> sentinel master mymaster1) "name"2) "mymaster"3) "ip"4) "10.211.55.6"5) "port"6) "6379"7) "runid"8) "1ecf4dbb8462c9df46a9fd39a969785977a304b5"9) "flags"
10) "master"
11) ...

查看 Sentinel 从节点服务状态

# 登陆 Sentinel 控制台
redis-cli -h 10.211.55.6 -p 26379# 执行查看主节点相关数据信息
sentinel slaves mymaster

得到 Sentinel 从节点的类似的服务数据,如下所示:

10.211.55.6:26379> sentinel slaves mymaster
1)  1) "name"2) "10.211.55.7:6379"3) "ip"4) "10.211.55.7"5) "port"6) "6379"7) "runid"8) "01e6f30fe1ac851f5524881af46fd60b8b360a0b"9) "flags"10) "slave"11) ...
2)  1) "name"2) "10.211.55.8:6379"3) "ip"4) "10.211.55.8"5) "port"6) "6379"7) "runid"8) "d1266d1148e133c06a9543147f3b65f2e4c27e9a"9) "flags"10) "slave"11) ...

模拟主节点失效

登陆在 10.211.55.6 主机的 Redis 控制台,执行如下命令,模拟主节点不可用。

# 登陆 Redis 控制台,注意使用 6379 端口,而不是 26379
redis-cli -h 10.211.55.6 -p 637910.211.55.6:26379> debug sleep 120

观察各个 Sentinel 执行情况

这里就不在赘述了,可自行进行观察。

查看此时的 Sentinel 主从节点相关信息

查看主节点信息

可以发现 master 节点的 ip 已经从 10.211.55.6 改变为 10.211.55.7。

10.211.55.6:26379> sentinel master mymaster1) "name"2) "mymaster"3) "ip"4) "10.211.55.7"5) "port"6) "6379"7) "runid"8) "01e6f30fe1ac851f5524881af46fd60b8b360a0b"9) "flags"
10) "master"
11) ...

查看从节点信息

注意 10.211.55.6 节点,状态是s_down,slave,说明已经失效了

10.211.55.6:26379> sentinel slaves mymaster
1)  1) "name"2) "10.211.55.8:6379"3) "ip"4) "10.211.55.8"5) "port"6) "6379"7) "runid"8) "d1266d1148e133c06a9543147f3b65f2e4c27e9a"9) "flags"10) "slave"11) ...
2)  1) "name"2) "10.211.55.6:6379"3) "ip"4) "10.211.55.6"5) "port"6) "6379"7) "runid"8) ""9) "flags"10) "s_down,slave"11) ...

观察 Sentinel 配置文件

由于 Sentinel 会重写 redis-sentinel-26379.conf 配置文件,所以可以发现此时的配置文件中的主节点的 ip 已经发生了变化。

sentinel monitor mymaster 10.211.55.7 6379 2

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

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

相关文章

Unity实战篇 | 使Unity打包的exe程序始终保持屏幕最前端【文末送书】

&#x1f3ac; 博客主页&#xff1a;https://xiaoy.blog.csdn.net &#x1f3a5; 本文由 呆呆敲代码的小Y 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;Unity系统学习专栏 &#x1f332; 游戏制作专栏推荐&#xff1a;游戏制作 &…

Winform控件开发(28)——ToolTip(史上最全)

前言: 该控件的作用是在鼠标移动到控件上方时,弹出一个提示框,效果如下: 利用方法SetToolTip将工具提示和控件绑定 toolTip1.SetToolTip(button1 ,"提示1");一、属性 1、Name 获取控件对象 2、Active 为true时,工具提示才有效 3、AutomaticDelay 设置该…

第一章:part1监督学习:回归

线性回归&#xff08;linear regression model&#xff09; 线性回归模型 回归&#xff1a;可以预测数字作为输出 是一种特殊的监督学习模型 例&#xff1a;通过已知的房价来拟合曲线 可以求得英尺的价格 区别回归与分类&#xff1a;分类的输出结果一般为离散的&#xff0c;并…

Python第二章---列表简介

1、列表是什么&#xff1f; 在Python中用 [ ] 表示列表&#xff0c;用 逗号 , 分隔元素 每个元素用对应类型的方法标注&#xff0c;如字符串类型用单引号‘ ’标注 形如 list1 [a,b,c] print(list1); 输出时&#xff0c;会打印全部内容&#xff0c;包括符号 访问列表元…

Linux系统操作命令

1.linux目录结构 不同于 Windows 系统的⽂件路径的起点是盘符, Linux 系统的路径起点是/(根⽬录) 注意: - 1. / 为根⽬录, 是所有⽂件的路径的起点 - 2. 根⽬录下的所有第⼀层级的⽂件夹, 均不能随意进⾏修改操作 - 3. 掌握常⽤⽬录的作⽤即可 - 4. / 根⽬录, /home 普通⽤户…

AI助手帮你轻松做好Imagenet数据集重命名与复制

AI助手帮你轻松做好Imagenet数据集重命名与复制 任务需求 我们对Imagenet数据集进行了水下的退化处理&#xff0c;保存的数据集所有图片的深度图&#xff0c;格式为.npy。但是命名存在一些问题&#xff0c;现有格式为&#xff1a;n02009912_1916.JPEG.npy&#xff0c;需要更改…

哪个网站的电子书最多?

程序员宝藏库&#xff1a;https://gitee.com/sharetech_lee/CS-Books-Store 随便找一个电子书导航&#xff0c;就会给你提供几十个电子书下载网站。 然而&#xff0c;当真正用到时会发现&#xff0c;质量层次不齐&#xff0c;在绝大多数时候试遍几十个网站都找不到自己想要的书…

【蓝桥杯算法模板题--蓝桥题库Java】

PDF下载地址&#xff1a;点击即可 文章目录算法模板1 排序&#xff08;ArrayList&#xff0c;sort&#xff09;题目描述输入描述输出描述输入输出样例示例 1运行限制2 小明的彩灯&#xff08;差分&#xff09;输入输出样例示例 1运行限制3 绝世武功&#xff08;二阶差分算法&am…

「STM32入门」TIM输出比较

输出比较的简介 输出比较英文写作OC (Output Compare) 输出比较可以通过比较CNT和CCR寄存器值的关系&#xff0c;来对输出电平进行置高或者置低或者翻转的操作&#xff0c;用于输出一定频率和占空比的PWM波形常见应用例子如&#xff1a;呼吸灯&#xff0c;调速电机等CCR&#x…

2023年第十四届蓝桥杯javaB组省赛真题

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;练习时长两年半的java博主 &#x1f4d6;个人主页&#xff1a;君临๑ &#x1f39e;️文章介绍&#xff1a;2023年第十四届蓝桥杯javaB组省赛真题 &#x1f389;所属专栏&#xff1a;算法专栏 &#x1f381; ps&#xff1a;点…

计算机网络复习——第二章 2.3

2.3物理层下面的传输媒体 传输媒体是数据传输系统中在发送器和接收器之间的物理通路。 两大类&#xff1a; 导引型传输媒体&#xff1a;电磁波被导引沿着固体媒体&#xff08;铜线或光纤&#xff09;传播。 非导引型传输媒体&#xff1a;指自由空间。非导引型传输媒体中电磁…

IDEA修改关键字和注释颜色

IDEA修改关键字和注释颜色 目录IDEA修改关键字和注释颜色1.修改关键字的默认颜色2.修改注释的默认颜色2.1 修改单行注释的颜色2.2 修改多行注释的颜色2.3 修改文档注释的颜色很多小白在刚刚使用IDEA的时候还不是很熟练 本文主要给大家提供一些使用的小技巧&#xff0c;希望能帮…

推荐系统:基础知识总结

itemCF的召回实践及其在信息流推荐中的应用1.1 推荐系统中的召回基本范式&#xff1f;1.2 为何要进行召回&#xff1f;1.3 召回传统方式有哪些&#xff1f;2. itemCF类召回2.1 从哪几个方向理解item CF2.2 通用建模方式还有哪些&#xff1f;3.ItemCF实践3.1 在信息流中如何抽取…

QT学习笔记(语音识别项目 )

语音识别项目 我们知道 AI 智能音箱已经在我们生活中不少见&#xff0c;也许我们都玩过&#xff0c;智能化非常高&#xff0c;功能 强大&#xff0c;与我们平常玩的那种蓝牙音箱&#xff0c;Wifi 音箱有很大的区别&#xff0c;AI 智能在哪里呢&#xff1f;语音识别技 术和云端…

AR实战-基于Krpano的多场景融合及热点自定义

背景 在之前的博客中&#xff0c;曾经介绍了关于Krpano的相关知识&#xff0c;原文&#xff1a;全景自动切片技术-krpano初识。简单讲解了基于krpano1.19-pr13下单张全景照片的处理与展示。随着实景中国在各地的落地生根&#xff0c;三维园区、三维景区、三维乡村等等需求的集中…

【中土世界】贝烈瑞安德简介

一、Map of Beleriand and the Land to the North 该地图为托尔金之子&#xff0c;克里斯托弗托尔金所手绘&#xff0c;描绘了第二纪元&#xff0c;中洲西北的贝烈瑞安德&#xff08;Beleriand&#xff09;的景象。从下图可以直观地看出&#xff0c;贝烈瑞安德在中洲的相对位置…

【蓝桥杯嵌入式】第十四届蓝桥杯嵌入式省赛[第一场]程序设计题以及详细题解

文章目录原题展示原题分析原题题解LED相关LCD相关按键相关ADC相关定时器相关PWM输入捕获小结文章福利原题展示 原题分析 今年的第一场比赛绝对np,官方将串口直接省掉了&#xff0c;将其替换成很多小功能&#xff0c;如&#xff1a;切换计时、频率均匀变化、锁机制等等&#xff…

【数据结构】--并查集

目录 一、概念 ​编辑 二、应用场景--“连接”问题&#xff08;属于同一Qu 三、实现思路 四、如何存储数据 五、定义接口 1.初始化&#xff08;init&#xff09; 2.其他 isSame&#xff08;&#xff09; 六、抽象类 六、Quick Find【v1 所在集合的所有元素都指向 v2 的…

45-Dockerfile-ARG/ENV指令

AGR/ENV指令前言ARG作用格式说明生效范围使用示例ENV作用格式说明使用环境变量使用示例ARG 和 ENV 的区别前言 本篇来学习下Dockerfile中的AGR/ENV指令 ARG 作用 定义一个可以在构建镜像时使用的变量 格式 ARG <name>[<default value>]说明 在执行 docker b…

SpringBoot学习笔记(四)

SpringBoot整合quartz 任务 定时任务是企业级应用中的常见操作市面上流行的定时任务技术: Quartz、 Spring Task 相关概念: 工作(Job):用于定义具体执行的工作工作明细(JobDetail):用于描述定时工作相关的信息触发器(Trigger):用于描述触发工作的规则,通常使用cron表达式定…