Redis 6.x哨兵模式配置有哪些最佳实践?

陌雪大大_7395

陌雪大大_7395

2026-07-13

609人浏览

原创

哨兵节点推荐部署3个,奇数个且不与redis实例混部;quorum值设为哨兵总数一半向上取整,需统一主从及哨兵密码,合理配置down-after-milliseconds和failover-timeout参数,并确保客户端通过sentinel get-master-addr-by-name动态获取主节点地址。

redis 6.x哨兵模式配置有哪些最佳实践?

哨兵节点必须用奇数个,且不能和Redis实例混部

哨兵不是“越多越好”,3个是生产环境最稳妥的起点。5个适合跨机房部署,但7个以上会显著拖慢故障判定速度——因为每次客观下线(ODown)都需要多数派达成共识,quorum 值越大,网络抖动时误判风险越高。

常见错误是把 redis-server 和 redis-sentinel 进程跑在同一台机器、甚至同一个 Docker 容器里。一旦该机器宕机,主从+哨兵全挂,高可用就失效了。真实部署中,每个哨兵必须独占物理机或独立容器,且 IP 不同、网络路径不重叠。

  • sentinel monitor mymaster 192.168.1.10 6379 2 中的 2 表示 quorum,3 个哨兵就设为 2;5 个哨兵建议设为 3
  • 所有哨兵的 sentinel announce-ip 必须填对外可访问的真实 IP,不能写 127.0.0.1 或 0.0.0.0,否则客户端连不上
  • 如果用 Docker,每个哨兵容器要显式指定 --network host 或自定义 bridge 网络,并确保 announce-port 和宿主机映射端口一致

主从节点密码必须统一,且哨兵配置里不能漏 auth-pass

Redis 6.x 默认启用 ACL,但哨兵仍依赖老式 requirepass 兼容模式。只要主节点设了密码,所有从节点的 masterauth 和所有哨兵的 sentinel auth-pass 就必须完全一致,否则故障转移时哨兵无法登录从节点执行 slaveof no one。

典型报错是日志里反复出现 Failed to AUTH during SENTINEL FAILOVER 或 NOAUTH Authentication required,本质就是密码没对齐。

Redis Skill - 高性能缓存管理
Redis Skill - 高性能缓存管理

Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。

下载
  • 主节点 redis.conf:设置 requirepass "p@ssw0rd"
  • 从节点 redis.conf:必须配 masterauth "p@ssw0rd"
  • 哨兵 sentinel.conf:必须配 sentinel auth-pass mymaster "p@ssw0rd"
  • 切记:sentinel auth-pass 的密码是明文存储在配置文件里的,别用生产环境强密码,建议单独设一个只用于哨兵通信的弱密码

down-after-milliseconds 和 failover-timeout 要按网络质量调

这两个参数直接决定故障转移快慢和误切概率。down-after-milliseconds 太小(比如 1000ms),会在短暂网络抖动时触发主观下线(SDown),进而引发不必要的投票;太大(比如 30000ms),主节点真挂了却迟迟不切换,业务写请求持续超时。

failover-timeout 不是“超时就放弃”,而是整个故障转移流程的最大窗口——包括选主、提升、重配从节点、旧主恢复后降级。设太短(如 5000ms)会导致流程被中止,集群卡在中间态;设太长(如 300s)会让客户端长时间拿不到新主地址。

  • 局域网稳定环境:建议 sentinel down-after-milliseconds mymaster 5000,sentinel failover-timeout mymaster 18000
  • 跨机房或公网部署:上浮到 10000 和 60000,并配合增大 parallel-syncs 避免从节点同步风暴
  • 务必检查哨兵日志里是否频繁出现 +sdown → -sdown 来回切换,那是网络延迟波动导致的,得调参

客户端连接必须走 SENTINEL GET-MASTER-ADDR-BY-NAME,不能硬编码

哨兵本身不代理请求,它只提供服务发现。客户端每次发写请求前,必须先连任意一个哨兵,执行 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster 拿到当前主节点地址,再连过去。很多团队图省事,在代码里写死 192.168.1.10:6379,结果主节点一换,所有写请求全失败。

更隐蔽的问题是:部分 SDK(比如早期 Jedis)默认不自动刷新主节点地址,需要手动调用 setMaster 或开启 sentinelSupport 开关;Lettuce 则依赖 RedisSentinelConfiguration 初始化时传入哨兵列表。

  • 测试方法:手动 kill 主 Redis 进程,等哨兵完成切换后,立刻执行 redis-cli -p 26379 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster,确认返回的是新主 IP 和端口
  • Java 客户端必须确保连接池支持 Sentinel 自动发现,否则即使配置了哨兵地址,底层还是连老主节点
  • 别信“哨兵会自动重定向”这种说法——Redis 协议本身不支持重定向写请求,客户端必须自己处理
哨兵模式真正难的不是配置语法,而是让所有组件在故障发生时节奏一致:哨兵要能及时感知、投票不僵持、切换不卡住;客户端要能及时感知地址变更、重连不堆积;运维要能快速区分是真故障还是网络闪断。任何一个环节掉链子,高可用就变成高不可用。

相关专题

更多
常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4269

19

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.14

3775

11

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

6812

6

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

623

6

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

736

6

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

6402

6

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1140

6

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1016

6

redis主要作用有哪些
redis主要作用有哪些

redis 的主要作用包括:1. 缓存数据,提高访问速度;2. 充当消息队列,实现消息传递;3. 存储各种数据类型,如字符串、散列和集合;4. 管理会话信息,确保可靠性和可用性;5. 限制请求速率,防止服务器超载等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

5718

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习