【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

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-