Redis:哨兵机制

为什么要有哨兵?

Redis 哨兵是一个分布式系统,用于监控 Redis 主从集群的状态,并在主节点出现故障时自动进行故障转移,确保系统的高可用性。它可以实时监测多个 Redis 节点的运行状况,包括主节点和从节点。引入哨兵的好处:

  • 保证系统高可用:在 Redis 主从复制架构中,主节点承担着读写操作,一旦主节点出现故障,整个系统就会面临无法写入和部分读取异常的问题。哨兵能够实时监测主节点的运行状态,当主节点发生故障时,自动将一个从节点提升为新的主节点,保证系统的读写功能能够继续进行,从而提高系统的可用性和稳定性。
  • 实现自动故障转移:通过哨兵的自动故障转移机制,能够在主节点故障时快速地完成新主节点的选举和切换,无需人工干预,大大减少了系统故障恢复时间。这对于一些对实时性要求较高的应用场景至关重要,可以避免因人工介入不及时而导致的业务长时间中断。
  • 监控与通知:哨兵可以监控整个 Redis 集群中各个节点的运行状况,包括主节点、从节点的状态信息,如节点是否在线、内存使用情况、复制偏移量等。同时,当集群中发生节点故障、主从切换等重要事件时,哨兵能够及时向管理员或其他相关组件发送通知,以便及时采取相应的措施。

核心功能

监控

哨兵会不断检查主节点和从节点的状态,确保它们正常运行。哨兵通过以下方式实现监控:

  • 定期发送 PING 命令 :哨兵会定期向主节点、从节点和其他哨兵实例发送 PING 命令,检测它们是否正常运行。
  • 检查响应 :如果节点在指定时间内(由 down-after-milliseconds 配置项决定)没有响应 PING 命令,哨兵会将该节点标记为 主观下线(Subjectively Down, SDOWN)
  • 多哨兵确认 :单个哨兵的主观下线判断可能会误判(例如网络抖动),因此需要多个哨兵实例共同确认。如果多数哨兵都认为主节点下线,则主节点会被标记为 客观下线(Objectively Down, ODOWN)

选主

如果主节点失效,哨兵会自动将一个从节点提升为新的主节点,并让其他从节点复制新的主节点。选主的过程分为以下几个步骤:

  1. 选举领头哨兵(Leader Sentinel)
    • 当主节点被标记为客观下线后,所有哨兵实例会通过 Raft 算法选举出一个领头哨兵。(哨兵节点一般设置为奇数个便于投票选举)
    • 领头哨兵负责执行故障转移操作,其他哨兵则处于跟随状态。
  2. 选择新的主节点
    • 领头哨兵会从当前的从节点中选择一个最合适的节点作为新的主节点。
    • 选择标准包括:
      • 从节点的优先级(由 slave-priority 配置项决定,一般根据服务器配置设置)。
      • 从节点的复制偏移量(选择数据最接近原主节点的从节点,也就是offset最大的节点)。
      • 从节点的运行状态(选择运行时间最长的从节点,也就是runid最小的节点)。
  3. 提升从节点为主节点
    • 领头哨兵会向选定的从节点发送 SLAVEOF NO ONE 命令,将其提升为主节点。
    • 然后,哨兵会更新其他从节点的配置,让它们复制新的主节点。
  4. 更新配置
    • 故障转移完成后,哨兵会更新自己的配置文件,记录新的主节点信息。

通知

当监控的 Redis 实例出现问题时,哨兵可以通过 API 或脚本通知系统管理员或其他应用程序。哨兵支持以下通知方式:

  • 脚本通知:哨兵可以调用用户自定义的脚本,将事件信息传递给脚本处理。例如,可以通过脚本发送邮件或短信通知管理员。
  • 日志记录 :哨兵会将重要事件记录到日志文件中,供后续分析。
    件或短信通知管理员。
  • 日志记录:哨兵会将重要事件记录到日志文件中,供后续分析。
相关推荐
王道长服务器 | 亚马逊云7 小时前
AWS CloudWatch:服务器的“眼睛”,实时监控一切动向
服务器·数据库·aws
怪兽201410 小时前
什么是 Redis?
java·数据库·redis·缓存·面试
wangmengxxw11 小时前
Redis概述
数据库·redis·缓存
笔生花11 小时前
【实战-12】flink版本表
数据库·sql·flink
花月C11 小时前
高效查找数据的数据结构—MySQL 索引
数据结构·数据库·mysql
我笔记11 小时前
关系型数据库RDBMS与非关系型数据库NoSQL区别
数据库·oracle
PiscesCanon12 小时前
达梦开启awr功能报错:[-7160]:Object [DBMS_WORKLOAD_REPOSITORY_DATA_LOW] is invalid
数据库·mysql
SZ17011023112 小时前
新机器 银河麒麟 安装 达梦数据库
数据库
清风66666612 小时前
基于单片机的图书馆智能座位管理平台
数据库·单片机·嵌入式硬件·毕业设计·课程设计
摇滚侠12 小时前
Spring Boot 3零基础教程,Spring Boot 日志的归档与切割,笔记22
spring boot·redis·笔记