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

Redis 主从架构与哨兵高可用方案实操

在这里插入图片描述

一、架构升级原理‌

  1. 核心组件关系
    主从拓扑‌:每个主节点(Master)配置 1~N 个从节点(Slave),形成独立的主从复制单元
    哨兵监控网‌:哨兵集群监控所有主节点,通过 ‌分布式共识机制‌ 实现故障判定
    故障转移边界‌:单主节点故障仅影响其负责的从节点,其他主从单元不受影响
  2. 数据同步机制
    主从复制‌:从节点通过 PSYNC 命令与主节点保持增量同步(默认异步复制)
    写安全策略‌:配置 min-replicas-to-write 1 确保主节点至少有 1 个从节点完成写入才响应客户端
    二、部署架构设计‌
  3. 物理节点规划
    角色 IP 地址段 数量 端口 说明
    主节点 10.0.1.10~12 3 6379 数据写入节点
    从节点 10.0.1.20~22 3 6379 数据同步节点
    哨兵节点 10.0.1.30~32 3 26379 高可用监控集群
  4. 逻辑拓扑示意
    plaintext
    Copy Code
    ±--------------+ ±--------------+ ±--------------+
    | 主节点1 | ←——→ | 从节点1 | | 哨兵集群 |
    | 10.0.1.10:6379| | 10.0.1.20:6379| | 10.0.1.30~32 |
    ±--------------+ ±--------------+ ±--------------+

    ±--------------+ ±--------------+
    | 主节点2 | ←——→ | 从节点2 |
    | 10.0.1.11:6379| | 10.0.1.21:6379|
    ±--------------+ ±--------------+

    ±--------------+ ±--------------+
    | 主节点3 | ←——→ | 从节点3 |
    | 10.0.1.12:6379| | 10.0.1.22:6379|
    ±--------------+ ±--------------+

三、详细配置实现‌

  1. 主从节点配置

主节点配置文件 (redis-master.conf)‌:

conf
Copy Code
bind 0.0.0.0
port 6379
daemonize yes
requirepass maple168
masterauth maple168
repl-backlog-size 1gb # 增大复制缓冲区
min-replicas-to-write 1 # 写入最少从节点数

从节点配置文件 (redis-slave.conf)‌:

conf
Copy Code
replicaof 10.0.1.10 6379 # 指向对应主节点
masterauth maple168
repl-diskless-sync yes # 启用无盘复制(SSD环境建议开启)

  1. 哨兵集群配置

统一配置文件 (sentinel.conf)‌:

conf
Copy Code
sentinel monitor master1 10.0.1.10 6379 2
sentinel monitor master2 10.0.1.11 6379 2
sentinel monitor master3 10.0.1.12 6379 2

sentinel auth-pass master1 maple168
sentinel auth-pass master2 maple168
sentinel auth-pass master3 maple168

sentinel down-after-milliseconds master1 5000 # 5秒无响应判宕机
sentinel parallel-syncs master1 1 # 故障转移时同步并发数

四、哨兵高可用流程‌

  1. 故障检测阶段
    mermaid
    Copy Code
    sequenceDiagram
    哨兵A->>主节点1: 发送PING
    主节点1–>>哨兵A: 超时无响应
    哨兵A->>哨兵B: 发起主观下线(SDOWN)投票
    哨兵B->>主节点1: 独立检测
    哨兵B–>>哨兵A: 确认客观下线(ODOWN)

  2. 领导选举阶段
    Raft 算法‌:哨兵节点通过 epoch 计数协商选出 Leader
    优先级规则‌:先发起投票的哨兵获得更高优先级

  3. 故障转移执行
    mermaid
    Copy Code
    flowchart TB
    选择从节点 --> 检查复制偏移量
    检查复制偏移量 --> 最大偏移量节点
    最大偏移量节点 --> 晋升为新主
    通知其他从节点 --> 切换复制源

五、容器化集成方案‌

  1. Docker Compose 模板
    yaml
    Copy Code
    services:
    redis-master1:
    image: redis:7.0
    command: redis-server /usr/local/etc/redis/redis.conf
    volumes:
    • ./master1.conf:/usr/local/etc/redis/redis.conf
      networks:
    • redis-net

redis-slave1:
image: redis:7.0
command: redis-server /usr/local/etc/redis/redis.conf
volumes:
- ./slave1.conf:/usr/local/etc/redis/redis.conf
depends_on:
- redis-master1

sentinel1:
image: redis:7.0
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel.conf:/usr/local/etc/redis/sentinel.conf
ports:
- “26379:26379”

  1. 关键网络配置
    bash
    Copy Code

创建 overlay 网络(跨主机通信)

docker network create --driver overlay --subnet 10.0.1.0/24 redis-net

六、监控与排障‌

  1. 实时状态检查命令
    bash
    Copy Code

查看主从关系

redis-cli -a maple168 info replication

查看哨兵监控状态

redis-cli -p 26379 sentinel masters

强制触发故障转移(测试用)

redis-cli -p 26379 sentinel failover master1

  1. 日志分析要点
    plaintext
    Copy Code

正常故障转移日志

+sdown master master1 10.0.1.10:6379 # 主观下线
+odown master master1 10.0.1.10:6379 # 客观下线
+try-failover master master1 # 尝试故障转移
+selected-slave slave1 10.0.1.20:6379 # 选择新主
+promoted-slave slave1 # 晋升从节点

  1. 脑裂预防配置
    conf
    Copy Code

主节点配置(redis.conf)

min-replicas-to-write 1
min-replicas-max-lag 10 # 从节点延迟不超过10秒

七、性能压测数据‌
场景 QPS(读) QPS(写) 故障转移时间
单主从+哨兵 12万 8.5万 8-12秒
三主三从+哨兵 35万 24万 5-8秒
测试环境:16核/32GB 内存,SSD 磁盘,万兆网络

通过此方案,可在保障数据高可用的前提下实现 ‌横向扩展能力‌,每个主从单元可独立承担业务流量,哨兵集群提供跨节点的统一故障治理能力。

相关文章:

  • 谈谈 TypeScript 中的模块系统,如何使用 ES Modules 和 CommonJS 模块?
  • 高斯数据库和ORCLE、mysql数据库的区别
  • 安装并使用conda(宏观版)
  • 【模拟】从 0 到 1:模拟算法的深度剖析与实战指南
  • /*给你一个字符串s,由若干单词组成,单词前后用一些空格隔开 单词是指由字母组成,不包含任何空字符的最大子字符串*/
  • keepalived的工作原理和脑裂
  • JWT令牌封装类/ 接口的各个请求
  • 黑马跟学.苍穹外卖.Day08
  • 【资料分享】全志科技T113-i全国产(1.2GHz双核A7 RISC-V)工业核心板规格书
  • tf1.x和tf2.x在使用上的区别和联系是什么
  • AI 原生 IDE Trae 深度体验:SSHremote 功能助力远程开发与云原生部署
  • 基于web的牙医预约管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • k8s资源管理介绍
  • 【C++指南】内存管理完全手册:new/delete
  • 修改windows npt时钟服务器
  • 工业 CPE(Customer Premises Equipment,客户终端设备)
  • 深度学习定义与分类【详细易懂 初学者友好~】
  • pgvector 向量数据库的安装方式全集
  • 【FPGA】状态机模板-分别对比一段式状态机、二段式状态机以及三段式状态机
  • 操作系统知识点32
  • 国家统计局:4月社会消费品零售总额同比增长5.1%
  • 人民网:激发博物馆创新活力,让“过去”拥有“未来”
  • 美国失去最后一个AAA评级,资产价格怎么走?美股或将触及天花板
  • 联合国:欢迎俄乌伊斯坦布尔会谈,希望实现全面停火
  • 特朗普政府涉税改法案遭众议院预算委员会否决
  • 甘肃发布外卖食品安全违法行为典型案例:一商家用鸭肉冒充牛肉被罚