Redis哨兵模式下出现频繁切换选举该如何排查?

雨墨吖_3157

雨墨吖_3157

2026-07-25

688人浏览

原创

哨兵日志看不到选举过程,需先将loglevel设为verbose才能显示+odown、+try-failover等关键事件;默认notice级别会过滤这些信息,导致无法观察选举细节。

redis哨兵模式下出现频繁切换选举该如何排查?

哨兵日志里看不到选举过程?先调 loglevel 到 verbose

默认 notice 级别会过滤掉 +odown、+try-failover、+failover-state-select-slave 这类关键事件,等于在黑盒里操作。

  • 临时改:用 redis-cli -p 26379 连上任意哨兵,执行 CONFIG SET loglevel verbose
  • 永久改:在 sentinel.conf 中加 loglevel verbose,再执行 SENTINEL RELOAD 或重启进程
  • 注意:verbose 日志量很大,定位完问题务必调回 notice,否则磁盘和 I/O 压力会突增

看到 +sdown 但没升级成 +odown?检查 quorum 和在线哨兵数是否匹配

+sdown 是单个哨兵的主观判断,真正触发故障转移必须达成 +odown——这需要足够多哨兵共同确认。卡在这一步最常见。

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

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

下载
  • 查当前配置:CONFIG GET quorum(注意它绑定在 sentinel monitor 行,不是全局参数)
  • 确认实际在线哨兵数:SENTINEL SENTINELS mymaster,返回的数组长度才是真实可用数
  • 如果 quorum=2 但只剩 1 个哨兵存活,永远凑不够票数;3 个哨兵建议设 quorum 2,5 个建议设 quorum 3
  • 所有哨兵必须能双向通信:检查 sentinel announce-ip 和 sentinel announce-port 是否填了真实可达地址(别写 127.0.0.1),并确认防火墙放行了 26379 端口的 TCP 双向连接

切换成功但客户端连不上新主?重点查 SENTINEL RESET 和 DNS 缓存

哨兵可能还记着旧 master 地址,尤其在原 master 恢复或手动 failover 后未清理状态时。

  • 强制刷新:SENTINEL RESET mymaster(mymaster 替换为你监控名),它会清空该 master 的全部缓存状态并重新发现
  • 验证结果:SENTINEL MASTER mymaster 查看 ip 和 port 字段是否已更新为当前主节点的真实地址
  • 若用 DNS 名(如 redis-prod.example.com)做 master 地址,确保 DNS TTL 足够短(建议 ≤60s),否则哨兵只在初始化或 RESET 时解析一次,不会主动重查

频繁切换根本不在哨兵配置上?先验时钟同步和网络双向连通性

很多人一上来就调 down-after-milliseconds 或 quorum,结果只是掩盖问题。真正根因常是时钟偏差或网络单向隔离。

  • 查时钟:每台哨兵和 Redis 节点都运行 ntpstat,输出需为 synchronised to NTP server 且 offset 在 ±50ms 内;更细粒度用 chronyc tracking,System time offset 超 ±100ms 就要干预
  • 抓包验证通信:tcpdump -i any port 26379,重点看有没有大量 [TCP Retransmission] 或单向收包无响应——云环境常见安全组只开了入方向,K8s headless Service 下 Pod IP 跨节点不通也常导致丢包
  • 别跳过这两步直接改哨兵参数:时钟不同步或网络隔离不解决,延迟只会越来越高,最终法定票数彻底失效
真实场景里,SENTINEL RESET 和时钟校准往往比调参见效更快;而 DNS 缓存和 announce-ip 配错,是生产环境最常被忽略的两个硬伤。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

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

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

2023.11.02

4449

19

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

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

2023.11.14

3995

11

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

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

2024.04.02

7352

6

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

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

2024.04.07

643

6

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

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

2024.04.07

756

6

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

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

2024.04.07

7182

6

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

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

2024.04.07

1160

6

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

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

2024.04.07

1076

6

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

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

2024.04.07

6318

6

热门下载

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

精品课程

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

共0课时 | 0人学习