您的位置:首页 > 数据库 > Redis

Redis之Sentinel

2019-11-05 11:10 183 查看

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

Redis Sentinel的基本概念

  • Sentinel是对Redis高可用的实现方案,Sentinel是一个管理多个Redis实例的工具,他可以实现对Redis的监控,通知,自动故障转移。

Redis Sentinel架构

 

Sentinel的主要功能

  • Sentinel 的主要功能包括 主节点存活检测主从运行情况检测自动故障转移failover)、主从切换Redis 的 Sentinel 最小配置是 一主一从
  • 监控:Sentinel会不断检查主从服务器的运行状态
  • 通知:当被监控的某个Redis服务出现问题的时候,Sentinel通过Api脚本向管理员或者其他的应用程序发送通知
  • 自动故障转移:当主节点不能正常工作时,它会自动的将与失效主节点是主从关系的一个从节点升级为主节点,并将其他的节点都指向新的主节点
  • 提供配置者:在Redis Sentinel模式下,客户端应用在初始化时连接的是Sentinel节点集合,从中获取主节点的信息

主观下线和客观下线

  • 默认情况下,每个Sentinel节点会以每秒一次的频率向其他的Sentinel节点和redis节点发出ping命令,通过回复来判断其他节点健康状况,类似于心跳机制。
  • 主观下线:适用于主节点和从节点,如果在 down-after-milliseconds 毫秒内,Sentinel没有收到 目标节点 的有效回复,则会判定 该节点 为 主观下线

Redis Sentinel的工作原理

        每个 Sentinel 节点都需要 定期执行 以下任务:

  • 每个 Sentinel 以 每秒钟 一次的频率,向它所知的 主服务器从服务器 以及其他 Sentinel 实例 发送一个 PING 命令
  • 如果一个 实例instance)距离 最后一次 有效回复 PING 命令的时间超过 down-after-milliseconds 所指定的值,那么这个实例会被 Sentinel 标记为 主观下线
  • 如果一个 主服务器 被标记为 主观下线,那么正在 监视 这个 主服务器 的所有 Sentinel 节点,要以 每秒一次 的频率确认 主服务器 的确进入了 主观下线 状态。
  • 如果一个 主服务器 被标记为 主观下线,并且有 足够数量 的 Sentinel(至少要达到 配置文件 指定的数量)在指定的 时间范围 内同意这一判断,那么这个 主服务器 被标记为 客观下线
  • 在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率,向它已知的所有 主服务器从服务器 发送 INFO 命令。当一个 主服务器Sentinel 标记为 客观下线 时,Sentinel下线主服务器 的所有 从服务器 发送 INFO 命令的频率,会从 10 秒一次改为 每秒一次

  • Sentinel 和其他 Sentinel 协商 主节点 的状态,如果 主节点 处于 SDOWN 状态,则投票自动选出新的 主节点。将剩余的 从节点 指向 新的主节点 进行 数据复制
  • 当没有足够数量的 Sentinel 同意 主服务器 下线时, 主服务器 的 客观下线状态 就会被移除。当 主服务器 重新向 Sentinel 的 PING 命令返回 有效回复 时,主服务器 的 主观下线状态 就会被移除
  • 注意:一个有效的 PING 回复可以是:+PONG-LOADING 或者 -MASTERDOWN。如果 服务器 返回除以上三种回复之外的其他回复,又或者在 指定时间 内没有回复 PING 命令, 那么 Sentinel 认为服务器返回的回复 无效non-valid)。

参考文献:https://juejin.im/post/5b7d226a6fb9a01a1e01ff64#heading-11

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息