Linux系统Redis的哨兵架构配置
Linux系统Redis的哨兵架构配置
此处基于 Linux系统Redis的主从架构配置 进行哨兵高可用架构的搭建
此案例在一台虚拟机上启动6379和6380和6381三个reids主从实例(6379为主节点,6380和6381为从节点),以及26379、26380、26381的sentinel哨兵集群;
-
先准备好3份reids.conf配置
6379主节点redis-6379.conf
# 端口号设置 port 6379# 持久化数据存储目录 dir ./data/6379/# 将端口号追加命名到pidfile配置的文件 pidfile /var/run/redis_6379.pid logfile "6379.log"6380从节点redis-6380.conf
# 端口号设置 port 6380# 持久化数据存储目录 dir ./data/6380/# 将端口号追加命名到pidfile配置的文件 pidfile /var/run/redis_6380.pid logfile "6380.log"# 从6379主redis实例复制数据 replicaof 192.168.3.39 6379# 设置从节点只读 replica-read-only yes6381从节点redis-6381.conf
# 端口号设置 port 6381# 持久化数据存储目录 dir ./data/6381/# 将端口号追加命名到pidfile配置的文件 pidfile /var/run/redis_6381.pid logfile "6381.log"# 从6379主redis实例复制数据 replicaof 192.168.3.39 6379# 设置从节点只读 replica-read-only yes -
启动三个主从节点
src/redis-server redis-6369.conf src/redis-server redis-6380.conf src/redis-server redis-6381.conf查看节点是否启动成功
[yunze@localhost redis-5.0.14]$ ps -ef | grep redis yunze 3505 1 0 22:12 ? 00:00:02 src/redis-server *:6379 yunze 3512 1 0 22:13 ? 00:00:02 src/redis-server *:6380 yunze 3802 1 0 22:18 ? 00:00:01 src/redis-server *:6381 yunze 4066 2797 0 22:28 pts/0 00:00:00 grep --color=auto redis三个节点启动成功!
-
准备3份哨兵集群的配置
准备3份sentinel.conf配置文件
一定要先准备好所有配置文件再去启动,否则如果复制了已启动的sentinel节点的配置文件,会导致哨兵集群搭建失败,因为sentinel启动之后会在当前节点使用的sentinel配置文件里追加写入
sentinel myid dfb8da08b09e8e97ad4a94cf177a911c654ca464
sentinel节点的myid 不能一样,所以尽量先准备好配置文件后,再依次启动
cp sentinel.conf sentinel-26379.conf cp sentinel.conf sentinel-26380.conf cp sentinel.conf sentinel-26381.conf26379节点sentinel-26379.conf调整配置
port 26379 daemonize yes pidfile /var/run/redis-sentinel-26379.pid logfile "26379.log" dir ./data/26379 # ip根据实际情况调整,mymaster为主节点的名称 sentinel monitor mymaster 192.168.3.39 6379 226380节点sentinel-23680.conf调整配置
port 26380 daemonize yes pidfile /var/run/redis-sentinel-26380.pid logfile "26380.log" dir ./data/26380 # ip根据实际情况调整,mymaster为主节点的名称,最后的2是指需要有2个以上sentinel节点认为redis主节点失效,才是真的失效,一般为(sentinel总数/2+1) sentinel monitor mymaster 192.168.3.39 6379 226381节点sentinel-23681.conf调整配置
port 26381 daemonize yes pidfile /var/run/redis-sentinel-26381.pid logfile "26381.log" dir ./data/26381 # ip根据实际情况调整,mymaster为主节点的名称 sentinel monitor mymaster 192.168.3.39 6379 2 -
启动哨兵集群
src/redis-sentinel sentinel-26379.conf src/redis-sentinel sentinel-26380.conf src/redis-sentinel sentinel-26381.conf查看节点是否启动成功
[yunze@localhost redis-5.0.14]$ ps -ef | grep redis yunze 3555 1 0 21:28 ? 00:00:00 src/redis-server *:6379 yunze 3560 1 0 21:28 ? 00:00:00 src/redis-server *:6380 yunze 3567 1 0 21:28 ? 00:00:00 src/redis-server *:6381 yunze 3673 1 0 21:28 ? 00:00:00 src/redis-sentinel *:26379 [sentinel] yunze 3678 1 0 21:28 ? 00:00:00 src/redis-sentinel *:26380 [sentinel] yunze 3683 1 0 21:28 ? 00:00:00 src/redis-sentinel *:26381 [sentinel] yunze 3688 3103 0 21:28 pts/0 00:00:00 grep --color=auto redis至此哨兵架构搭建完成!
-
查看哨兵架构节点信息
sentinel都启动成功之后,会将整个哨兵集群的基础信息写入到所有sentinel的配置文件里的最下面;
查看sentinel-23679.conf配置文件进行确认
sentinel known-replica mymaster 192.168.3.39 6381 # 表示主节点的复制节点,及从节点信息 sentinel known-replica mymaster 192.168.3.39 6380 # 表示主节点的复制节点,及从节点信息 sentinel known-sentinel mymaster 192.168.3.39 26381 25789bfe6f685c6f35d8710d4df85c344ef8a949 sentinel known-sentinel mymaster 192.168.3.39 26380 7f3308dfa55e6f488fd03f9eed2a8af5141a46c4由上述信息得到6380和6381节点都是从节点,则6379就是主节点;如果redis主节点挂了,则哨兵集群会自动重新选出一个新的reids主节点,并修改sentinel配置文件信息;
如6379节点redis挂了,则sentinel会从6380和6381节点选一个成为主节点,假设选举出的新主节点为6381,则此时sentinel的配置文件里的集群信息就会变为如下所示:
sentinel known-replica mymaster 192.168.3.39 6380 sentinel known-replica mymaster 192.168.3.39 6379 sentinel known-sentinel mymaster 192.168.3.39 26381 25789bfe6f685c6f35d8710d4df85c344ef8a949 sentinel known-sentinel mymaster 192.168.3.39 26380 7f3308dfa55e6f488fd03f9eed2a8af5141a46c4且还会将之前配置的
sentinel monitor mymaster 192.168.3.39 6379 2修改为
sentinel monitor mymaster 192.168.3.39 6381 2而当6379节点重新启动之后,哨兵集群会根据sentinel里的集群信息,将6379redis节点作为从节点加入到整个集群;
-
使用Spring Boot整合redis进行验证
-
加入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> -
application.yml配置
spring:redis:database: 0timeout: 3000# 哨兵模式sentinel:# redis主节点的名称master: mymasternodes: 192.168.3.39:26379,192.168.3.39:26380,192.168.3.39:26381 -
编写测试代码
项目运行时,可关闭掉redis主节点,测试哨兵集群自动选举主节点操作(redis主节点挂掉后,服务会发起10次重新连接,之后会重新选举出一个新的主节点继续操作redis数据)
import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** @author yunze* @date 2023/7/31 0031 23:20*/ @Slf4j @RestController @RequestMapping("/demo") public class DemoController {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@RequestMapping("/test_sentinel")public void testSentinel() {int i = 1;while (true) {try {stringRedisTemplate.opsForValue().set("test-" + i, String.valueOf(i));log.info("设置key:{}", "test-" + i);i++;Thread.sleep(1000);} catch (Exception e) {e.printStackTrace();log.error("出现异常:{}", e.getMessage());}}} }
-
相关文章:
Linux系统Redis的哨兵架构配置
Linux系统Redis的哨兵架构配置 此处基于 Linux系统Redis的主从架构配置 进行哨兵高可用架构的搭建 此案例在一台虚拟机上启动6379和6380和6381三个reids主从实例(6379为主节点,6380和6381为从节点),以及26379、26380、26381的sent…...
HarmonyOS/OpenHarmony-ArkTS基于API9元服务开发快速入门
一、创建项目 二、创建卡片 三、添加资源 四、具体代码 Entry Component struct WidgetNewCard {/** The title.*/readonly TITLE: string harmonyOs;readonly CONTEXT: string 技术构建万物智联;/** The action type.*/readonly ACTION_TYPE: string router;/** The…...
macbook怎么卸载软件?2023年最新全新解析macbook电脑怎样删除软件
macbook怎么卸载软件?2023年最新全新解析macbook电脑怎样删除软件。关于Mac笔记本如何卸载软件_Mac笔记本卸载软件的四种方法的知识大家了解吗?以下就是小编整理的关于Mac笔记本如何卸载软件_Mac笔记本卸载软件的四种方法的介绍,希望可以给到…...
c51单片机16个按键密码锁源代码(富proteus电路图)
注意了:这个代码你是没法直接运行的,但是如果你看得懂,随便改一改不超过1分钟就可以用 #include "reg51.h" #include "myheader.h" void displayNumber(unsigned char num) {if(num1){P10XFF;P10P11P14P15P160;}else if…...
GraalVM
一、GraalVM GraalVM 是由 Oracle 开发的一个高性能、高效的通用虚拟机。它是一个全球性的项目,涵盖了多种编程语言和平台,并为开发者提供了一种统一的虚拟机环境。GraalVM 的核心特性是支持多语言混合执行,即在同一个运行时环境中同时执行多…...
File 类和 InputStream, OutputStream 的用法总结
目录 一、File 类 1.File类属性 2.构造方法 3.普通方法 二、InputStream 1.方法 2.FileInputStream 三、OutputStream 1.方法 2.FileOutputStream 四、针对字符流对象进行读写操作 一、File 类 1.File类属性 修饰符及类型属性说明static StringpathSeparator依赖于系统的路…...
开源进展 | WeBASE v3.1.0发布,新增多个实用特性
WeBASE是一个友好、功能丰富的区块链中间件平台,通过一系列通用功能组件和实用工具,助力社区开发者更快捷地与区块链进行交互。 目前WeBASE已更新迭代至v3.1.0版本,本次更新中,WeBASE带来了最新的合约Java脚手架导出功能ÿ…...
C++动态加载 插件
动态加载(Dynamic Loading)是指在程序运行时,根据需要动态地加载和链接代码或资源。 动态加载的主要目的是实现程序的灵活性和可扩展性,以及减少内存消耗和启动时间。通过动态加载,程序可以根据运行时的需求加载特定的…...
redis的缓存更新策略
目录 三种缓存更新策略 业务场景: 主动更新的三种实现 操作缓存和数据库时有三个问题 1.删除缓存还是更新缓存? 2.如何保证缓存与数据库的操作的同时成功或失败? 3.先操作缓存还是先操作数据库? 缓存更新策略的最佳实践方案&am…...
Android应用开发(6)TextView进阶用法
Android应用开发学习笔记——目录索引 本章介绍文本视图(TextView)的显示,包括:设置文本内容、设置文本大小、设置文本显示颜色。 一、设置TextView显示内容 Layout XML文件中设置 如:res/layout/activity_main.xm…...
Matlab滤波、频谱分析
Matlab滤波、频谱分析 滤波: 某目标信号是由5、15、30Hz正弦波混合而成的混合信号,现需要设计一个滤波器滤掉5、30Hz两种频率。 分析:显然我们应该设计一个带通滤波器,通带频率落在15Hz附近。 % 滤波 % 某目标信号是由5、15、3…...
车载软件架构 —— 车载软件入侵检测系统
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人…...
“深入解析JVM内部机制:理解Java虚拟机的工作原理“
标题:深入解析JVM内部机制:理解Java虚拟机的工作原理 摘要:本文将深入探讨Java虚拟机(JVM)的内部机制,解释其工作原理。我们将讨论JVM的组成部分、类加载过程、运行时数据区域以及垃圾回收机制。此外&…...
FPGA初步学习之串口发送模块【单字节和字符串的发送】
串口相关简介 UART 在发送或接收过程中的一帧数据由4部分组成,起始位、数据位、奇偶校验位和停止位,如图所示。其中,起始位标志着一帧数据的开始,停止位标志着一帧数据的结束,数据位是一帧数据中的有效数据。 通常用…...
Kotlin重点理解安全性
目录 一 Kotlin安全性1.1 可空类型1.2 安全调用运算符1.3 Elvis 运算符1.4 非空断言运算符1.5 安全类型转换1.6 延迟初始化 一 Kotlin安全性 Kotlin 在设计时采用了一系列策略,旨在尽可能地减少空指针异常(NullPointerException)的出现。空指…...
基于Java+SpringBoot+SpringCloud+Vue的智慧养老平台设计与实现(源码+LW+部署文档等)
博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...
Spring中的全局异常处理
在项目中通常会定义各种异常,比如断言异常、业务异常,甚至调用外部接口报的异常需要转成自己系统中的异常类型,这时就需要将各种异常类型进行统一的处理,返回统一的数据结构。在spring中提供了这样全局统一处理异常的注解Controll…...
【安全测试】Web应用安全之XSS跨站脚本攻击漏洞
目录 前言 XSS概念及分类 反射型XSS(非持久性XSS) 存储型XSS(持久型XSS) 如何测试XSS漏洞 方法一: 方法二: XSS漏洞修复 原则:不相信客户输入的数据 处理建议 资料获取方法 前言 以前都只是在各类文档中见到过XSS,也进…...
LeNet卷积神经网络-笔记
LeNet卷积神经网络-笔记 手写分析LeNet网三卷积运算和两池化加两全连接层计算分析 修正上图中H,W的计算公式为下面格式 基于paddle飞桨框架构建测试代码 #输出结果为: #[validation] accuracy/loss: 0.9530/0.1516 #这里准确率为95.3% #通过运行结果可以看出&am…...
使用XMLHttpRequest实现文件异步下载
1、问题描述 我想通过异步的方式实现下载文化,请求为post请求。一开始我打算用ajax。 $.ajax({type:post,contentType:application/json,url:http://xxx/downloadExcel,data:{data:JSON.stringify(<%oJsonResponse.JSONoutput()%>)},}).success(function(dat…...
45V耐压CSM7345SG ESOP8,可调12V输出+使能端+散热片,低压差线性稳压器
CSM7345 ESOP8可调12V输出带使能端 全方案深度分析我会从芯片核心特性、12V输出原理、使能端设计、电路参数计算、保护机制、PCB设计要点等维度,做完整的工程级拆解,帮你彻底吃透这个方案。一、芯片核心特性(适配12V输出的关键参数࿰…...
FDTD复现Science正刊:二次谐波产生的奇妙之旅
FDTD复现Science正刊,二次谐波产生 嘿,大家好!今天来聊聊用FDTD方法复现Science正刊中二次谐波产生的相关研究,这可是个超有趣的领域。 什么是二次谐波产生? 二次谐波产生(Second Harmonic Generation&a…...
KeymouseGo:让重复操作自动化的效率工具指南
KeymouseGo:让重复操作自动化的效率工具指南 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo 在数字化工作环境中…...
当Excel图表无法表达你的数据故事时:Charticulator开启零代码可视化创作新纪元
当Excel图表无法表达你的数据故事时:Charticulator开启零代码可视化创作新纪元 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator 问题:数据…...
FanControl完全攻略:智能风扇控制的动态平衡技术与多场景应用
FanControl完全攻略:智能风扇控制的动态平衡技术与多场景应用 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tren…...
notepad-- Markdown实时预览功能高效使用全攻略
notepad-- Markdown实时预览功能高效使用全攻略 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- 作为一款支持Windows、…...
OFA图像描述效果展示:COCO风格caption生成——简洁、准确、自然
OFA图像描述效果展示:COCO风格caption生成——简洁、准确、自然 1. 项目概述 今天要给大家展示一个特别实用的AI工具——基于OFA模型的图像描述生成系统。这个工具能够自动为任何图片生成简洁、准确、自然的英文描述,就像给图片配上了专业的文字说明。…...
MozJPEG终极指南:如何用开源工具将JPEG压缩效率提升30%以上
MozJPEG终极指南:如何用开源工具将JPEG压缩效率提升30%以上 【免费下载链接】mozjpeg Improved JPEG encoder. 项目地址: https://gitcode.com/gh_mirrors/mo/mozjpeg 在当今图像密集的互联网时代,JPEG格式仍然是网页图片的主流选择,但…...
Kubernetes与存储管理最佳实践
Kubernetes与存储管理最佳实践 1. Kubernetes存储模型 Kubernetes存储模型定义了如何在容器化环境中管理和使用存储资源,是集群存储管理的基础。 1.1 存储模型核心概念 Volume:Pod中的存储卷,可被多个容器共享PersistentVolume (PV)ÿ…...
【KS-Downloader】快手无水印内容获取开源工具技术解析
【KS-Downloader】快手无水印内容获取开源工具技术解析 【免费下载链接】KS-Downloader 快手(KuaiShou)视频/图片下载工具;数据采集工具 项目地址: https://gitcode.com/gh_mirrors/ks/KS-Downloader 在短视频内容创作领域,…...
