【redis-基础】主动复制 哨兵架构

2024-05-23 22:58

本文主要是介绍【redis-基础】主动复制 哨兵架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主从复制

阶段

  • 连接建立阶段
    • 保存主节点信息:从节点服务器内部维护了两个字段,即masterhost和masterport字段,用于存储主节点的IP地址和端口号
    • 建立socket连接:从节点每秒调用复制定时函数replicationCron一次,如果发现有主节点可以连接,就会根据主节点的IP地址和端口号来建立socket连接。
    • 发送ping命令:从节点成为主节点的客户端之后,发送ping命令进行首次请求,目的是检查socket连接是否可用,以及主节点当前是否能够处理请求。
    • 身份验证:如果从节点中设置了masterauth(身份验证)选项,那么从节点需要向主节点进行身份验证;如果没有设置该选项,则不需要验证。
    • 发送从节点端口信息:身份验证之后,从节点会向主节点发送其监听的端口号,主节点将该信息保存到该从节点对应的客户端的slave_listening_port字段中。
  • 数据同步阶段
    • 全量复制
    • 部分复制
  • 命令传播阶段

哨兵架构

组成

  • 哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的Redis节点,不存储数据
    • 监控:哨兵节点不断检查用户的主从实例是否按照预期在工作
    • 通知:如果被监控的redis实例有问题,哨兵节点可以通过一个api来通知系统管理员或者其他应用程序
    • 自动故障转移:如果一个主节点没有按照预期工作,哨兵节点会启动故障转移过程,把一个从节点提升为主节点,重新配置其他的从节点并使用新的主节点,使用redis服务的应用程序在连接的时候也会被通知使用新的主节点地址
    • 配置提供者:哨兵节点为客户端提供服务来源,对于指定的服务,客户端连接到sentinel来寻找当前主节点的地址。当发生故障转移时,哨兵节点将报告新的主节点地址
  • 数据节点:主节点和从节点都是数据节点

搭建

启动
  • redis-sentinel sentinel.conf
  • redis-server sentinel.conf --sentinel
注意
  • 必须使用一个配置文件来运行Sentinel,这个配置文件被系统用于存储当前状态

  • 如果重启Sentinel,那么这些状态会被重新载入

  • 如果没有配置文件或者配置文件的路径不对,Sentinel就会拒绝启动

  • Sentinel监听TCP端口26379

  • 哨兵节点最少三台并且必须为单数

  • 三个Sentinel实例应该放在独立的物理机电脑或虚拟机中

  • Sentinel+Redis分布式系统在失败期间并不能确保写入请求被保存,因为Redis使用异步复制

  • 如果因为在开发环境或者生产环境中通过了测试而没有设置安全的高可用,那么就可能会因为一个错误的配置而导致主机宕机,以至不能继续提供正常的服务。

配置sentinel.conf文件
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
参数名实例解释
sentinel monitorsentinel monitor quorum是指同意主节点不可用所需的Sentinel的数量
quorum在检测到失败后投票时使用。
sentinel down-after-millisecondssentinel down-after-milliseconds <master_name> <option_value>当一个Redis实例失去联系(要么不回复我们的请求,要么回复一个错误)超过了这个指定的时间(以毫秒为单位),就可以认为这个Redis实例挂掉了。
sentinel parallel-syncssentinel parallel-syncs <master_name> <option_value>设置从节点的数量,这些从节点在一次故障转移过后可以使用新的主节点进行重新配置。

命令

  • PING:仅仅返回PONG。
  • SENTINEL masters:展示监控的主节点和它们的状态列表。
  • SENTINEL master:展示指定的主节点的信息。
  • SENTINEL salves :展示指定主节点的从节点以及它们的状态。
  • SENTINEL sentinels :展示指定主节点的sentinel实例以及它们的状态。
  • SENTINEL get-master-addr-by-name :返回主节点的IP地址和端口号。如果这个主节点正在进行故障转移,就返回提升的从节点的IP地址和端口号。
  • SENTINEL reset:该命令将会根据匹配的名称重置主节点,pattern参数是通配符(glob-style)类型,重置Sentinel进程清除主节点中之前的所有状态,并且移除主节点发现和关联的从节点与Sentinel。
  • SENTINEL failover:如果主节点是不可达的,就强制开始故障转移,不需要其他的Sentinel同意。
  • SENTINEL ckquorum:检查当前的Sentinel配置对于主节点的故障转移是否能达到仲裁人数(即同意票数),以便授权进行故障转移。这个命令应该在监控系统中使用以检查Sentinel的部署是否正常。
  • SENTINEL flushconfig:强制Sentinel把它的配置和状态重新写入磁盘(即刷盘)。每次Sentinel状态有改变,Sentinel就会重写配置信息。有时候由于错误的操作、磁盘故障、程序包升级脚本或配置管理等原因会导致配置文件的丢失。在这种情况下,最容易的解决办法就是要强制Sentinel重写配置文件,即使之前的配置文件完全丢失了,这个命令也能很好地完成工作。

这篇关于【redis-基础】主动复制 哨兵架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996655

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

Redis如何使用zset处理排行榜和计数问题

《Redis如何使用zset处理排行榜和计数问题》Redis的ZSET数据结构非常适合处理排行榜和计数问题,它可以在高并发的点赞业务中高效地管理点赞的排名,并且由于ZSET的排序特性,可以轻松实现根据... 目录Redis使用zset处理排行榜和计数业务逻辑ZSET 数据结构优化高并发的点赞操作ZSET 结