大数据-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的热门话题分析
目录
相关文章
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
12月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
3060 8
|
12月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
1049 6
|
存储 Kubernetes 监控
Docker与Kubernetes集成挑战及方案
面对这些挑战,并不存在一键解决方案。如同搭建灌溉系统需要考虑多种因素,集成Docker与Kubernetes也需要深思熟虑的规划、相当的技术知识和不断的调试。只有这样,才能建立起一个稳定、健康、高效的Docker-Kubernetes生态,让你的应用像花园中的植物一样繁荣生长。
522 63
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
NoSQL Redis Docker
Docker——阿里云服务器利用docker搭建redis集群
本文详细记录了使用Docker搭建Redis集群的过程,包括检查Docker和Docker Compose的安装、创建Redis配置文件、编写`docker-compose.yml`文件、启动Redis节点、创建Redis集群的具体步骤,以及最终的验证方法。文章还提供了在多服务器环境下搭建Redis集群的注意事项,帮助读者全面了解 Redis 集群的部署流程。
1949 68
|
NoSQL Redis 数据安全/隐私保护
挂载配置文件以Docker启动Redis服务
以上步骤提供了一个高效且实用的方式来使用Docker启动并运行带有自定义配置的Redis服务。这些操作可以适用于开发、测试和生产环境,是一种灵活且可扩展的部署方案。通过挂载配置文件和数据卷,您可以轻松地管理和迁移您的Redis实例。
1137 9
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
NoSQL Redis 数据库
Docker平台上的Redis镜像运行
这就是如何在Docker平台上运行Redis镜像的全部过程。走进Docker和Redis的世界,探索更多可能!
898 10