当前位置: 首页 > news >正文

Redis主从复制与哨兵集群

在分布式系统中,Redis 的高可用性至关重要。本文将详细介绍 Redis 主从复制的原理、部署以及哨兵(Sentinel)集群的部署与配置,帮助你构建稳定可靠的 Redis 高可用架构。

一、Redis 主从复制

1. 主从复制的意义

主从复制是 Redis 高可用的基础,通过将主节点的数据复制到从节点,实现数据备份和读写分离,不仅提高了系统的可用性,还能分担主节点的读压力。

2. 主从结构类型

  • 一主一从:最简单的拓扑结构,用于主节点故障时从节点提供故障转移支持。可在从节点开启 AOF 持久化,避免影响主节点性能。
  • 一主多从:主节点连接多个从节点,适合读占比较大的场景,通过读写分离分担主节点压力。但需注意写并发高时可能消耗过多主节点带宽。
  • 树状主从:从节点可作为其他从节点的主节点,降低主节点负载,适用于主节点挂载多个从节点的场景。

3. 主从复制原理

3.1 复制流程
  1. 保存主节点信息:从节点执行 slaveof 命令后,保存主节点地址信息。
  2. 建立 socket 连接:从节点通过定时任务与主节点建立网络连接。
  3. 发送 ping 命令:检测主从网络及主节点可用性,失败则重连。
  4. 权限验证:若主节点设置密码,从节点需通过 masterauth 配置验证。
  5. 同步数据集:首次复制时通常进行全量同步,后续通过部分同步补充数据。
  6. 持续复制:主节点将写命令异步发送给从节点,保持数据一致。
3.2 复制类型
  • 全量复制:初次复制时主节点发送全部数据给从节点,耗时较长,对网络和节点压力大。
  • 部分复制:用于网络闪断等场景,主节点通过复制积压缓冲区补发丢失数据,降低开销(需 Redis 2.8+ 支持)。
3.3 关键组件
  • 复制偏移量:主从节点分别记录已复制数据的字节长度,用于判断数据一致性。
  • 复制积压缓冲区:主节点上的固定长度队列,保存最近写命令,用于部分复制。
  • 主节点运行 ID:唯一标识主节点,从节点通过此 ID 识别主节点,主节点重启后 ID 改变会触发全量复制。

4. 主从复制部署步骤

  1. 环境准备:关闭防火墙、SELinux,确保主从节点网络互通。
  2. 安装 Redis

    bash

    wget http://download.redis.io/releases/redis-4.0.10.tar.gz
    tar xf redis-4.0.10.tar.gz -C /usr/src/
    cd /usr/src/redis-4.0.10/
    make && make install  # 可通过 PREFIX 指定安装路径
    
  3. 生成配置文件和启动脚本

    bash

    cd utils/
    ./install_server.sh  # 按提示设置端口、配置文件路径等
    
  4. 配置主从关系
    • 主节点:无需特殊配置,确保监听正确 IP。
    • 从节点:修改配置文件,添加 slaveof 主节点IP 主节点端口,并配置 masterauth(若主节点有密码)。
  5. 验证主从复制:主节点写入数据,从节点可读取即表示成功。

二、Redis Sentinel 哨兵集群

1. 哨兵的作用

主从复制存在手动故障转移的问题,哨兵集群通过自动监控、判断主节点故障并执行故障转移,解决了 Redis 的高可用问题。

2. 哨兵工作原理

  1. 监控:每个哨兵节点监控主从节点及其他哨兵节点。
  2. 判断故障:当主节点不可达时,哨兵节点协商达成一致后标记主节点为下线。
  3. 选举领导者:哨兵节点选举出一个领导者负责故障转移。
  4. 故障转移:领导者将一个从节点晋升为主节点,其他从节点改为复制新主节点,并通知应用方。

3. 哨兵集群部署步骤

3.1 环境说明
角色端口IP 地址
master6379192.168.115.111
slave16380192.168.115.111
slave26381192.168.115.111
Sentinel126379192.168.115.111
Sentinel226380192.168.115.111
Sentinel326381192.168.115.111
3.2 部署步骤
  1. 安装 Redis:同主从复制步骤(示例使用 Redis 7.2.3)。
  2. 配置主从集群
    • 主节点配置:min-slaves-to-write 2(确保至少 2 个从节点正常才允许写)。
    • 从节点配置:slaveof 192.168.115.111 6379 及密码。
  3. 配置哨兵节点

    bash

    mkdir -p /var/log/redis/
    vim /etc/redis/redis-sentinel-26379.conf  # 其他哨兵节点类似,修改端口即可
    
    配置内容:

    conf

    port 26379
    dir "/var/log/redis"
    logfile "26379.log"
    daemonize yes
    protected-mode no
    sentinel monitor mymaster 192.168.115.111 6379 2  # 2 表示至少 2 个哨兵认为主节点故障
    sentinel down-after-milliseconds mymaster 30000  # 30秒未响应标记为下线
    sentinel parallel-syncs mymaster 1  # 故障转移时同时同步的从节点数
    sentinel failover-timeout mymaster 180000  # 故障转移超时时间
    sentinel auth-pass mymaster 123456  # 主节点密码
    
  4. 启动哨兵集群

    bash

    redis-sentinel /etc/redis/redis-sentinel-26379.conf
    redis-sentinel /etc/redis/redis-sentinel-26380.conf
    redis-sentinel /etc/redis/redis-sentinel-26381.conf
    
  5. 验证哨兵状态

    bash

    redis-cli -h 192.168.115.111 -p 26379 info Sentinel
    
    输出中可查看主节点状态、从节点数及哨兵数。

4. 哨兵配置说明

  • daemonize yes:以守护进程模式运行。
  • protected-mode no:关闭保护模式,允许跨网络访问。
  • sentinel monitor:指定监控的主节点及故障判断阈值。
  • sentinel down-after-milliseconds:主节点无响应的超时时间。
  • sentinel parallel-syncs:故障转移时同步从节点的数量,影响转移效率。
  • sentinel auth-pass:主从节点的访问密码(需一致)。
http://www.dtcms.com/a/540007.html

相关文章:

  • 电科金仓“异构多活架构”:破解浙江省人民医院集团化信创难题的密钥
  • 从零搭建群晖私有影音库:NasTool自动化追剧全流程拆解与远程访问协议优化实践
  • Maven项目管理:高效构建与依赖管理!
  • 【win11】funasr 1:配置conda环境
  • 2025年--Lc219-590. N 叉树的后序遍历(递归版,带测试用例)-Java版
  • YOLO11追踪简单应用
  • Spring Web MVC 入门秘籍:从概念到实践的快速通道(上)
  • 网站是什么字体企业内网模板
  • 建一个小型购物网站要有服务器网易博客搬家wordpress
  • 申威服务器安装Nacos 2.0.3 RPM包详细步骤(Kylin V10 sw_64架构)​附安装包
  • 当同一个弹性云服务器所在子网同时设置了snat和弹性公网IP时,会优先使用哪个
  • 基于Chrome140的TK账号自动化(关键词浏览)——需求分析环境搭建(一)
  • 如何自建内网穿透(FRP)服务器
  • 服务器上用Slurm 管理训练bash 脚本任务
  • SpringBoot入门,第一个SpringBoot的创建
  • Spring AOP核心原理分析
  • HTTPS 错误排查实战,从握手到应用层的工程化流程
  • 基于ASP身份认证服务器实现远程办公VPN双因素认证的架构与实践
  • 服务器会遭受到哪些网络攻击
  • 网站设计制作软件江门自助建站模板
  • 滨州做网站推广h5制作方法
  • KTM5800——30bit 绝对角度细分器支持最多 4096 对极与一键非线性自校准集成双 16bit 2M SAR ADC,可替代TW29
  • 局域网网站制作保定哪有做网站的
  • 基于LPJ模型的植被NPP模拟、驱动力分析及其气候变化响应预测
  • 人脸识别4-Windows下基于MSVC编译SeetaFace6
  • 【AES加密】AES加密算法流程全解析
  • 5.1.4 大数据方法论与实践指南-主流湖仓一体商业化解决方案
  • 【数据库】异构多活+双轨并行:浙人医基于金仓KFS实现数据库信创平滑升级
  • Python实用装饰器提升开发效率
  • 【JAVA 进阶】Mybatis-Plus 实战使用与最佳实践