首页 > 数据库 >【Redis】详解 Redis哨兵(Sentinel)架构,Master 挂了的故障转移措施

【Redis】详解 Redis哨兵(Sentinel)架构,Master 挂了的故障转移措施

时间:2023-11-13 22:01:44浏览次数:50  
标签:slave Redis redis sentinel Master Sentinel master

(目录)


Redis 哨兵(Sentinel)架构

Redis主从复制

一主多从架构

master主要负责写入slave负责读取有读写分离的功能

img

redis主从同步原理

1、slave执行命令向master建立连接 2、master执行bgsave(后台存储),生成rdb快照(redis备份方式,data以二进制方式保存在本地),发送到slave上 3、slave获取快照后读取,对data还原,保证初始化数据一致 4、master接受命令发送到salve,salve执行保证后续数据一致

img

redis主从架构缺点

master挂掉,redis集群瘫痪


Redis Sentinel高可用集群

集群介绍

img

1、建立sentinel集群有一个leader角色 2、一般需要6个节点3个sentinel,3个Redis主从。 3、sentinel安装在节点上,根据配置信息监听redis的健康状态。 (每个sentinel 1次/秒频率向master,salve及其他sentinel实例发送ping命令


如果Redis master挂了怎么办?

先判断是否真挂了

  • 主动下线(不靠谱,存在网络问题误判):实例最后一次有效回复时间超时own-after-milliseconds
  • 客观下线多个sentinel ping不通(多个=总数除以2+1)

img

开启故障转移

img

sentiel从slave选出新的master,salve哪个选为新的主服务器条件选举规则):

1.剔除主观下线、已断线、或者最后一次回复PING命令的时间大于五秒钟的Slave 2.剔除与失效主服务器连接断开的时长超过down-after选项指定的时长十倍的Slave 3.按同步数据的偏移量选出数据最完整的Slave 4.如果偏称量相同,选中ID最小的Slave


选出新的master后开始故障转移

img

1.Sentinel Leader被选中的Redis从服务器发送SLAVEOF NO ONE命令,让它转变为Redis主服务器

2.Sentinel Leader通过发布与订阅功能,将更新后的配置传播给所有其他Sentinel,其他Sentinel对它们的配置进行更新。

3.向所有Redis Slave下达SLAVEOF命令,指向新的Redis Master

4.Redis slaveRedis master重新建立连接,重放rdb保持数据同步

5.在上述转移过程中,伴随着Redis本地配置文件的自动重写,这样即使是实例重启配置也不会丢失

6.原有的master在恢复后降级为slave与新master全量同步


如果Sentinel挂了怎么办?如何保证Sentinel高可用

1**.Sentinel自动故障迁移**使用raft算法选举领头(leader) sentinel 2.超过半数投票选出leader, sentinel Leader用于下达故障转移的指令 3.如果某个Sentinel Leader挂了,则使用Raft从剩余的Sentinel中选出leader

img

Sentinel如何知道彼此的存在?

Sentinel的信息在redis的master进行注册redis master持有Sentinel的信息


标签:slave,Redis,redis,sentinel,Master,Sentinel,master
From: https://blog.51cto.com/panyujie/8354551

相关文章

  • SpringBoot+Redis整合
    SpringBoot+Redis整合一.操作Json1.1pom文件<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.7.1......
  • Sentinel 与 Hystrix 的对比
     Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。大家可能会问:Sentinel和之前常用的熔断降级库NetflixHystrix有什么异同呢?本文将从多个角度对......
  • 喜马拉雅 Redis 与 Pika 缓存使用军规
    作者:喜马拉雅董道光宣言:缓存不是万金油,更不是垃圾桶!!!缓存作为喜马拉雅至关重要的基础组件之一,每天承载着巨大的业务请求量。一旦缓存出现故障,对业务的影响将非常严重。因此,确保缓存服务的稳定和高效运行始终是我们的重要目标。下面是我们对喜马缓存历史故障复盘后总结的一套缓存使......
  • macOS 通过 docker 安装 redis 集群
    安装集群macOS通过docker来进行安装redis机群,解决开发环境临时使用的问题,完成本地redis集群环境搭建。安装步骤如下:查询主机ip信息,命令如下:ifconfig删除容器信息,如果步骤执行错误了,可以删除容器,然后重新执行第3步dockerrm-fredis-30001dockerrm-fredis-30002doc......
  • 基于C# Socket实现的简单的Redis客户端
    前言    Redis是一款强大的高性能键值存储数据库,也是目前NOSQL中最流行比较流行的一款数据库,它在广泛的应用场景中扮演着至关重要的角色,包括但不限于缓存、消息队列、会话存储等。在本文中,我们将介绍如何基于C#Socket来实现一个简单的Redis客户端类RedisClient,来演示构建请......
  • Redisson 介绍及使用
    目录一、介绍二、作用三、使用示例一、介绍Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-MemoryDataGrid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet,Set,Multimap,SortedSet,Map,List,Queue,BlockingQueue,D......
  • Redis持久化⽅式有哪些?有什么区别?
    Redis持久化⽅案分为RDB和AOF两种。RDBRDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。RDB⽂件是⼀个压缩的⼆进制⽂件,通过它可以还原某个时刻数据库的状态。由于RDB⽂件是保存在硬盘上的,所以即使Redis崩溃或者退出,只要RDB⽂件存在,......
  • 常见面试题-Redis底层的SDS、ZipList、ListPack
    Redis的SDS了解吗?答:Redis创建了SDS(simpledynamicstring)的抽象类型作为String的默认实现SDS的结构如下:structsdshdr{//字节数组,用于保存字符串charbuf[];//buf[]中已使用字节数量,称为SDS的长度intlen;//buf[]中尚未使用的字节数量intfree;}......
  • Redis哨兵
    1.描述  哨兵(sentinel)是redis主从结构中的一个重要组件,其也是一个redis服务,不过是一个特殊的redis服务,只用来监听redis示例,不负责数据的读写。2.作用监控:会不断监控主节点和从节点是否正常运行自动故障转移:当主节点挂掉后,会进行自动转移,将其中一个从节点变为主节点,主节点变......
  • redis 类型Set增删查改效率
    Redis的Set数据类型是一种无序集合,它可以包含多个不重复的元素。以下是关于RedisSet类型的增删查改操作的效率说明:1.增加元素:添加单个元素(SADD命令)的时间复杂度是O(1),可以在常数时间内完成。批量添加多个元素(SADD命令)的时间复杂度也是O(1),因为它们一次性完成。2.删除元素:删除......