【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

相关文章

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

通信系统网络架构_2.广域网网络架构

1.概述          通俗来讲,广域网是将分布于相比局域网络更广区域的计算机设备联接起来的网络。广域网由通信子网于资源子网组成。通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网构建,将分布在不同地区的局域网或计算机系统互连起来,实现资源子网的共享。 2.网络组成          广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

ps基础入门

1.基础      1.1新建文件      1.2创建指定形状      1.4移动工具          1.41移动画布中的任意元素          1.42移动画布          1.43修改画布大小          1.44修改图像大小      1.5框选工具      1.6矩形工具      1.7图层          1.71图层颜色修改          1

VirtualBox中,虚拟系统文件VDI移动或者复制

在安装virtualbox以后有时需要复制,移动虚拟磁盘等操作,这些操作在vmware的虚拟机下面可以直接操作虚拟磁盘即可使用,但是在virtualbox环境 下每个VDI 文件都有一个唯一的uuid,而VirtualBox 不允许注册重复的uuid,所以直接复制的VDI文件是不能拿来使用的,我们就需要使用到virtualbox自带的管理命令来克隆一个VDI,这样通过命令克隆的VDI文件会重

为什么要做Redis分区和分片

Redis分区(Partitioning)和分片(Sharding)是将数据分布在多个Redis实例或多个节点上的做法。这种技术用于提高性能、可扩展性和可用性。以下是执行Redis分区和分片的主要原因: 1. **提高吞吐量**:    - 通过将数据分散到多个节点,可以并行处理更多的操作,从而提高整体吞吐量。 2. **内存限制**:    - 单个Redis实例的内存是有限的。分区允许数据

[FPGA][基础模块]跨时钟域传播脉冲信号

clk_a 周期为10ns clk_b 周期为34ns 代码: module pulse(input clk_a,input clk_b,input signal_a,output reg signal_b);reg [4:0] signal_a_widen_maker = 0;reg signal_a_widen;always @(posedge clk_a)if(signal_a)

00 - React 基础

1. React 基础 安装react指令 可参考: 官网官网使用教程 如: npx create-react-app 项目名如:npx create-react-app react-redux-pro JSX JSX 是一种 JavaScript 的语法扩展,类似于 XML 或 HTML,允许我们在 JavaScript 代码中编写 HTML。 const element =