大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试

简介: 大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop(已更完)

HDFS(已更完)

MapReduce(已更完)

Hive(已更完)

Flume(已更完)

Sqoop(已更完)

Zookeeper(已更完)

HBase(已更完)

Redis (正在更新…)

章节内容

上节我们完成了:


Redis分布式锁

Redis SETNX

Redis Redisson

分布式锁对比

Java的部分实现

高可用介绍

高可用(High Availability)通常用来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。

CAP中的AP模型。

主从复制

Redis支持主从复制功能,可以通过 slaveof(Redis5以后修改为replicaof)或者在配置文件中设置来开启该功能。

一主一从

一主多从

传递复制

主从配置

主Redis

无需特殊的配置

从Redis

我们需要修改 redis.conf 文件,来实现。

比如我的主Redis是h121机器,当前我当前在h122上,计划变为h121的从服务器,那你需要如下的配

置:

replicaof h121.wzk.icu 6379

主从作用

读写分离:一主多从,主从同步,主写从读。

数据容灾:从是主的备份。

同步模式

全量同步

同步快照阶段:Master创建并发送RDB给Slave,Slave载入并解析快照,Master同时将此阶段所产生的新的写命令存储到缓冲区。

同步写缓冲阶段:Master向Slave同步存储在缓冲区的写操作命令

同步增量阶段:Master向Slave同步写操作命令。

增量同步

Redis增量同步主要是Slave完成初始化正常工作后,Master的写操作同步到Slave

通常情况下, Master每次执行一个写命令就会向Slave发送相同的写命令,然后Slave执行。

心跳监测

在命令阶段,从服务器默认会以每秒一次的频率向主服务器发送命令:


replconf ack <replication_offset>

主要有如下的作用:


检测主从的连接状态

辅助实现min-slaves

检测命令丢失

哨兵模式

哨兵介绍

哨兵(Sentinel)是Redis高可用的解决方案,由一个或者多个sentinel集群监视一个或者多个服务器。

当主服务器下线时,sentinel可以将某一从服务器升级为主服务。


部署方案

配置过程

由于需要启动很多,所以直接使用容器的方式部署。

version: '3'

services:
  redis-master:
    image: redis:6.2
    container_name: redis-master
    command: redis-server --appendonly yes
    ports:
      - 6379:6379
    volumes:
      - ./data/redis-master:/data

  redis-slave1:
    image: redis:6.2
    container_name: redis-slave1
    command: redis-server --slaveof redis-master 6379
    ports:
      - 6380:6379
    volumes:
      - ./data/redis-slave1:/data
    depends_on:
      - redis-master

  redis-slave2:
    image: redis:6.2
    container_name: redis-slave2
    command: redis-server --slaveof redis-master 6379
    ports:
      - 6381:6379
    volumes:
      - ./data/redis-slave2:/data
    depends_on:
      - redis-master

  sentinel1:
    image: redis:6.2
    container_name: sentinel1
    command: >
      sh -c "echo 'port 26379' > /data/sentinel.conf &&
             echo 'sentinel monitor mymaster redis-master 6379 2' >> /data/sentinel.conf &&
             echo 'sentinel down-after-milliseconds mymaster 5000' >> /data/sentinel.conf &&
             echo 'sentinel failover-timeout mymaster 10000' >> /data/sentinel.conf &&
             echo 'sentinel parallel-syncs mymaster 1' >> /data/sentinel.conf &&
             redis-sentinel /data/sentinel.conf"
    ports:
      - 26379:26379
    depends_on:
      - redis-master
      - redis-slave1
      - redis-slave2

  sentinel2:
    image: redis:6.2
    container_name: sentinel2
    command: >
      sh -c "echo 'port 26380' > /data/sentinel.conf &&
             echo 'sentinel monitor mymaster redis-master 6379 2' >> /data/sentinel.conf &&
             echo 'sentinel down-after-milliseconds mymaster 5000' >> /data/sentinel.conf &&
             echo 'sentinel failover-timeout mymaster 10000' >> /data/sentinel.conf &&
             echo 'sentinel parallel-syncs mymaster 1' >> /data/sentinel.conf &&
             redis-sentinel /data/sentinel.conf"
    ports:
      - 26380:26380
    depends_on:
      - redis-master
      - redis-slave1
      - redis-slave2

  sentinel3:
    image: redis:6.2
    container_name: sentinel3
    command: >
      sh -c "echo 'port 26381' > /data/sentinel.conf &&
             echo 'sentinel monitor mymaster redis-master 6379 2' >> /data/sentinel.conf &&
             echo 'sentinel down-after-milliseconds mymaster 5000' >> /data/sentinel.conf &&
             echo 'sentinel failover-timeout mymaster 10000' >> /data/sentinel.conf &&
             echo 'sentinel parallel-syncs mymaster 1' >> /data/sentinel.conf &&
             redis-sentinel /data/sentinel.conf"
    ports:
      - 26381:26381
    depends_on:
      - redis-master
      - redis-slave1
      - redis-slave2


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
10月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
存储 Kubernetes 监控
Docker与Kubernetes集成挑战及方案
面对这些挑战,并不存在一键解决方案。如同搭建灌溉系统需要考虑多种因素,集成Docker与Kubernetes也需要深思熟虑的规划、相当的技术知识和不断的调试。只有这样,才能建立起一个稳定、健康、高效的Docker-Kubernetes生态,让你的应用像花园中的植物一样繁荣生长。
475 63
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
运维 网络安全 文件存储
找不到类似 Docker Desktop 的 Web 管理界面?试试这些开源方案
Docker Desktop 是本地容器化开发的利器,但存在无法通过 Web 远程管理、跨平台体验不一致等问题。为此,推荐几款轻量级、可 Web 化管理的 Docker 工具:Portainer 功能全面,适合企业级运维;CasaOS 集成应用商店和 NAS 功能,适合家庭/个人开发环境;Websoft9 提供预集成环境,新手友好。这些工具能有效提升容器管理效率,满足不同场景需求。
1285 3
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
1013 9
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
543 4
|
运维 监控 数据可视化
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
570 1
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
474 1
|
SQL 大数据 Apache
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
282 1