Redis Sentinel高可用实战:主从自动故障转移

一、Sentinel 核心概念

监控:持续检查主从节点是否正常

通知:节点异常时通知管理员或其他程序

自动故障转移:主节点下线时,自动选举新的主节点

配置提供者:客户端通过 Sentinel 获取当前主节点地址

回到顶部

二、环境准备

准备三台服务器(或本地三个端口):

复制代码
主节点:192.168.1.100:6379
从节点:192.168.1.101:6379
从节点:192.168.1.102:6379
Sentinel:三个实例,分别部署在三台服务器

回到顶部

三、主从复制配置

从节点配置(redis.conf):

复制代码
replicaof 192.168.1.100 6379
masterauth yourpassword
replica-read-only yes

启动主从节点后验证:

复制代码
redis-cli info replication
# 输出:role:master / role:slave

回到顶部

四、Sentinel 配置详解

创建 sentinel.conf:

复制代码
port 26379
sentinel monitor mymaster 192.168.1.100 6379 2
sentinel auth-pass mymaster yourpassword
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

配置说明:

• monitor:监控名为 mymaster 的主节点,2 表示需要 2 个 Sentinel 同意才能判定主节点下线

• down-after-milliseconds:30秒无响应则判定下线

• failover-timeout:故障转移超时时间

启动 Sentinel:

复制代码
redis-sentinel /etc/redis/sentinel.conf

回到顶部

五、故障转移测试

模拟主节点宕机:

复制代码
redis-cli shutdown

观察 Sentinel 日志:

复制代码
+sdown master mymaster 192.168.1.100 6379
+odown master mymaster 192.168.1.100 6379 #quorum 2/2
+switch-master mymaster 192.168.1.100 6379 192.168.1.101 6379

回到顶部

六、Spring Boot 整合 Sentinel

application.yml 配置:

复制代码
spring:
  redis:
    sentinel:
      master: mymaster
      nodes:
        - 192.168.1.100:26379
        - 192.168.1.101:26379
        - 192.168.1.102:26379
    password: yourpassword

回到顶部

七、生产环境最佳实践

• 至少部署 3 个 Sentinel 实例(奇数个)

• Sentinel 与 Redis 节点物理隔离部署

• 开启 AOF 持久化:appendonly yes

• 设置强密码:requirepass 和 masterauth

回到顶部

八、总结

Redis Sentinel 提供了开箱即用的高可用方案,核心要点:

• 至少 3 个 Sentinel 实例保证可用性

• 合理配置 down-after 和 failover-timeout

• 客户端必须通过 Sentinel 获取主节点地址

相关推荐
时间静止不是简史3 小时前
生产事故排查:Redis 宕机导致补偿队列消费线程死亡,通话录音未上送业务平台
java·redis
2301_32241428046 小时前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
金銀銅鐵8 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
福建佰胜张工9 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
catoop9 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
Web极客码9 小时前
我用 Claude 分析 Redis 哨兵日志,实现跨机房数据不一致自动对齐
数据库·redis·php
system_error_x9 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
驭渊的小故事10 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring
Elastic 中国社区官方博客10 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn18810 小时前
记录本地安装nacos服务的方法及异常
java·开发语言