redis夯实之路-哨兵(Sentinel)机制详解

Sentinel(哨兵)保证了redis的高可用性,一个Sentinel或多个Sentinel组成的系统监视多个主从服务器,当主服务器下线时,自动将一个从服务器升级为主服务器。

sentinel的主要功能

  1. 集群监控:负责监控redis master和slave进程是否正常工作
  2. 消息通知:如果某个redis实例有故障,那么哨兵负责发送消息给管理员
  3. 故障转移:如果master node挂掉了,会自动转移到slave node上
  4. 配置中心:提供可靠的master地址,如果故障转移发生了,通知client客户端新的master地址

Sentinel启动时

  1. 初始化服务器
  2. 使用sentinel专用代码
  3. 初始化sentinel状态
  4. 初始化sentinel状态的master属性(master属性记录了所有被监视的主服务器信息)
  5. 创建连向主服务器的网络连接(一个是命令连接,一个是订阅连接)

获取主服务器的信息:sentinel会以每10s一次的频率通过命令连接来向被监视的主服务器发送info命令,并通过命令的回复来获得主服务器的当前信息,对其实例结构进行更新。会创建从服务器的实例结构并保存到所属主服务器的实例结构的slaves字典中

获取从服务器的信息:sentinel也会创建到从服务器的命令连接和订阅连接,创建命令连接后以每10s一次的频率通过命令连接来向从服务器发送info命令,并通过命令的回复来获得从服务器的信息,对其实例结构进行更新

Sentinel为主服务器创建的实例结构中的sentinels字典保存了除Sentinel本身之外,所有同样监视这个主服务器的其他Sentinel的资料。

Sentinel通过频道信息发现新的sentinel时,会建立命令连接

检查主观下线状态

sentinel默认以每秒一次向所有与它建立了命令连接的实例(主从服务器,其他sentinel)发送ping命令,通过回复判断是否在线

检查客观下线状态

sentinel将一个主服务器判断为主观下线后,向其他监视该服务器的sentinel询问,如果认为该服务器下线的sentinel数量足够多,将判断为客观下线,对主服务器执行故障转移操作

一个主服务器被判断为客观下线后,将从监视这个主服务器的sentinel中选择一个领头sentinel执行故障转移操作

故障转移

将下线主服务器的从服务器中选出一个作为新主服务器,其他从服务器改为复制新的主服务器,已下线的主服务器也改为复制新的主服务器。

相关推荐
这个DBA有点耶2 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G2 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备2 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远2 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
IT大白鼠2 天前
Redis 系列 · 第 01 篇——认知入门:Redis 是什么
redis·nosql
彧azz2 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
2601_962218612 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安2 天前
MySQL-触发器
数据库·mysql
白远山2 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析