redis之(十五)redis的集群中的哨兵角色

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 一:redis集群的哨兵的目的是什么?。 (1)监控主redis和从redis数据库是否正常运行 (2)主redis出现故障,自动将其中一台从redis升级为主redis。将原先的主redis转变成从redis     二:redis集群+哨兵的的结构图 三单机模拟实现redis集群...
一:redis集群的哨兵的目的是什么?。
(1)监控主redis和从redis数据库是否正常运行
(2)主redis出现故障,自动将其中一台从redis升级为主redis。将原先的主redis转变成从redis
 
 
二:redis集群+哨兵的的结构图
三单机模拟实现redis集群+哨兵的分布式部署
(1)启动redis集群
(2)查看集群角色
(3)启动哨兵(在配置文件中写入:sentinel monitor mymaster 127.0.0.1 6379 1)
==>配置文件格式:sentinel momitor 数据库名字 主redis的ip地址  主redis端口号  执行故障恢复前
==>启动哨兵后,并杀死6379端口实例.会从6380.6381里选举一个实例,称为新的主redis
==>图片中+try-failover表示哨兵开始进行故障恢复。-failover-end表示哨兵完成故障恢复,期间涉及的内容很复杂,包括领头哨兵的选举,备选从数据库的选择。
==>图片中+switch-master表示主redis从6379端口迁移到6381.6379实例的信息并没有被哨兵清除
==>图片中-sdown表示6379重新启动,加入到集群中。
 
四:哨兵的原理
(1)哨兵的配置文件,要找出需要监控的主数据库。
  --->sentinel monitor master-name  ip  redis-port quorum
  --->master-name 主数据库的名字
  --->ip表示当前系统中主数据库的地址
  --->redis-port 表示当前系统中主数据库的端口号
  --->quorum表示故障恢复操作前至少需要几个哨兵节点同意。
 
(2)一个哨兵节点可以监控多个redis主从系统,只需要提供多个sentinel monitor配置即可。同时多个哨兵节点也可以同时监控一个redis主从系统。
 
(3)哨兵启动后,会与要监控的主数据库建立两条链接。这两个链接的建立方法与普通的redis客户端一样。其中一条链接用来订阅主数据库_sentinel_:hello频道以获取其他同样监控该数据库的哨兵节点信息。另外一条链接,需要定期向主数据库发送info等命令来获取主数据库的本身的信息。
  --->每10秒哨兵会向主数据库和从数据库发送info命令。
  --->每2秒哨兵会向主数据库和从数据库的_sentinel_:hello频道发送自己的信息。
  --->每1秒哨兵会向主数据库和从数据库和其他哨兵节点发送ping命令
 
(4)哨兵活动过程
  --->哨兵发送info命令,可以获得当前数据库的相关信息(包括运行id,复制信息,该数据库的从节点列表)。得到这些信息后,哨兵会和从redis节点建立同样两条链接。从反馈的信息中,更新,新加入的节点,以及获得数据库的角色变化信息。
  --->哨兵向主从数据库的_sentinel_:hello频道发送自己的信息来与同样监控该数据库的哨兵分享自己的信息。发送内容<哨兵地址><哨兵端口><哨兵运行id><哨兵配置版本><主数据库名字><主数据库的地址><主数据库的端口><主数据库的配置版本>。哨兵订阅到该信息,判断是否是新加入的哨兵,如果是,加入哨兵列表。并与其建立一条链接用来发送ping命令。同时判断信息中主数据库的配置版本,如果该版本比当前记录的主数据库的版本高,则会更新主数据库的数据。
  --->实现了自动发现从数据库和其他哨兵节点后,哨兵要做的就是定时监控这些数据库和节点有没有停止服务。这是通过每隔一定时间向这些节点发送ping命令实现的。
   配置参数:sentinel down-after-milliseconds 主数据库名  毫秒数。 
   毫秒数>1秒,则每隔1秒发送一次ping命令,小于1秒,则按配置的毫秒数的间隔发送ping命令。
 
(5)哨兵实现发现主redis宕机,在从redis集群中选举新redis主节点。
  ---> 当哨兵a发现主redis节点m由于ping不通,先认为其[主观下线]
  --->哨兵a会发送SENTINEL is-master-down-by-addr命令来询问其他哨兵节点(b,c,d...)了解他们是否也认为m下线。并将得到同样认为下线的结果进行累加,达到指定数量(quorum),则认为m为[客观下线]
  --->哨兵a就会向其他哨兵列表(b,c,d...)发送命令,要求选举自己为领头哨兵,如果其他哨兵没有同意过其他哨兵节点为领头哨兵,则同意a为领头哨兵,如果a发现有超过半数且超过quorum参数值的哨兵节点同意自己是领头哨兵,则a成功称为领头哨兵。
  --->当有多个哨兵节点同时参选领头哨兵,则会出现没有任何节点当选的可能,此时每个参选节点将等待一个随机时间重新发起参选请求,进行下一轮选举,知道选举成功。
  --->选出领头哨兵,则领头哨兵a将从停止服务的主redis数据库的从redis列表中挑选一个来充当新的主redis节点。
    1,所有在线的从数据库中,选择优先级最高的从数据库,优先级可以通过slave-priority选项配置。
    2,如果有多个最高优先级的从数据库,则复制的命令便宜量越大,即复制越完整,越优先。
    3,如果以上条件都一样,则选择运行id教小的从数据库。
  --->选举除从redis,则向其发送SLAVEOF NO ONE命令将其升格为主数据库,而后领头哨兵会向其他从数据库发送SLAVEOF命令,使其称为新主redis数据库的从数据库
  --->最后一步,更新内部记录,将已经停止服务的旧的数据库更新为新的主数据库的从数据库,使得当其恢复服务时候自动以从数据的身份继续服务。
 
 
五:哨兵的部署
(1)如果一个主从系统中配置的哨兵教少,则哨兵对整个系统的判断的可靠行就会越低。反之,越高。极端(一个哨兵,就是单点问题)
(2)相对稳妥的部署方案是是的哨兵的视角尽可能地与每个节点的视角一致。
  --->为每个节点(无论是主数据库还是从数据库)都部署一个哨兵。
  --->使每个哨兵与其对应的节点的网络环境相同或相近。
   
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5月前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
14天前
|
存储 NoSQL Redis
redis主从集群与分片集群的区别
主从集群通过主节点处理写操作并向从节点广播读操作,从节点处理读操作并复制主节点数据,优点在于提高读取性能、数据冗余及故障转移。分片集群则将数据分散存储于多节点,根据规则路由请求,优势在于横向扩展能力强,提升读写性能与存储容量,增强系统可用性和容错性。主从适用于简单场景,分片适合大规模高性能需求。
25 5
|
4月前
|
监控 NoSQL Redis
看完这篇就能弄懂Redis的集群的原理了
看完这篇就能弄懂Redis的集群的原理了
153 0
|
2月前
|
监控 NoSQL 算法
Redis Sentinel(哨兵)详解
Redis Sentinel(哨兵)详解
140 4
|
3月前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
4月前
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。
|
5月前
|
存储 NoSQL 算法
Redis 集群模式搭建
Redis 集群模式搭建
100 5
|
5月前
|
存储 缓存 NoSQL
高并发架构设计三大利器:缓存、限流和降级问题之Redis用于搭建分布式缓存集群问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Redis用于搭建分布式缓存集群问题如何解决
104 1
|
4月前
|
NoSQL Redis
Redis——单机迁移cluster集群如何快速迁移
Redis——单机迁移cluster集群如何快速迁移
151 0