首页 > 数据库 >这样讲Redis哨兵机制Sentinel的工作原理,或许你真的能听懂~

这样讲Redis哨兵机制Sentinel的工作原理,或许你真的能听懂~

时间:2022-10-30 10:37:26浏览次数:48  
标签:听懂 Redis redis 哨兵 故障 master Sentinel 节点 sentinel


什么是哨兵机制?

Sentinel是Redis官方提出的一个高可用解决方案。它由一个或多个 sentinel 实例构成 sentinel 系统。

这样讲Redis哨兵机制Sentinel的工作原理,或许你真的能听懂~_人工干预

为什么要用哨兵机制?

我们都知道Redis 具备主从复制的功能,但是当主服务器发生故障时,我们需要人工干预,去修改每个实例的配置文件,然后重启,这样不仅费时费力,还有可能导致出错概率比较高,最终导致服务不可用。
那么哨兵就是为了解决这个问题,帮助我们自动化实现故障转移,不需要人工干预,高效、精准的实现故障转移。

哨兵机制能做什么?

(1)集群监控,负责监控redis master和slave进程是否正常工作

(2)消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员

(3)故障转移,如果master node挂掉了,会自动转移到slave node上

(4)配置中心,如果故障转移发生了,通知client客户端新的master地址

什么是主观下线和客观下线?

主观下线

当sentinel 系统中其中一个server认为redis中某个实例宕机或不可用,则就标记为主观下线

客观下线

如果被标记主观下线的redis实例是主节点,则还得需要获得其他sentinel节点的判断,如果超过法定的数量的投票认为该redis server不可用,则标记该redis主节点为客观下线

哨兵有哪些定时监控

监控1

哨兵节点每隔10秒向主节点和从节点发送info指令,获取最新的拓扑结构,更新自身保存的节点信息

监控2

每隔2秒哨兵节点向redis指定频道上发送哨兵节点对主节点的判断和哨兵节点自身的信息,其他哨兵节点也会订阅这个频道,来了解其他节点的信息及对主节点的判断

监控3

每隔1秒哨兵向redis 节点和其他哨兵节点发送ping信息,进行心跳检测。

主节点客观下线后,怎么进行故障转移?

这里主要有两步,首先是选举哨兵leader,再由哨兵leader负责故障转移

选举哨兵leader

1)当master 下线后,每个哨兵都可以选择自己作为leader,将请求发送给其它哨兵

2)其它哨兵接收到请求后,可以选择同意或者不同意(根据判定基础决定)

3)如果最终某个哨兵节点获得了超过半数的投票,则该哨兵节点就成为了leader,负责故障转移

故障转移

选举新的master

1)过滤与哨兵断开连接时间比较长的节点

2)优先选择replica-priority低的

3)选择偏移量比较大的(复制的数据越多)
4)运行ID越小

执行故障转移

1)sentinel leader向新主节点发送slave no one命令,让它成为独立节点

2)sentinel leader 向其它从节点发送slave ip port指令,让它从新的主节点同步

client是和哨兵通信还是和Redis 主从通信?

其实都有建立通信,情况是这样的:

1)client连接集群,首先会连接sentinel,然后订阅相关的频道获取主从切换、切换进度、新master地址等信息

2)拿到redis连接地址后,则会与redis master建立连接

3)当sentinel执行了故障转移,选举了新的redis master之后,也会在client订阅的频道中发送最新的master redis 地址

4)client 拿到最新的地址后,还是同样的建立新的redis连接。


标签:听懂,Redis,redis,哨兵,故障,master,Sentinel,节点,sentinel
From: https://blog.51cto.com/u_9825187/5807331

相关文章

  • windows下安装redis服务
    下载地址:Releases·microsoftarchive/redis·GitHubRedis支持32位和64位。这个需要根据你系统平台的实际情况选择,这里我们下载Redis-x64-xxx.zip压缩包到D盘......
  • 【Redis高手修炼之路】③持久化
    持久化​​1.RDB​​​​1.1自动备份​​​​1.2手动备份​​​​1.3与RDB相关的配置​​​​2.AOF​​​​2.1开启AOF​​​​2.2共存?谁优先?​​​​2.3与AOF相关......
  • 记录一次redis分布式锁的坑
    redis分布式锁的实现方式是:lock(){sync(this){//无法获取自旋setnx(key,UUID)setex(60s)returnUUID}}unlock......
  • Redis无法在Arm平台启动的问题
    这是继前文在Arm平台部署遇到的另一个问题,拉取Arm平台下的各服务镜像后,启动时却发现redis无法启动,进行了诊断后发现错误提示如下:redis|1:M28Oct202204:02:33.981#......
  • 安装Redis并在springboot项目中使用redis
    一、下载redis1.1官网下载 1.2将其添加到服务上,并使其开机自启动 二、下载redis可视化工具(下不下都行) 三、将redis集成到我们的springboot项目中3.1首先是引......
  • redis批量删除key
    1、删除所有的key,可以使用redis自身的命令:flushdb删除当前数据库中的所有Keyflushall删除所有数据库中的key#会删除集群中所有节点的key2、使用linux中的xargs来删除所有......
  • 快速启动redis
    文档说明:只记录关键地方;试验环境:linuxdebian11redisversion:"3"services:redis-server:image:redis:7-alpineports:-"637......
  • NoSQL之Redis从入门使用到深入
    简介Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型的Key-Value存储,也是一个数据结构存储,可用作数据库、缓存和消息中间件,并提供多种语言......
  • 说说 Redis 事务
    更多技术文章,请关注我的个人博客www.immaxfang.com和小公众号Max的学习札记。Redis事务简介Redis只是提供了简单的事务功能。其本质是一组命令的集合,事务支持一次......
  • 一键部署redis脚本
    #!/bin/bash##REDIS_VERSION=redis-7.0.5#REDIS_VERSION=redis-7.0.3#REDIS_VERSION=redis-6.2.6REDIS_VERSION=redis-5.0.14#REDIS_VERSION=redis-4.0.14REDIS_URL=http://......