首页/新闻资讯/正文详情

Redis 哨兵集群搭建实战

发布时间:2026/11/5 2:05:46 来源:云帆数科 栏目:资讯中心
Redis 哨兵集群搭建实战
一、为什么需要哨兵在上一篇文章中我们搭建了Redis主从集群实现了读写分离提高了并发读写的能力。但主从架构存在一个致命问题当master节点宕机后整个集群将无法写入数据且需要人工介入才能恢复。Redis提供了哨兵机制来解决这个问题。哨兵的核心作用有三个监控持续检查master和slave是否按预期工作自动故障恢复master故障时。自动将一个slave提升为新的master通知作为Redis客户端的服务发现来源故障转移后将最新信息推送给客户端下面我们开始动手搭建二、集群机构规划我们在同一台虚拟机上开启3个Sentinel实例,组成sentinel集群用来监管之前搭建的Redis主从集群7001 master7002/7004 slave整体机构如下三个sentinel实例信息节点IPPORTs1192.168.8.10227001s2192.168.8.01227002s3192.168.8.10227003前置条件请确保Redis主从集群7001/7002/7003已经搭建并正常运行。如果还没有请参考前文《Redis主从集群搭建与数据同步原理详解》三、准备实例和配置3.1 创建目录要在同一台虚拟机开启3个实例必须准备三份不同的配置文件和目录配置文件所在目录也就是工作目录。# 进入/tmp目录cd/tmp# 创建目录mkdirs1 s2 s3创建完成后目录结构如下3.2 编写sentinel.conf在s1目录下创建一个sentinel.conf文件内容如下port27001sentinel announce-ip192.168.8.102 sentinel monitor mymaster192.168.8.10270012sentinel down-after-milliseconds mymaster5000sentinel failover-timeout mymaster60000dir/tmp/s1配置项解读port 27001当前sentinel实例的端口sentinel announce-ip 192.168.8.102声明当前sentinel的IP避免多网卡时通信混乱sentinel monitor mymaster 192.168.8.102 7001 2指定监控节点的主节点信息mymaster主节点名称可自定义任意写192.168.8.102 7001主节点的IP和端口2枚举master时的quprum值判断客观下线时所需的最少哨兵票数建议设置sentinel的一半以上sentinel down-after-milliseconds mymaster 5000主管下线判定时间5秒内无响应即认为主观下线sentinel failover-timeout mymaster 60000故障转移超时时间dir /tmp/s1工作目录3.3 拷贝并修改配置将 s1/sentinel.conf 拷贝到 s2、s3 两个目录# 方式一逐个拷贝cps1/sentinel.conf s2cps1/sentinel.conf s3# 方式二管道组合命令一键拷贝echos2 s3|xargs-t-n1cps1/sentinel.conf然后修改 s2、s3 两个文件夹内的配置文件将端口分别修改为 27002、27003工作目录同步修改sed-i-es/27001/27002/g-es/s1/s2/gs2/sentinel.confsed-i-es/27001/27003/g-es/s1/s3/gs3/sentinel.conf四、启动哨兵集群为了方便查看日志我们打开 3 个 ssh 窗口分别启动 3 个 sentinel 实例# 第1个redis-sentinel s1/sentinel.conf# 第2个redis-sentinel s2/sentinel.conf# 第3个redis-sentinel s3/sentinel.conf启动成功后可以看到类似如下的日志输出日志中可以看到 sentinel 已经成功连接到了 master 节点 7001并发现了它下面的两个 slave 节点。五、故障转移测试5.1 模拟master宕机我们尝试让 master 节点 7001 宕机redis-cli-p7001shutdown5.2 观看哨兵日志查看 sentinel 日志可以看到哨兵们开始协商判定 7001 主观下线 → 客观下线 → 选举 leader → 挑选新 master 的完整过程查看7003的日志查看7002的日志六、故障转移原理在测试过程中哨兵完成了以下关键步骤值得深入理解6.1 如何判断实例健康主观下线每个sentinel每秒向所有的实例发送ping命令若超过 down-after-milliseconds 未响应则标记为主观下线、客观下线若超过quorum数量的sentinel都认为该实例主观下线则标记为客观下线触发故障转移6.2 如何挑选新master哨兵按以下顺序筛选 slave 节点断开时长与 master 断开时间超过 down-after-milliseconds * 10 的 slave 被排除slave-priority值越小优先级越高0 表示永不参与选举offsetoffset 越大说明数据越新优先级越高运行 idid 越小优先级越高6.2 故障转移流程sentinel 给选中的 slave 发送 slaveof no one让它成为 mastersentinel 给其它 slave 发送 slaveof 新masterIP 新masterPort让它们成为新 master 的从节点将故障节点标记为 slave故障节点恢复后自动成为新 master 的 slave七、客户端如何感知变化搭建完哨兵集群后客户端不能直接连接master的IP否则故障转移后会连接失败。正确的做法是让客户端连接哨兵集群由哨兵返回当前master的地址。以spring boot为例在application.yml中配置哨兵信息即可spring:redis:sentinel:master:mymasternodes:-192.168.150.101:27001-192.168.150.101:27002-192.168.150.101:27003Spring 的 RedisTemplate 底层利用 Lettuce 实现了节点感知和自动切换客户端无需关心 master 的具体地址故障转移后会自动更新连接。

相关推荐

记一次360免杀绕过提权思路
记一次360免杀绕过提权思路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 2:05:46

从零开始的C++生活——第七讲——01
从零开始的C++生活——第七讲——01

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 2:05:46

1.2 I.MX6ULL C语言版LED驱动试验
1.2 I.MX6ULL C语言版LED驱动试验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 2:04:43

可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取
可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取

简介:面向开发者与Web学习者的10分钟临时邮箱源码包,围绕短时有效邮箱地址的生成、收信与到期失效流程,适合用于注册验证、下载试用等不愿暴露真实邮箱的场景,也可作为PHP邮件系统与Web服务设计的实践项目。压缩包共492个文件&… · 2026/11/5 2:41:02

DataGrip连接达梦数据库的完整配置指南
DataGrip连接达梦数据库的完整配置指南

1. 项目概述最近在帮客户做数据迁移时遇到了一个典型场景:需要连接达梦数据库(DM)进行数据操作,但发现DataGrip这款主流数据库IDE并没有预置DM的驱动配置。这其实是个挺常见的痛点——很多国产数据库或小众数据库在主流工具中缺乏原生支持。经过一番摸索… · 2026/11/5 2:41:02

Proxmox VE 7 apt-get update 100错误排查
Proxmox VE 7 apt-get update 100错误排查

很多人在 Proxmox VE 7 上装完系统、打开网页面板、新建第一台虚拟机,回头在 shell 里敲一句apt-get update,结果被一屏红色输出糊了一脸,最后一行写着E: Some index files failed to download...或者干脆只留一句apt-get update failed: exi… · 2026/11/5 2:41:02

DataGrip连接达梦数据库(DM8)实战指南
DataGrip连接达梦数据库(DM8)实战指南

1. 项目概述作为一名长期与数据库打交道的开发者,我深知连接非主流数据库时的痛苦。达梦数据库(DM)作为国产数据库的代表之一,在企业级应用中越来越常见,但很多开发者第一次连接时总会遇到各种问题。本文将基于DataGrip这款强大的数据库管理工… · 2026/11/5 2:41:02

MySQL 5.7安装与配置全指南:从入门到生产环境部署
MySQL 5.7安装与配置全指南:从入门到生产环境部署

1. MySQL 5.7安装前的认知准备MySQL作为全球最流行的开源关系型数据库,5.7版本因其稳定性与性能平衡成为众多企业的首选。这个版本首次引入了原生JSON支持、多源复制等企业级功能,同时优化了InnoDB存储引擎的性能。在开始安装前,需要明确几个… · 2026/11/5 2:41:02

Blender渲染参数与出图流程:引擎、采样、光程、降噪与提速
Blender渲染参数与出图流程:引擎、采样、光程、降噪与提速

1. 先把“渲染”这件事拆成三层来看很多人第一次点开 Blender 的渲染面板,会被密密麻麻的折叠菜单劝退,其实真正影响一张简单静物图成色的,就那么十来个参数。渲染在 Blender 里不是“一个按钮”,而是三层不同性质的东西叠在一起&… · 2026/11/5 2:40:02

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码