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

redis7基础篇2 redis的哨兵模式2

目录

一 哨兵模式

1.1 redis的哨兵模式作用

1.2 redis的哨兵模式架构

1.3 redis的哨兵模式参数说明

二  redis的哨兵模式搭建

2.1 redis的主从复制模式

2.2 redis的sentinel配置文件

2.3 redis的实例节点和sentinel节点启动

3.3 redis的哨兵模式原理

3.3.1 redis的哨兵模式操作原理

3.4 redis的哨兵模式优缺点


一 哨兵模式

1.1 redis的哨兵模式作用

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

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

3.故障转移:如果master异常,则会进行主从切换,将其中一个slave作为新的master

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

1.2 redis的哨兵模式架构

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

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

1.3 redis的哨兵模式参数说明

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

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

Protected-mode: 安全保护模式

Port: 端口

Logfile: 日志文件路径

Pidfile: pid文件路径

Dir:工作目录

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

Sentinel auth-pass 《master-name》 《password》:master设置了密码,连接master服务的密码。

Sentinel down-after-milliseconds <master-name> <milliseconds>

指定多少毫秒之后,主节点没有应答哨兵,此时哨兵主观上认为主节点下线。

Sentinel parallel -syncs 《master-name》《nums》

表示允许并行同步的slave个数,当master挂了后,哨兵会选出新的master,此时,剩余的slave会向新的mster发起同步数据。

Sentinel failvoer-timeout 《master-name》<milliseconds>

故障转移的超时时间,进行故障转移时,如果超过设置的毫秒,表示故障转移失败。

Sentinel notification-script 《master-name》《script-path》

配置当某一事件发生时所需要执行的脚本。

Setinle client-reconfig-script 《master-name》《script-path》

二  redis的哨兵模式搭建

2.1 redis的主从复制模式

先搭建好主从复制模式

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

在6380配置文件中:设置校验密码和隶属主master的ip

在6381配置文件中:设置校验密码和隶属主master的ip

2.2 redis的sentinel配置文件

由于机器硬件关系,我们的3个哨兵都同时配置进192.168.111.169的同一台机器。

 

配置文件sentinel26379.conf内容:

配置文件sentinel26380.conf内容:

配置文件sentinel26381.conf内容:

2.3 redis的实例节点和sentinel节点启动

1.三台实例的主从启动

 2.启动3个哨兵,并查看主从关系

2.根据哨兵原理,本案例选举6381,为新的master节点

3.重启6379,可以看到原来的master变为了slave

4.登录6381服务,查询已有两个slave节点 

3.3 redis的哨兵模式原理

当一个主从配置的master失效后,sentinel可以选举出一个新的master,用于自动接替原来master的工作,主从配置中的其他redis服务器自动指向新的master同步数据,一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。选举过程中,文件的内容,会被sentinel动态更改。

3.3.1 redis的哨兵模式操作原理

1主节点下线判断

A)每个哨兵通过down-after-milliseconds设置判断自己监控的master是否触发下线;

B)汇总各个哨兵的结果,多个哨兵打成一致意见才能认为mster客观出现宕机。

2.从哨兵中选出兵王

当主节点被判断客观下线以后,各个哨兵节点会进行协商,通过一个Raft算法,先选举出一个领导者哨兵节点,并由该领导者哨兵节点进行failover故障迁移。哨兵文件的内容解析:

1.sentinel26379.log中,选举0664为哨兵王

2.sentinel26380.log中,选举0664为哨兵王 

3.sentinel26380.log中,选举0664为哨兵王

4.raft算法

3.由兵王推动故障切换选出一个新的master

3.1 从剩余健康的slave节点中,按:

1.选择优先级靠前的:redis.conf中slave-priority,或者replica-priority的最高值(数字越小优先级越高)选取

2.选择偏移量最大的

3.选择runid最小的从服务

3.2 sentinel leader会对选举出的新master执行slave of no noe操作

将其提升为master节点;sentinel leader向其他slave发送命令,让剩余的slave成为新的master节点的slave

3.3 将之前已下线的老master设置为新选出master的从节点:

当老master重新上线后,他会成为新master的从节点;sentinel leader会让原来的master降级为slave兵恢复为正常工作。

3.4 redis的哨兵模式优缺点

1.哨兵节点的数量应该为多个,哨兵本身应该是集群,保证高可用

2.哨兵节点的数量应该是奇数

3.各个哨兵节点的配置应一致

4.如果哨兵节点都部署在Docker等容器里面,尤其要注意端口的正确映射,哨兵+主从复制,但不能保证数据零丢失。

相关文章:

redis7基础篇2 redis的哨兵模式2

目录 一 哨兵模式 1.1 redis的哨兵模式作用 1.2 redis的哨兵模式架构 1.3 redis的哨兵模式参数说明 二 redis的哨兵模式搭建 2.1 redis的主从复制模式 2.2 redis的sentinel配置文件 2.3 redis的实例节点和sentinel节点启动 3.3 redis的哨兵模式原理 3.3.1 redis的哨兵…...

windows终端conda activate命令行不显示环境名

问题&#xff1a; 始终不显示环境名 解决 首先需要配置conda的环境变量 确保conda --version能显示版本 然后对cmd进行初始化&#xff0c;如果用的是vscode中的终端&#xff0c;那需要对powershell进行初始化 Windows CMD conda init cmd.exeWindows PowerShell conda …...

SpringBoot 2.6 集成es 7.17

引言 在现代应用开发中&#xff0c;Elasticsearch作为一个强大的搜索引擎和分析引擎&#xff0c;已经成为许多项目不可或缺的一部分。Spring Boot作为Java生态中最受欢迎的微服务框架之一&#xff0c;其对Elasticsearch的支持自然也是开发者关注的焦点。本文将详细介绍如何在S…...

加固服务器有什么用?

为什么越来越多的企业和个人都在加固他们的服务器&#xff1f;加固服务器不仅可以保护数据安全&#xff0c;还能提升整体系统的稳定性和可靠性。下面是聚名网的一些介绍。 加固服务器的首要目的就是提高安全性。随着网络攻击手段的不断演变&#xff0c;黑客和恶意软件的威胁也…...

Personal APP

1、Matlab 2023b https://www.bilibili.com/opus/887246540317392920 https://blog.csdn.net/qq_25719943/article/details/138096918 https://www.jokerdown.com/22886.html 2、 3、...

探索最新的编程技术趋势:AI 编程助手和未来的编程方式

随着技术的飞速发展&#xff0c;编程技术领域在近年来经历了深刻的变革。从人工智能到低代码开发工具&#xff0c;新的技术趋势不断涌现&#xff0c;不仅大幅提高了开发效率&#xff0c;也重新定义了开发者的角色和工作方式。本篇博客将探讨几项当前最值得关注的编程技术&#…...

Android:文件管理:打开文件意图

三步走&#xff1a; 一、先在AndroidManifest.xml声明provider&#xff1a; <providerandroid:name"androidx.core.content.FileProvider"android:authorities"${applicationId}.FileProvider"android:exported"false"android:grantUriPermi…...

从纯虚类到普通类:提升C++ ABI兼容性的策略

在C编程中&#xff0c;纯虚类&#xff08;也被称为抽象类&#xff09;通常用于定义接口&#xff0c;而普通类则包含具体的实现。然而&#xff0c;在某些情况下&#xff0c;将纯虚类转换为普通类并提供默认实现&#xff0c;可以显著提升应用程序二进制接口&#xff08;ABI&#…...

QT中如何限制 限制QLineEdit只能输入字母,或数字,或某个范围内数字等限制约束?

在 Qt 中&#xff0c;你可以通过多种方式来限制 QLineEdit 只能输入特定类型的字符&#xff0c;如字母、数字或某个范围内的数字。以下是一些常见的方法&#xff1a; 1. 使用输入验证器&#xff08;QIntValidator, QDoubleValidator, QRegExpValidator&#xff09; Qt 提供了…...

Tailwind CSS 使用简介

参考网站安装 - Tailwind CSS 中文网 号称是开始使用 Tailwind CSS 通过 npm 安装 tailwindcss&#xff0c;并创建你的 tailwind.config.js 文件。 npm install -D tailwindcss npx tailwindcss init 在 tailwind.config.js 文件中添加所有模板文件的路径。 /** type {im…...

iOS 逆向学习 - iOS Architecture Cocoa Touch Layer

iOS 逆向学习 - iOS Architecture Cocoa Touch Layer 一、Cocoa Touch Layer 简介二、Cocoa Touch Layer 的核心功能1. UIKit2. Event Handling&#xff08;事件处理&#xff09;3. Multitasking&#xff08;多任务处理&#xff09;4. Push Notifications&#xff08;推送通知&…...

C语言实现库函数strlen

size_t是 unsigned int fgets会读入\n&#xff0c;用strcspn函数除去 assert判读指针是否为空指针&#xff0c;使用前要引头文件<assert.h> #include <stdio.h> #include <assert.h> size_t mystrlen(const char* str) {assert(str);size_t count 0;while …...

050_小驰私房菜_MTK Camera debug, data rate 、mipi_pixel_rate 确认

mipi_pixel_rate = data rate * 4 / 10 (4 是表示4lane,10表示raw数据是10bit) mipi_pixel_rate 信息,我们可以通过 sentest命令打印看到: 下面的信息我们可以看到,mipi_pixel_rate = 501.357739Mpps,mipi rate = 10000000,是对应的我们驱动文件里面配置写的mipi_pixel_r…...

(六)vForm 动态表单(数据量大,下拉选卡顿问题)

系列文章目录 (一)vForm 动态表单设计器之使用 (二)vForm 动态表单设计器之下拉、选择 (三)vForm 动态表单解决下拉框无数据显示id问题 (四)vForm 动态表单自定义组件、属性 (五)vForm 动态表单文件上传、下载 文章目录 目录 前言 一、组件改造 1.添加分页所需参…...

【mybatis-plus问题集锦系列】mybatis使用xml配置文件实现数据的基础增删改查

简单的数据查询&#xff0c;我们可以在mapper接口里面去实现&#xff0c;但是如果是复杂的查询&#xff0c;我们就可以使用xml配置文件去做&#xff0c; 官网链接xml配置文件 实现效果 实现代码 根据mapper接口的包结构&#xff0c;在resources包里面新建同名同结构的xml文件…...

投稿指南【NO.12_14】【极易投中】期刊投稿(毛纺科技)

近期有不少同学咨询投稿期刊的问题&#xff0c;大部分院校的研究生都有发学术论文的要求&#xff0c;少部分要求高的甚至需要SCI或者多篇核心期刊论文才可以毕业&#xff0c;但是核心期刊要求论文质量高且审稿周期长&#xff0c;所以本博客梳理一些计算机特别是人工智能相关的期…...

机器学习算法的分类

一、按学习方式分类 1.监督学习&#xff08;Supervised Learning&#xff09; &#xff08;1&#xff09;定义&#xff1a;使用已标记的数据进行训练&#xff0c;每个输入数据都有对应的输出标签。模型学习输入与输出之间的映射关系。 按以上可以分为以下两种&#xff1a; …...

Linux操作系统下,挂ILA

一、在linux下安装vivado2018.3 参考视频&#xff1a;Linux下vivado安装教程_哔哩哔哩_bilibili 复制安装包进入虚拟机 安装包链接&#xff1a;https://pan.quark.cn/s/ca1a15d446fa 我的vmware tools无法使用&#xff0c;不能直接拖进虚拟机&#xff0c;所以使用了U盘复制…...

HTML——26.像素单位

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>像素</title></head><body><!--像素&#xff1a;1.指设备屏幕上的一个点&#xff0c;单位px&#xff0c;如led屏上的小灯朱2.当屏幕分辨率固定时&…...

【HTML】Day02

【HTML】Day02 1. 列表标签1.1 无序列表1.2 有序列表1.3 定义列表 2. 表格标签2.1 合并单元格 3. 表单标签3.1 input标签基本使用3.2 上传多个文件 4. 下拉菜单、文本域5. label标签6. 按钮button7. div与span、字符实体字符实体 1. 列表标签 作用&#xff1a;布局内容排列整齐…...

AI 自动化编程对编程教育的影响

AI 自动化编程的未来 引言 你是否曾想过&#xff0c;未来的程序员需要掌握哪些技能呢&#xff1f;随着人工智能的迅猛发展&#xff0c;特别是生成式AI工具的普及&#xff0c;编程的世界正在发生翻天覆地的变化。编程教育也在这种环境下进行着深刻的转型。那么&#xff0c;AI …...

Java100道面试题

1.JVM内存结构 VM内存结构指的是JVM运行时数据区结构&#xff0c;它主要包含以下几个部分&#xff1a; 堆&#xff08;Heap&#xff09;&#xff1a;线程共享。 JVM堆&#xff08;Heap&#xff09;是Java虚拟机中的一块内存区域&#xff08;所有线程共享&#xff09;&#x…...

解密人工智能:如何改变我们的工作与生活

引言&#xff1a;AI崛起背后的思考 在过去的几十年里&#xff0c;人工智能&#xff08;AI&#xff09;从科幻小说中的神秘存在&#xff0c;逐渐走进了我们的日常生活。无论是智能手机的语音助手&#xff0c;还是推荐心仪商品的电商平台&#xff0c;AI技术已悄然融入工作与生活的…...

Linux postgresql-15部署文档

一、PostgreSQL的安装 1、下载地址 postgresql安装包下载地址&#xff1a;https://www.postgresql.org/download/linux/redhat/ 2、安装脚本 复制下面的安装脚本即可&#xff1a; sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64…...

visual studio 安全模式

一、安全模式&#xff1a; 在 Visual Studio 中&#xff0c;安全模式是一种启动方式&#xff0c;允许你在禁用所有扩展和自定义设置的情况下启动 Visual Studio。这个模式可以帮助排除插件或扩展引起的问题&#xff0c;特别是在 Visual Studio 无法正常启动时。 二、安全模式下…...

Pandas-timestamp和datetime64的区别

文章目录 1. Timestamp&#xff08;时间戳&#xff09;2. Datetime64&#xff08;日期时间64位&#xff09;3. 主要区别&#xff1a; pandas.Timestamp 和 pandas.Datetime64 都是用于表示日期和时间的 Pandas 对象&#xff0c;但它们有一些关键的区别&#xff1a; 1. Timesta…...

@MapperScan

简介&#xff1a; MapperScan注解是MyBatis框架在Spring Boot中的一个重要集成注解 作用&#xff1a; MapperScan主要作用是告诉Spring框架在启动时扫描指定的包路径&#xff0c;并将该路径下的所有MyBatis的Mapper接口批量注入到Spring容器中。这样&#xff0c;开发者就可以…...

SQL中聚类后字段数据串联字符串方法研究

在 SQL 中&#xff0c;使用 聚类&#xff08;GROUP BY&#xff09; 后将某个字段的数据串联为一个字符串&#xff0c;常见的方法包括以下几种&#xff0c;取决于数据库管理系统&#xff08;DBMS&#xff09;的具体支持功能&#xff1a; 1. 使用 GROUP_CONCAT &#xff08;MySQL…...

【嵌入式硬件】直流电机驱动相关

项目场景&#xff1a; 驱动履带车&#xff08;双直流电机&#xff09;前进、后退、转弯 问题描述 电机驱动MOS管烧毁 电机驱动采用IR2104STRH1R403NL的H桥方案&#xff08;这是修改之后的图&#xff09; 原因分析&#xff1a; 1.主要原因是4路PWM没有限幅&#xff0c;修改…...

CSP初赛知识学习计划(第一天)

计算机知识全解析 一、计算机的发展历程 计算机的发展堪称一部波澜壮阔的科技史诗&#xff0c;其源头可追溯至古老的计算工具。早期&#xff0c;为了满足人类在天文、历法计算以及商业贸易中对数据处理的需求&#xff0c;算盘、算筹等手动计算器械应运而生&#xff0c;它们依…...