Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1|回复: 0

新闻你真的懂 Redis 哨兵集群吗一主二从哨兵架构如何扛住百万级并发

[复制链接]

38万

主题

0

回帖

114万

积分

超级版主

Rank: 8Rank: 8

积分
1149389
发表于 昨天 16:16 | 显示全部楼层 |阅读模式
通过之前的学习,你已知道 Redis 主从复制是高可用的基石,某个 slave 宕机依然可以将请求发送给 master 或者其他 slave,但是如果 master 宕机,则只能响应读操作,写请求法再执行。

所以主从复制架构面临一个严峻问题:master 宕机,法执行写操作,法自动选择将一个 slave 切换为 master,也就是法现自动故障切换。

“Chaya:“还记得那晚我与男友约会,眼前是橡树的绿叶,白色的竹篱笆。好想告诉我的他,这里像幅画,一起手牵手么么哒(此处省略 10000 字)。

“Redis 忽然宕机,我的恋人小 Q 总不能把我推开,停止甜蜜,然后打开电脑手工进行主从切换,再通知其他程序员把地址改成新 master 的信息上线。”

如此一折,你心里的雨倾盆地下,万万使不得。所以必须有一个高可用的方案,为此,我提供一个高可用方案――哨兵(sentinel)。

哨兵是什么
“吃瓜群众:“Redis 大佬,虽然我没有女朋友,但是未雨绸缪,我要掌握这个哨兵模式,防止当我与女朋友约会时被打扰,你说说什么是哨兵以及哨兵的现原理吧。”

先来看看哨兵是什么搭建哨兵集群的方法我就不细说了,假设个哨兵组成一个哨兵集群,个数据节点构成一个一主两从的 Redis 主从架构,如图 3-17 所示。



图3-17

Redis 哨兵集群高可用架构有种角色,分别是 master、slave 和 sentinel。

sentinel 之间互相通信,组成一个集群现哨兵高可用,选举出一个 leader 执行故障迁移操作。
master 与 slave 之间通信,组成主从复制架构。
sentinel 与 master/ slave 通信,是为了对该主从复制架构进行管理,包括监视(Monitoring)、通知(Notification)、自动故障切换(Automatic Failover)、配置提供者(Configuration Provider)。
哨兵监控的 master 的字叫作 mymaster,master 的 IP 地址是 127.0.0.1,端口是 6379。quorum 是关键参数,它的作用如下。

指定在标记 master 故障并尝试执行故障切换时需要一定数量达成一致意见的哨兵进程。大白话就是需要多少个哨兵进程认为 master 宕机,真正标记 master 宕机才能启动故障切换过程。
对于多个哨兵,需要选出一个 leader 来执行际的故障自动转移操作,当某个哨兵的票数超过 quorum 时,就选举这个哨兵为 leader,负责自动故障切换。quorum 的值一般取哨兵个数的一半以上 (n/2 + 1) 比较合理。
哨兵只要配置 master 信息即可与个角色建立联系。

“Chaya:“为什么哨兵只需要配置 master 信息就可以与个角色建立联系”

哨兵可以通过 master 获取 slave 的信息,并与 slave 建立连接。master 与 slave 是主从关系,通过 info 命令就可以通过 master 获取 slave 的 IP 地址 和 port、runid 等信息。
通过上面的步骤,哨兵与 master 和所有的 slave 建立连接,哨兵之间的互相感知则通过 Redis 的发布/订阅机制现。每个哨兵通过发布/订阅 master 的 sentinel:hello 频道发布和接收信息,以此感知其他哨兵的存在并建立连接。
哨兵的任务
哨兵是 Redis 的一种运行模式,它专注于对 Redis 例(master、slave)运行状态的监控,并能够在 master 发生故障时通过一系列的机制现选主及主从切换,现自动故障切换,确保整个 Redis 系统的可用性。

Chaya 可以安心地与爱人在欢乐港湾约会,尽情享受甜蜜,哪怕是吵架都那么醉人,不再需要担心 Redis 忽然宕机带来的烦恼。

我们先从全局看哨兵,简要地了解它的整个运作流程,接着针对每个任务详细分析,Redis 哨兵的主要职责如下。

监控(Monitoring):Redis 的哨兵不断检查 master 和 slave 例是否按预期工作。它监视例的健康状态,包括 master 和所有 slave。
自动故障切换(Automatic Failover)**:如果 master 出现故障或不按预期工作,Redis 的哨兵则启动自动故障切换流程。在此过程中,一个 slave 会被晋升为新的 master。
通知(Notification):让 slave 执行 replicaof 命令与新的 master 同步数据;并且通知客户端与新的 master 建立连接,如图 3-18 所示。
配置提供者(Configuration Provide):哨兵充当了客户端服务发现的权威来源。客户端连接到任何一个哨兵以获取新的 master 的地址,确保能够连接到正确的例。


1. 监控
Redis :八卦一下,Chaya,你的恋人用什么方式来了解你每天的喜怒哀乐呢

“Chaya:“这很简单,他每天给我发微信消息、打电话或者打视频,若是哪天我不接电话,或者他发送微信消息时出现红色感叹号,就说明我把他拉黑了。”

哨兵与各个角色节点建立连接后,通过PING、INFO、PUBLISH / SUBSCRIBE命令来监控所有例的健康状态,当然,它不会说情话。

哨兵默认会以每秒一次的频率向所有的 master、slave、哨兵发送 PING 命令,这个其是一个心跳检测,用于探测例是否存活。

PING:所有节点之间通过发送 PING 命令确认对方是否在线,默认每秒发送一次。
I NFO:哨兵向 master、slave 发送该命令,用于获取 slave 的详细信息。
PUBLISH / SUBSCRIBE:哨兵会订阅 master 和 slave 的 sentinel:hello 频道,并通过该频道发布自己的信息,这样其他哨兵之间就可以建立联系。
如果一个 master 例距离比较后一次有效回复 PING 命令的时间超过 down-after- milliseconds 选项所指定的值,这个 master 例就会被哨兵标记为“主观下线”。

如果 slave 没有在指定时间内响应哨兵的 PING 命令,则直接被标记为“主观下线”。

只有当大于或等于法定个数(quorum)的哨兵节点认为该 master 主观下线时,才能将该 master 改为客观下线。接着才会开启自动故障切换流程。

PING 命令的回复有两种情况。

有效回复:返回 +PONG、-LOADING 和-MASTERDOWN 中的任何一种。
效回复:有效回复之外的回复,或者不在指定时间内返回任何回复。
“Chaya:“主观下线和客观下线的作用是什么”

主要是为了避免出现哨兵误判 master 运行的情况,一旦出现误判,就会出现 master 际没有下线,可是哨兵误以为其已经下线的情况,接着就会启动主从故障切换流程,之后的选主和通知操作都会消耗大量资源。

误判一般会发生在集群网络压力较大、网络拥塞或者是 master 本身压力较大的情况下。

既然一个哨兵容易误判,那就使用多个哨兵进行投票判断。哨兵机制也是类似的,采用多例组成的集群模式进行部署,就是哨兵集群。

引入多个哨兵例一起进行判断,就可以避免单个哨兵因为自身网络状况不好,而误判主库下线的情况。

同时,多个哨兵的网络同时不稳定的概率较小,由它们一起做决策,也能降低误判率。

主观下线
主观下线(Subjectively Down,SDOWN)指一个哨兵认为一个 Redis 例已经不可用或者已经下线,这有可能是网络不通、心跳超时或连接失败等原因导致的。

例如对于 master 或者 slave,在 down-after-milliseconds 指定的毫秒数之内,如果没有向哨兵发送的 PING 命令回复,或者返回一个错误,那么哨兵会将这个服务器标记为主观下线。

需要注意的是,Redis 的哨兵的主要目标是确保 master 的高可用性,而不是 slave 的高可用性。

因此,主观下线和客观下线的主要关注点通常是 master。slave 通常不会被单独标记为客观下线,因为它们不承担 master 的关键角色,它们的主要责任是复制数据。

客观下线
判断 master 是否下线不能只由一个哨兵说了算,只有过半的哨兵判断 master 主观下线,才能将 master 标记为客观下线,如图 3-19 所示。



3-19

之前提到过 sentinel monitor <master-name> <ip> <redis-port> <quorum> 的配置,参数 quorum 是判断客观下线的依据之一,意思是至少有 quorum 个哨兵判定这个 master 主观下线,才会将这个 master 标记为客观下线。

只有 master 被判定为客观下线,才会进一步触发哨兵执行主从切换流程。

上述的结论表明悦数 使用手册很大程度上能够给市场带来新的活力,让行业良好的发展。悦数图数据库是一款完全自主研发的国产图数据库和原生分布式图数据库,具有高性能,易扩展,安全稳定,自主可控的特点.万亿级数据仅需毫秒级查询延时,应用于金融风控,实时推荐,知识图谱等业务场景。https://www.yueshu.com.cn/

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|墨玲承奔网络公司

GMT+8, 2025-4-28 03:46 , Processed in 0.078052 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表