Redis哨兵(主从架构 + Sentinel)

redis哨兵机制 - 配置文件sentinel.conf详解 Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis的主从结构时,如果主节点挂掉,这时是不能自动进行主备切换和通知客户端主节点下线的Redis-Sentinel机制主要用三个功能监控:不停监控Redis主从节点是否安装预期运行提醒:如果Redis运行出现问题可以 按照配置文件中的配置项 通知客户端或者集群管理员自动故障转移:当主节点下线之后,哨兵可以从主节点的多个从节点中选出一个为主节点,并更新配置文件和其他从节点的主节点信息。 阅读详情

整合 Sentinel 与现有主从架构的完整步骤


在这里插入图片描述

一、配置修正说明

您当前的配置存在概念混淆:cluster.nodes 是用于 Redis Cluster 模式 的配置,而主从架构 + Sentinel 需要使用 Sentinel 专用配置。以下是正确的整合方案:


二、正确配置方案

1. 修改 application.yml
spring:
  redis:
    # 删除 cluster 配置段
    # 新增 sentinel 配置段
    sentinel:
      master: mymaster  # 主节点名称(需与哨兵配置一致) 创建 Sentinel 配置文件 第二句里面的 这个 sentinel monitor mymaster 127.0.0.1 6379 2
      nodes:
        - 127.0.0.1:26379  # Sentinel 节点1
        - 127.0.0.1:26380  # Sentinel 节点2
        - 127.0.0.1:26381  # Sentinel 节点3
    # 保留原有配置
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 2
      read-from: REPLICA_PREFERRED # 开启读写分离
    # 密码配置(按需)
    password: your_redis_password  # Redis节点密码
    # Sentinel节点密码(如果哨兵有密码)
    sentinel:
      password: sentinel_password

配置写好之后无需关心内部是如何来处理的,写业务代码和之前的一个Redis是一样的。

三、Sentinel 服务端配置

1. 创建 Sentinel 配置文件
# 创建配置目录
mkdir -p /etc/redis/sentinel/{26379,26380,26381}

# Sentinel 1 (26379)
cat > /etc/redis/sentinel/26379/sentinel.conf <<EOF
port 26379
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel auth-pass mymaster your_redis_password
sentinel parallel-syncs mymaster 1
daemonize yes
logfile "/var/log/redis/sentinel_26379.log"
EOF

# Sentinel 2 (26380) 和 Sentinel 3 (26381) 配置类似,修改 port 和 logfile 路径

Sentinel 配置文件第二句这个 sentinel monitor mymaster 127.0.0.1 6379 2 指定了Redis主节点然后就需要其配置Redis的地址了,需要注意你配置的主节点的地址和端口号,上面这个只是一个例子而已。

2. 启动 Sentinel 服务
redis-sentinel /etc/redis/sentinel/26379/sentinel.conf
redis-sentinel /etc/redis/sentinel/26380/sentinel.conf
redis-sentinel /etc/redis/sentinel/26381/sentinel.conf

四、验证整合效果

1. 检查 Sentinel 拓扑发现
# 连接任意 Sentinel 节点
redis-cli -p 26379
127.0.0.1:26379> sentinel master mymaster

预期输出包含:

num-slaves 2  # 从节点数量
2. 客户端连接验证
@SpringBootTest
public class SentinelIntegrationTest {

    @Autowired
    private RedisConnectionFactory connectionFactory;

    @Test
    void testSentinelConnection() {
        LettuceConnectionFactory lettuceFactory = (LettuceConnectionFactory) connectionFactory;
        RedisSentinelConfiguration sentinelConfig = lettuceFactory.getSentinelConfiguration();
        
        System.out.println("当前主节点: " + lettuceFactory.getHostName() + ":" + lettuceFactory.getPort());
        System.out.println("哨兵节点列表: " + sentinelConfig.getSentinels());
    }
}

五、故障转移测试

1. 模拟主节点宕机
# 停止主节点 Redis 服务
redis-cli -p 6379 shutdown
2. 观察故障转移过程
# 查看 Sentinel 日志
tail -f /var/log/redis/sentinel_26379.log

预期日志内容:

+sdown master mymaster 127.0.0.1 6379
+vote-for-leader XXXX 1
+switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380
3. 验证客户端自动切换

重新运行测试用例,观察主节点地址是否变为新选举的主节点(如 6380)


六、生产环境优化配置

1. 安全加固
spring:
  redis:
    ssl: true  # 启用 TLS 加密
    lettuce:
      sentinel:
        password: $SENTINEL_PASSWORD  # 从环境变量读取
2. 连接池调优
spring:
  redis:
    lettuce:
      pool:
        max-wait: 1000ms  # 最大等待时间
        time-between-eviction-runs: 30s  # 空闲连接检查间隔
3. 监控配置
management:
  endpoints:
    web:
      exposure:
        include: health,metrics,redis
  metrics:
    export:
      prometheus:
        enabled: true

七、架构示意图

Spring Boot
Sentinel 26379
Sentinel 26380
Sentinel 26381
Master 6379
Slave 6380
Slave 6381

八、关键配置对照表

组件原配置新配置作用变化
Spring Bootcluster.nodessentinel.nodes从直连节点改为通过哨兵发现
Redis独立主从主从 + Sentinel 监控实现自动故障转移能力
客户端路由硬编码节点地址动态获取拓扑信息支持自动切换主节点

九、常见问题解决

问题1:客户端无法连接 Sentinel

现象:RedisConnectionFailureException: Unable to connect to Sentinel
解决方案:

  1. 检查 Sentinel 端口是否开放:netstat -tulnp | grep 26379
  2. 验证 Sentinel 认证密码是否正确
  3. 查看 Sentinel 日志:tail -f /var/log/redis/sentinel_26379.log
问题2:读写分离失效

现象:所有请求都路由到主节点
排查步骤:

  1. 确认 read-from: REPLICA_PREFERRED 配置生效
  2. 检查从节点复制状态:redis-cli -p 6380 info replication
  3. 查看 Lettuce 拓扑发现结果:
    ((LettuceConnectionFactory) redisTemplate.getConnectionFactory()).getTopology()
    

通过以上配置,您的 Spring Boot 应用将实现:

  1. 自动故障转移:主节点宕机时自动切换
  2. 读写分离:读操作优先分发到从节点
  3. 动态拓扑感知:客户端实时感知集群状态变化
  4. 生产级可靠性:通过连接池和 SSL 确保稳定安全
Redis主从部署及sentinel配置详细教程 阅读详情

相关推荐

Redis一主二从Sentinel监控配置(保姆级教程)

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

xcbyaya的博客 1678

Redis哨兵Sentinel配置

文章目录1 Sentinel的功能2 配置Redis哨兵模式2.1 基础环境准备2.2 修改配置文件2.3 启动Sentinel3 故障转移测试 1 Sentinel的功能 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过API向管理 员或者其他应用程序发送通知。 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作

RSQ博客 5886

配置哨兵监控Redis运行情况

Redis的主从架构,如果master发现故障了,还得手动将slave切换成master继续服务,手动的方式容易造成失误,导致数据丢失,那Redis有没有一种机制可以在master和slave进行监控,并在master发送故障的时候,能自动将slave切换成master呢?有的,那就是哨兵。哨兵的作用: 1、监控redis进行状态,包括master和slave 2、当master down机,能

打不死的小强 2万+

Redis7【⑦ Redis哨兵(sentinel)】

Redis7【⑦ Redis哨兵(sentinel)】

weixin_44981126的博客 3177

进程间通信的七种方法实战演示!值得收藏!

线程和进程间的通讯(Inter-Process Communication, IPC)是操作系统中的一个重要概念,用于实现不同进程或同一进程中的不同线程之间的数据交换和协调。以下是几个常见的进程间通信的方式:管道、消息队列、共享内存、信号、套接字、信号量、文件映射

十年饮冰,难凉热血,保持热爱,奔赴星海! 2816

Chapter 5 Gate Drivers and Level Shifters

Gate driver如下图所示, 包括功率管(带保护), Gate driver, Level shifter, Gate Supply 和Dead-time control.

2304_76736886的博客 2236

使用sentinel(哨兵)实现redis主从架构高可用

主机redis哨兵redis主机redis从1redis从2。

weixin_40448605的博客 739

Lattice FPGA 开发工具Diamond使用流程总结——工具使用

本文介绍了一般的Diamond开发流程,包括工程创建、文件输入、IP使用、约束、管脚分配、和布线布局等流程

weixin_41895751的博客 2万+

redis主从架构与redis+sentinel 哨兵机制架构搭建(生产可用)

redis的搭建过程,请参考 https://blog.51cto.com/12445535/2385106 接下来,我们再找一台服务器,进行安装redis 实现redis的主从架构 和上面的方法搭建一个redis只不过在从redis中的配置文件中写[root@prd3-redis02-10-184 conf]# grep slaveof 6379.conf ######## slav...

weixin_33997389的博客 147

【嵌入式Linux】EC20模块多运营商自适应PPP拨号实战:从IMSI识别到网络配置

本文详细介绍了在嵌入式Linux系统中,如何基于EC20 4G模块实现多运营商自适应PPP拨号。通过解析SIM卡的IMSI识别运营商,并动态配置对应的APN和拨号参数,结合AT指令交互与健壮的pppd脚本,解决了设备跨地域部署时的网络自动连接问题,提升了物联网设备的部署效率和稳定性。

fox11的博客 901

深入解析Buck开关电源中的死区时间设计及其对系统性能的影响

本文深入解析了Buck开关电源中死区时间的设计原理及其对系统性能的关键影响。死区时间通过防止上下管同时导通来避免穿通电流,确保系统安全。文章详细探讨了其工作机制、设置时的效率与安全权衡,以及不当设置对效率、稳定性和EMI的连锁反应,并提供了基于实测的调试方法与实战案例。

Apple的专栏 1129

mysql哨兵机制_redis主从架构与redis+sentinel 哨兵机制架构搭建(生产可用)

接下来,我们再找一台服务器,进行安装redis 实现redis的主从架构和上面的方法搭建一个redis只不过在从redis中的配置文件中写[root@prd3-redis02-10-184 conf]# grep slaveof 6379.conf######## slaveof slaveof 192.168.10.183 6379 //直接添加这个一行,然后启动redis[root@pr...

weixin_34697798的博客 325

EM的理论与实践(基础篇)

EM理论与实践

m0_61544122的博客 2379

redis(5)

redis哨兵介绍(高可用实现)

dreamnn的博客 1060

Android So加载机制分析----基于Android14源码

本文深入分析Android 14系统中SO(共享库)的两种加载机制:System.loadLibrary()和System.load()。前者通过ClassLoader查找标准路径加载,后者直接加载指定路径的SO文件。文档详细追踪了从Java层到动态链接器的完整加载链路,包括ClassLoader路径查找、JNI桥接、ART虚拟机处理以及底层linker的符号解析和重定位过程。同时还分析了Namespace隔离、JNI_OnLoad机制等核心内容,为开发者提供全面的SO加载技术解析和问题排查指南。

保持专注,保持热爱 349

基于Dijkstra算法的共享单车调度优化系统设计与实现

根据最新统计数据,全球共享单车市场规模已超过300亿美元,中国作为最大的共享单车市场,日订单量超过5000万次。Dijkstra算法由荷兰计算机科学家Edsger W. Dijkstra于1956年提出,用于解决带权有向图中的单源最短路径问题。本文详细介绍了基于Dijkstra算法的共享单车调度优化系统的设计与实现。本文将详细介绍基于Dijkstra算法的共享单车调度优化系统的设计与实现,采用Java 17、Spring Boot 3.x等最新技术栈。

2201_76125393的博客 618

Redis主从架构、哨兵集群原理实战

背景目标Redis主从架构介绍。

2302_76363587的博客 1383

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Redis 哨兵:主从架构的自动保镖详解

Redis哨兵(Sentinel)是主从架构的高可用解决方案,通过独立进程监控集群状态,实现自动故障转移。哨兵集群采用奇数节点设计,基于Raft算法选举领导者执行故障转移。部署时建议1主2从+3哨兵架构,通过Docker可快速搭建环境。哨兵工作原理包括主观/客观下线判定、领导者选举和故障转移流程,优先选择数据最新的从节点升主。整个过程无需人工干预,确保Redis集群的高可用性。

phltxy的博客 689

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[2-02-01].第09节:解决故障恢复 - 搭建哨兵架构

搭建哨兵架构

F-T-er 416

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

mysql哨兵机制_Redis之哨兵机制(sentinel)——配置详解及原理介绍

说到Redis不得不提哨兵模式,那么究竟哨兵是什么意思?为什么要使用哨兵呢?接下来一一为您讲解:1.为什么要用到哨兵哨兵(Sentinel)主要是为了解决在主从(master-slave)复制架构中出现宕机的情况,主要分为两种:1.1 从Redis宕机(slave)在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据。在Redis2.8版本后,主从断线后恢复的情况下实现增量复制。1...

weixin_42298332的博客 1399

主从架构模型:

角色设置,有身份的 Master Master:大师,主节点 Slave:奴隶,从节点 主节点可以和客户端联系 从节点只有读和写,从节点的数据是由主节点分配过去的。从节点越多,主节点功能越强大,但是增删改只能由主节点去完成。 无主模型,脑裂,过半确认。 Redis在底层采用,异步分发。坏处是不一致,是不同版本的。 Sentinel:哨兵,监督 在这里是监督主节点的运行状态。 S...

wyqwilliam的博客 2063

Linux系统Redis的哨兵架构配置

一定要先准备好所有配置文件再去启动,否则如果复制了已启动的sentinel节点的配置文件,会导致哨兵集群搭建失败,因为sentinel启动之后会在当前节点使用的sentinel配置文件里追加写入。项目运行时,可关闭掉redis主节点,测试哨兵集群自动选举主节点操作(redis主节点挂掉后,服务会发起10次重新连接,之后会重新选举出一个新的主节点继续操作redis数据)而当6379节点重新启动之后,哨兵集群会根据sentinel里的集群信息,将6379redis节点作为从节点加入到整个集群;

云泽的博客 1445

Redis 哨兵模式详解

1、Sentinel 哨兵 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。 例如: 在Server1 掉线后: 升级Server2 为新的主服

woxingwosu0100的博客 3万+

Redis Sentinel哨兵机制:高可用架构的“智能管家“

由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器以及这些主服务器属下的所有从服务器当被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;Sentinel哨兵监控通知自动故障转移配置提供者24小时值守告警通知秒级切换。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3772

Redis哨兵

在 Redis 的主从架构中,由于主从模式是读写分离的,如果主节点(master)挂了,那么将没有主节点来服务客户端的写操作请求,也没有主节点给从节点(slave)进行数据同步了。 这时如果要恢复服务的话,需要人工介入,选择一个「从节点」切换为「主节点」,然后让其他从节点指向新的主节点,同时还需要通知上游那些连接 Redis 主节点的客户端,将其配置中的主节点 IP 地址更新为「新主节点」的 IP 地址。这样也不太“智能”了,要是有一个节点能监控「主节点」的状态,当发现主节点挂了 ,它自动将一个「从节点」切

mz474920631的博客 6888
上一篇: Redis主从架构
下一篇: Redis 集群结构
小李不秃头♛
博客等级 码龄2年 619粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值