当前位置: 首页 > news >正文

深刻理解Redis集群(下):Redis 哨兵(Sentinel)模式

2793baf6550fe78d6a05b3cf8355e854.png

背景

38f752085d188a5b3b56832d049ff58c.png

现在对3个节点的sentinel进行配置。sentinel的配置文件在redis的安装目录中已经存在,只需要复制到指定的位置即可。

sentinel是独立进程,有对应的脚本来执行。

基于之前的redis 一主二从的架构,我们继续启动3个sentinel进程。

哨兵模式的架构图如下:

8249d8c3f143448cf4a1a75bf7c9f02d.png

启动哨兵们

  • sentinel6379.conf

protected-mode no
port 26379daemonize yes
pidfile "/var/run/redis-sentinel_26379.pid"
logfile "/usr/local/redis-6.2.14/logs/redis-sentinel_26379.log"
dir "/private/tmp"sentinel monitor mymaster 127.0.0.1 6379 2sentinel announce-hostnames no
# Generated by CONFIG REWRITE
user default on nopass ~* &* +@all
sentinel myid c384816840b671b2f194ebd417458c6bbd08230c
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel current-epoch 0
sentinel known-replica mymaster 127.0.0.1 6381
sentinel known-replica mymaster 127.0.0.1 6380
sentinel known-sentinel mymaster 127.0.0.1 26381 789f7ad2247aa6104665ced751c1956e87ec175b
sentinel known-sentinel mymaster 127.0.0.1 26380 e43e1bc4459a782d2049f8ab1dd8938e17c90ced

启动sentinel,查看哨兵信息:

5c5edba30197294e8c1eecd471601d6b.png

  • sentinel6380.conf

protected-mode no
port 26380daemonize yes
pidfile "/var/run/redis-sentinel_26379.pid"
logfile "/usr/local/redis-6.2.14/logs/redis-sentinel_26379.log"
dir "/private/tmp"sentinel monitor mymaster 127.0.0.1 6379 2sentinel announce-hostnames no
# Generated by CONFIG REWRITE
user default on nopass ~* &* +@all
sentinel myid c384816840b671b2f194ebd417458c6bbd08230c
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel current-epoch 0
sentinel known-replica mymaster 127.0.0.1 6381
sentinel known-replica mymaster 127.0.0.1 6380
sentinel known-sentinel mymaster 127.0.0.1 26381 789f7ad2247aa6104665ced751c1956e87ec175b
sentinel known-sentinel mymaster 127.0.0.1 26380 e43e1bc4459a782d2049f8ab1dd8938e17c90ced

启动sentinel,查看哨兵信息:

2654812ec3c426c8780573125c0097e2.png

  • sentinel6381.conf

protected-mode no
port 26381daemonize yes
pidfile "/var/run/redis-sentinel_26379.pid"
logfile "/usr/local/redis-6.2.14/logs/redis-sentinel_26379.log"
dir "/private/tmp"sentinel monitor mymaster 127.0.0.1 6379 2sentinel announce-hostnames no
# Generated by CONFIG REWRITE
user default on nopass ~* &* +@all
sentinel myid c384816840b671b2f194ebd417458c6bbd08230c
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel current-epoch 0
sentinel known-replica mymaster 127.0.0.1 6381
sentinel known-replica mymaster 127.0.0.1 6380
sentinel known-sentinel mymaster 127.0.0.1 26381 789f7ad2247aa6104665ced751c1956e87ec175b
sentinel known-sentinel mymaster 127.0.0.1 26380 e43e1bc4459a782d2049f8ab1dd8938e17c90ced

启动sentinel,查看哨兵信息:

19f0d3b5cf980e0706717ec5d009c9f8.png

故障转移测试

redis日志

  • 我们kill掉原Master进程,即6379的redis-server,看日志

9c8b7008e346a41cade58b948d4d7bc6.png

  • 看下6380的redis-server日志

68026fa532dc77886189561ed394c94e.png

3ee3f5ca5654118bd925ebc3edcc02ab.png

06 Sep 2024 15:49:18.869:开始断开和Master进程的连接,接着持续报错说复制失败,不断地重试

(中间有30s的重试)

06 Sep 2024 15:49:49.205 * MASTER MODE enabled,即6380实例被sentinel选举为Master节点

  • 看下6381的redis-server日志

a6a05372ede5602dbc62dcb372ecbec4.png

70da5e7091476c12e979b4c22afaa105.png

06 Sep 2024 15:49:18.870 # Error condition on socket for SYNC: Connection refused开始断开和Master进程的连接,接着持续报错说复制失败,不断地重试

(中间有30s的重试)

06 Sep 2024 15:49:49.262 * REPLICAOF 127.0.0.1:6380 enabled ,即6380实例被sentinel选举为Master节点后,6381实例也接受现实,开始从6380实例进行数据同步

redis-sentinel日志

让我们进入到之前配置好的文件夹

82c7365dd3fe08e101b4582c47a8c76e.png

  • redis-sentinel_26379进程日志

6b96a8dbdc043e52839d4b8169c267b5.png

  • redis-sentinel_26380进程日志

37fb0ec4578a214135ed9b784c840428.png

  • redis-sentinel_26381进程日志

b6b631f10f8e74cba327f55ef315e87b.png

故障恢复

  • 重新启动6379实例

  • 通过26379-sentinel,虽然原Master重启了,但目前Master还是6380

bf6b40852b1998f9d2b33227d687ab9e.png

其他文章

Kafka消息堆积问题排查

基于SpringMVC的API灰度方案

理解到位:灾备和只读数据库

SQL治理经验谈:索引覆盖

Mybatis链路分析:JDK动态代理和责任链模式的应用

大模型安装部署、测试、接入SpringCloud应用体系

Mybatis插件-租户ID的注入&拦截应用

相关文章:

深刻理解Redis集群(下):Redis 哨兵(Sentinel)模式

背景 现在对3个节点的sentinel进行配置。sentinel的配置文件在redis的安装目录中已经存在,只需要复制到指定的位置即可。 sentinel是独立进程,有对应的脚本来执行。 基于之前的redis 一主二从的架构,我们继续启动3个sentinel进程。 哨兵模式的…...

STM32重启源深度解析

文章目录 STM32重启源深度解析一、STM32重启概述二、硬件层面的重启源1、电源异常电压不稳定:电源供电不足: 2、复位电路故障复位引脚异常:复位电路设计不合理: 3、外部干扰电磁干扰:静电干扰: 三、软件层面…...

windows配置C++编译环境和VScode C++配置(保姆级教程)

1.安装MinGW-w64 MinGW-w64是一个开源的编译器套件,适用于Windows平台,支持32位和64位应用程序的开发。它包含了GCC编译器、GDB调试器以及其他必要的工具,是C开发者在Windows环境下进行开发的重要工具。 我找到了一个下载比较快的链接&#…...

【微信小程序前端开发】入门Day03 —— 页面导航、事件、生命周期、WXS 脚本及自定义组件

1. 页面导航 导航方式 声明式导航&#xff1a;使用<navigator>组件实现页面跳转。 <!-- 导航到tabBar页面 --> <navigator url"/pages/message/message" open-type"switchTab">导航到消息页面</navigator><!-- 导航到非tabBar页…...

【51单片机】点亮LED之经典流水灯

开发环境 开发板&#xff1a;普中51-单核-A2单片机&#xff1a;STC89C52RC&#xff08;双列直插40引脚 DIP40&#xff09;Keil uVision5 v9.61 最新版破解方法自行百度&#xff0c;相关文档和视频资料很多&#xff0c;我自己将这一操作记录下来当做博客发布&#xff0c;CSDN以…...

深度学习数据增强的常用方法

以下是在深度学习中经常使用的图像增强的方法 目录 前言 1、加噪声 2、调整亮度 3、cutout 4、旋转 5、对比度增强 6、仿射变化扩充图像 7、HSV数据增强 8、错切变化扩充图像 9、平移扩充图像&#xff0c;根图像移动的像素距离可自行调整&#xff0c;具体方法如下注释所示 10、…...

影院管理新篇章:小徐的Spring Boot应用

第三章 系统分析 整个系统的功能模块主要是对各个项目元素组合、分解和更换做出对应的单元&#xff0c;最后在根据各个系统模块来做出一个简单的原则&#xff0c;系统的整体设计是根据用户的需求来进行设计的。为了更好的服务于用户要从小徐影城管理系统的设计与实现方面上做出…...

【H2O2|全栈】关于CSS(9)CSS3扩充了哪些新鲜的东西?(二)

目录 CSS3入门 前言 准备工作 伪元素补充 :before :after 文本溢出属性 转换效果 预告和回顾 后话 CSS3入门 前言 本系列博客主要介绍CSS相关的知识点。 这一期主要介绍以下几个CSS3的知识点&#xff1a; 伪元素补充文本溢出属性转换 没有基础的朋友&#xff…...

java中Files和File对象详情和区别比较

Files 和 File 是 Java 中用于文件处理的两个不同类&#xff0c;分别属于 java.nio.file 和 java.io 包&#xff0c;它们的设计思路和用途有所不同。以下是它们的详细区别&#xff1a; 1. File 对象 File 是 Java 中最早用于处理文件和目录的类&#xff0c;它来自 java.io 包&…...

Unity3D PostLateUpdate为何突然占用大量时间详解

在Unity3D中&#xff0c;直接名为PostLateUpdate的函数并不是Unity标准API中的一部分。然而&#xff0c;这个术语可能指的是在LateUpdate之后执行的某些自定义逻辑或Unity内部机制中的某种后续处理。当提到PostLateUpdate或LateUpdate突然占用大量时间时&#xff0c;我们需要考…...

如何快速熟悉项目

背景 最近新入职&#xff0c;对项目很不熟悉&#xff0c;也不能全部依赖别人&#xff08;别人也不会全心全意去帮你&#xff09;&#xff0c;你大部分还是只能靠自己。材料就是&#xff1a;文档&#xff0c;代码&#xff0c;开发环境。 但是文档&#xff0c;代码&#xff0c;都…...

Spring Boot实现新闻个性化推荐

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…...

优化后的版本

docker_operations.sh #!/bin/bash# all definition NETWORK_NAME"net-1" VOLUME_MOUNT"-v /home/norten/Public/tools:/mnt" # 容器内部挂载到主机的路径 SCRIPT_ROUTE"/mnt" # container_run_medium.sh所在的路径 IMAGE_NAME"ubuntu&quo…...

【Linux系统编程】第二十七弹---文件描述符与重定向:fd奥秘、dup2应用与Shell重定向实战

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、文件描述符fd 1.1、0 & 1 & 2 1.2、文件描述符的分配规则 2、重定向 3、使用 dup2 系统调用 3.1、> 输出…...

开放式耳机哪个品牌好?好用且高性价比的开放式蓝牙耳机推荐

相信很多经常运动的朋友都不是很喜欢佩戴入耳式耳机&#xff0c;因为入耳式耳机真的有很多缺点。 安全方面&#xff1a;在安全上就很容易存在隐患&#xff0c;戴上后难以听到周围环境声音&#xff0c;像汽车鸣笛、行人呼喊等&#xff0c;容易在运动中发生意外。 健康方面&…...

区间合并——模板题

题目描述 给定 n 个区间 [li, ri]&#xff0c;要求合并所有有交集的区间。注意如果在端点处相交&#xff0c;也算有交集。 输出合并完成后的区间个数。 例如&#xff1a;[1, 3] 和 [2, 6] 可以合并为一个区间 [1, 6]。 输入格式 第一行包含整数 n 。 接下来 n 行&#xff0c…...

Microsoft Edge 五个好用的插件

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏 插件_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 Microsoft Edge 一.安装游览器 ​编辑 二.找到插件商店 1.打开游览器后&#xff0c;点击右上角的设置&#…...

解决 遇到JWT中claims中获取不到数据的问题

1.先介绍一下JWT的常规流程 用户进行登录将token储存到redis&#xff0c;然后进行其他需要验证的操作时进行验证&#xff0c;比如使用拦截器进行验证&#xff0c;那么id存储的到claims&#xff0c;因为可以在拦截器验证时将其存放到ThreadLocal中&#xff0c;这样通过ThreadLo…...

会议平台后端优化方案

会议平台后端优化方案 通过RTC的学习&#xff0c;我了解到了端对端技术&#xff0c;就想着做一个节省服务器资源的会议平台 之前做了这个项目&#xff0c;快手二面被问到卡着不知如何介绍&#xff0c;便有了这篇文章 分析当下机制 相对于传统视频平台&#xff08;SFU&#xff…...

unixODBC编程(十)分片插入长数据

遇到有LONG数据类型的表&#xff0c;要插入一条数据量很大的行&#xff0c;一次插入的缓冲区会不够大&#xff0c;这时需要一部分一部分的插入LONG数据&#xff0c;这就用到了在执行语句时动态提供数据的机制。在ODBC中要动态提供数据需要几个步骤。 1. 在绑定输入参数时&…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...