`

docker高级篇第二章-分布式存储之实战案例:3主3从redis集群扩容配置

JVM 
阅读更多

在上一篇文章中,我们介绍了分布式存储的三种方式:hash取余分区、一致性哈希算法分区以及哈希槽分区。本篇,我们就来实战3主3从的哈希槽Redis集群搭建。

大家好,我是凯哥Java(kaigejava),乐于分享,每日更新技术文章,欢迎大家关注“凯哥Java”,及时了解更多。让我们一起学Java。也欢迎大家有事没事就来和凯哥聊聊~~~

 

本次案例分为:三主三从Redis集群配置、主从容错切换迁移案例、主从扩容案例、主从缩容案例。如下图:

42426e0d60edce94d9f49640833c107f.png

本文主要内容:3主3从redis集群扩容缩容配置案例架构

3主3从redis集群配置

步骤:

1:关闭防火墙及启动docker后台服务

2:新建6个docker容器实例

3:进入容器并为6台集群构建集群关系

4:查看集群状态

066708a48892d7702e4cbccaf4131c8b.png

1:创建6个Redis的容器实例

命令:

docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-nod-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381

 

命令解析:

docker run :创建并运行docker容器实例

--name xxx:给容器起个名字

--net host:使用宿主机的IP和端口。默认

-- privileged=true:获取宿主机root用户权限

-v /path:容器卷。

--cluster-enabled yes:开启Redis集群

-- appendonly yes :开启持久化

123be7477594801d47465f44cba48396.png

需要六台。就复制6个。

docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-nod-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-nod-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-nod-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-nod-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-nod-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-nod-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

2:构建主从关系

进入容器内部后,构建主从关系。这里我们就进入node1中

命令:

docker exec -it redis-node-1 /bin/bash

构建主从命令公式:

redis-cli --cluster create ip:端口 ip:端口 ... --cluster-replicas 1

命令说明:

--cluster-replicas 1表示为每个master创建一个slave节点

ip:ip是宿主机的ip

端口:端口是每个redis的端口。

实战执行的命令:

redis-cli --cluster create 192.168.50.128:6381 192.168.50.128:6382 192.168.50.128:6383 192.168.50.128:6384 192.168.50.128:6385 192.168.50.128:6386 --cluster-replicas 1

注意修改成你们自己宿主机的ip

08702ddf10faf8caaa1de35027db249f.png

执行后,我们可以看到自动就三主三从了。

可以看到把16384个槽分成3个

091b87093ae50ce55aa9616805b554a7.png

询问是否above configuratin?输入yes

f58e83b505947b4be7aa1b78b35c62d7.png

3:查看集群状态

进入6381这台Redis容器中,查看集群状态

用到 cluster info / cluster nodes

先进入到6381这台Redis容器中,使用redis的cli端链接。命令:

docker exec -it 41c16958a597 /bin/bash
redis-cli -p 6381

0dda30d92e42daaf9dd8090fad3f5acd.png

使用 cluster info命令查看

0dba098b096ce87e7f7acfb5fe501e68.png

使用 cluster nodes命令查看

7a25d68860b19d79fd041e1f6dfc373f.png

那么怎么从nodes信息知道哪个master挂哪个slave呢?

c5cf823cc1fd6ad6a4761f04b5fd2e8b.png

从上图,我们可以看到:

16383这个master尾部字符串为:e00bdee.

16386这个slave对应尾部字符串也是:e00bdee

所以,我们就可以得到关系:master 83这台机器对应的从机器就是86了。

其他两组依次类推。

81==>84

82==>85

83==>86

架构图为:

搭建完成之后的Redis三主三从集群架构图如下:

b8bdb5edbfa8e1fea850301f64c1e9ad.png

 

结束语

如操作有问题欢迎去 我的 个人博客(www.kaigejava.com)留言或者   微信公众号(凯哥Java)留言交流哦。

 

本系列教程直通车

直通车,本系列教程已发布文章,快速到达,《Docker学习系列》教程已经发布的内容如下:

【图文教程】Windows11下安装Docker Desktop

【填坑】在windows系统下安装Docker Desktop后迁移镜像位置

【Docker学习系列】Docker学习1-docker安装

【Docker学习系列】Docker学习2-docker设置镜像加速器

【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?

【Docker学习系列】Docker学习2-常用命令之启动命令和镜像命令

【Docker学习系列】Docker学习系列3:常用命令之容器命令

【Docker学习系列】Docker学习4-常用命令之重要的容器命令

【Docker教程系列】Docker学习5-Docker镜像理解

【Docker教程系列】Docker学习6-Docker镜像commit操作案例

【Docker学习教程系列】7-如何将本地的Docker镜像发布到阿里云

【Docker学习教程系列】8-如何将本地的Docker镜像发布到私服?

「Docker学习系列教程」9-Docker容器数据卷介绍

「Docker学习系列教程」10-Docker容器数据卷案例

Docker学习11-Docker常规方式安装软件

「Docker学习系列教程」基础篇小总结及高级篇预告

docker高级篇1-dockeran安装mysql主从复制

docker高级篇2-分布式存储之三种算法

 

【Docker学习教程系列汇总】笔记及遇到问题解决文章


 

0
0
分享到:
评论

相关推荐

    docker-compose启动springboot项目-springboot+redis实战案例.zip

    docker-compose启动springboot项目-springboot+redis实战案例。可以参考文章:https://blog.csdn.net/Ber_Bai/article/details/119995240

    docker-compose一键搭建Redis集群

    1.先运行 createFile.py 输入宿主机IP地址,输入redis密码 2.按照控制台输出执行docker-compose up -d 启动命令 3.启动成功后执行加入集群命令即可

    docker-compose redis主从哨兵 redis多节点高可用 redis集群高可用

    3. **Redis集群高可用**:Redis集群通过分片(Sharding)和槽区(Slot)分配,将数据分散到多个节点上,这样即使部分节点故障,其他节点仍能提供服务。Docker Compose配置中,我们需要定义多个集群节点,每个节点都...

    redis集群 三主三从模式

    总的来说,"redis集群 三主三从模式"提供了一种健壮的分布式数据库解决方案,利用Docker和docker-compose简化了部署流程。熟悉并掌握这种配置方法,对于保障高可用性和数据安全性至关重要。在实际应用中,还应考虑...

    docker 实现redis集群搭建

    * 高扩展性:Redis 集群可以水平扩展,以应对高并发和大规模数据存储。 * 高性能:Redis 集群可以提供高性能,提高数据读写速度。 六、结语 使用 Docker 实现 Redis 集群搭建可以提供高可用性、高扩展性和高性能的...

    docker-redis-cluster集群安装

    本篇将详细介绍如何使用Docker Compose来部署一个Redis Cluster集群,并对Redis的相关配置进行解析。 **一、Docker Compose简介** Docker Compose是一个定义和运行多容器Docker应用的工具。通过YAML文件(如docker-...

    docker 运行redis-trib 带密码创建redis cluster集群配置

    docker 运行redis-trib 带密码创建redis cluster集群配置,没有密码的请自己去下载一个redis-trib.rb替换

    dcoker下配置redis集群

    docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383 docker run -d --name redis-node-4 ...

    镜像 k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2

    docker镜像 k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 被墙无法pull,使用nfs方式提供k8s PVC必须的镜像包。 本人小水管拉下来的,拿走不谢。 使用方法: #解压 tar -xvf k8s.gcr.io_sig-...

    docker-redis-cluster-master.tar.gz 集群

    docker-compose一键安装redis集群所需配置文件 初始化3主3从集群redis-cli --cluster create 192.168.0.224:6391 192.168.0.224:6392 192.168.0.224:6393 192.168.0.224:6394 192.168.0.224:6395 192.168.0.224:6396...

    docker run -d -name redis-exporter \ -p 9121:9121 oliver006/red

    docker run -d --name redis_exporter \ -p 9121:9121 oliver006/redis_exporter:v1.45.0 \ --redis.addr redis://192.168.1.108:6379 \ --redis.password "

    redis.zip docker swarm redis集群所需Docker以及docker-compose

    docker-compose方式部署服务 需要解决的问题: 1、文件共享的问题 Machine主机跟docker虚拟主机之间通讯 挂载目录,只能被挂载一次,不能两台远程主机共享一个挂载目录 2、网络共享问题 端口开放 2377 集群管理端口...

    Redis集群配置文件

    Redis集群配置文件,包含了三个主节点,三个从节点的配置文件,该配置是在docker中运行,有完整的docker-compose.yml文件,只要修改映射的宿主机的路径为你自己的路径。然后直接docker-compose up既可以完成环境启动...

    docker、docker-compose 一键安装sentinel高可用redis集群

    docker、docker-compose 一键安装sentinel高可用redis集群 (一台虚拟机上安装的伪高可用集群,学习使用,可以修改文件配置相关参数,非原创,亲测可用) 安装前先安装 docker、docker-compose 第一步(脚本文件可以...

    docker、docker-compose 安装redis集群 (一台虚拟机上安装的伪集群,学习使用)

    docker、docker-compose 一键安装redis集群 (一台虚拟机上安装的伪集群,学习使用,可以修改文件配置相关参数,非原创,亲测可用) 第一步 /usr/local/下依次建docker、redis目录“/usr/local/docker/redis” 第二步 ...

    docker-redis-cluster:一个 Redis 集群 Docker 镜像

    docker-redis-cluster Redis 集群 Docker 映像。 此图像用于测试环境。 请勿将其用于生产。用法启动集群。 它将启动 6 个 Redis 服务器,监听7000~7005端口和一个主管以确保所有服务器都启动。 在所有服务器启动后,...

    docker redis 3.2 配置文件

    Redis 是一个高性能的键值数据库,常被用作缓存和数据存储解决方案。Docker 则是一种流行的容器化平台,可以方便地打包、部署和运行应用程序,包括 Redis。在这个场景中,我们有一个针对 Redis 3.2 版本的自定义配置...

    Redis集群数据迁移操作文档

    实际迁移过程中,我们以两个场景为例:一是从一个Redis集群(Cluster_A)迁移到另一个Redis集群(Cluster_B),二是从Redis集群(Cluster_A)迁移到单个Redis实例(Redis_C)。在迁移前,务必先检查源和目标Redis...

    Redis-Swarm分布式集群部署脚本

    Redis-Swarm分布式集群是通过Docker Swarm模式来实现Redis的集群化部署,它结合了Docker容器编排的强大功能和Redis的数据存储特性。这个“Redis-Swarm分布式集群部署脚本”旨在帮助用户快速、便捷地在多台服务器上...

    docker 部署Redis集群节点.pdf

    Redis是一款开源的高性能内存键值存储数据库,常用于缓存、数据库和消息中间件等场景。如果您需要部署一个Redis集群,Docker可以帮助您更轻松地完成此任务。以下是关于使用Docker部署Redis集群节点的一些资源: - ...

Global site tag (gtag.js) - Google Analytics