Docker 搭建Redis集群

使用Docker快速搭建一套三主三从Redis集群用于开发、测试 1、目前使用容器部署Docker仅能使用host这种网络模式,其他模式暂未实验成功,如果有了解的小伙伴欢迎赐教; 阅读详情

目录

1. 3主3从架构说明

2. 3主3从Redis集群配置

2.1关闭防火墙+启动docker后台服务

2.2 新建6个docker容器实例

2.3 进去任意一台redis容器,为6台机器构建集群关系

2.4 进去6381,查看集群状态

3. 主从容错切换迁移

3.1 数据读写存储

3.1.1 查看集群情况

3.2 容错切换迁移

3.2.1 Master6381 宕机

3.2.2 Master6381 重新启动

4. 主从扩容

4.1 新增机器 6387 6388 (run image 变成镜像)

4.2 将6387节点(空槽号)作为master节点加入原集群

4.3 第一次检查集群情况

4.4 重新分配槽号

4.5 第二次检查集群情况

4.6 为6387主节点分配6388从节点

4.7 第三次检查集群情况

5. 主从缩容 (6387和 6388 下线,退出集群)

5.1 删除6388 (从集群中移除6388从节点)

5.2 将6387(Master)的槽号清空,重新分配 (平均分给其他3个master)

5.3 第一次检查集群

5.4 将6387删除

5.5 第三次检查集群

1~2亿条数据需要存储,轻微如何设计这个存储案例?

答:单机单台100%不可能,肯定是分布式存储。redis如何落地?

一般业界有3种解决方案:

(1) 哈希取余分区

(2)一致性哈希算法分区

(3)哈希槽分区

详细解释参考之前的文档: Redis 集群(cluster)_redis集群不用哨兵-CSDN博客

1. 3主3从架构说明

2. 3主3从Redis集群配置

2.1关闭防火墙+启动docker后台服务

sudo systemctl stop firewalld

systemctl start docker

2.2 新建6个docker容器实例

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

docker run -d --name redis-node-2 --net host --privileged=true -v /mydocker/redis/share/redis-node-2:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6382

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

docker run -d --name redis-node-4 --net host --privileged=true -v /mydocker/redis/share/redis-node-4:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6384

docker run -d --name redis-node-5 --net host --privileged=true -v /mydocker/redis/share/redis-node-5:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6385

docker run -d --name redis-node-6 --net host --privileged=true -v /mydocker/redis/share/redis-node-6:/data redis:7.2.4 --cluster-enabled yes --appendonly yes --port 6386

--net host : 使用宿主机deIP和端口,默认
--privileged=true :容器卷,宿主机地址:docker内部地址
--cluster-enabled yes : 开启redis集群
--appendonly yes : 开启持久化


[root@192 ~]# docker ps
CONTAINER ID   IMAGE         COMMAND                   CREATED          STATUS          PORTS     NAMES
6618c6a22bc3   redis:7.2.4   "docker-entrypoint.s…"   7 seconds ago    Up 6 seconds              redis-node-6
edab1b644f47   redis:7.2.4   "docker-entrypoint.s…"   15 seconds ago   Up 14 seconds             redis-node-5
d4cd712628c4   redis:7.2.4   "docker-entrypoint.s…"   23 seconds ago   Up 22 seconds             redis-node-4
7f09330818f1   redis:7.2.4   "docker-entrypoint.s…"   32 seconds ago   Up 31 seconds             redis-node-3
3fab905c25d6   redis:7.2.4   "docker-entrypoint.s…"   40 seconds ago   Up 39 seconds             redis-node-2
8fa8521a26d3   redis:7.2.4   "docker-entrypoint.s…"   3 minutes ago    Up 3 minutes              redis-node-1
[root@192 ~]# 

2.3 进去任意一台redis容器,为6台机器构建集群关系

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

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

2.4 进去6381,查看集群状态

127.0.0.1:6381> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:208
cluster_stats_messages_pong_sent:227
cluster_stats_messages_sent:435
cluster_stats_messages_ping_received:222
cluster_stats_messages_pong_received:208
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:435
total_cluster_links_buffer_limit_exceeded:0


127.0.0.1:6381> cluster nodes
826c4e0230f439eb8aca84e3fa6842e0740ee7e2 192.168.217.149:6385@16385 slave 9829684324fd8294650429a00a6ad7dc32ca5357 0 1711277651000 2 connected
2359f4b4eb3d7843ce721a4032b8931f20752cf1 192.168.217.149:6381@16381 myself,master - 0 1711277651000 1 connected 0-5460
da41e72bb921e0c1d013f82df1c481dafb89e91e 192.168.217.149:6386@16386 slave b8b0f5a32e98ef3790108a0009a2e7c8c6115114 0 1711277651740 3 connected
9cd36c05e6125a3251fe7ba937af24da95599617 192.168.217.149:6384@16384 slave 2359f4b4eb3d7843ce721a4032b8931f20752cf1 0 1711277652748 1 connected
b8b0f5a32e98ef3790108a0009a2e7c8c6115114 192.168.217.149:6383@16383 master - 0 1711277652000 3 connected 10923-16383
9829684324fd8294650429a00a6ad7dc32ca5357 192.168.217.149:638
docker安装redis搭建集群 一、docker安装redis 1、拉取redis镜像文件 docker pull redis 查看镜像 docker images 2、在linux主机创建等会需要挂载的目录和文件 创建data目录(存放数据文件,包括用于持久化的dump.rdb) mkdir -p /mydata/redis/data 创建配置文件 mkdir -p /mydata/redis/conf touch /mydata/redis/conf/redis.conf 3、创建redis容器并进行端口映 阅读详情

相关推荐

基于Docker搭建redis集群

文章目录前言Redis集群原理准备工作Redis基础镜像创建创建Redis节点镜像配置集群集群操作说明启动镜像节点配置配置槽点主从高可用高可用测试读写测试 前言 最新在学习Docker,不由自主的深深爱上了它,同时在整理SpringBoot相关资料的时候,整理到redis这块儿,就想搭建redis集群,做做相关的测试,写写记录;然后就把Docker给拽进来搭建一个用于测试使用的redis集群,...

一行Java的博客 5万+

深入学习 Redis Cluster - 基于 DockerDockerCompose 搭建 Redis 集群,处理故障、扩容方案

当前阶段,由于我只有一个 云服务器,搞分布式系统就比较麻烦,而实际工作中,一般是通过多个主机的方式来搭建集群的. 因此这里我会 基于 dockerdocker-compose(容器编排) 来搭建 redis 集群.

CYK_byte的博客 2360

docker compose搭建redis cluster集群

docker compose快速搭建redis cluster集群

u010104795的博客 1421

手把手教你实现 Docker 部署 Redis 集群

作者:我为什么要写这个cnblogs.com/cxbhakim/p/9151720.html摘要接触docker以来,似乎养成了一种习惯,安装什么应用软...

Java知音 5705

docker搭建redis集群

准备好Linux系统机器,并安装好docker,阅读这篇文章前请先了解清楚docker的基本知识并且会熟悉运用docker的常用命令。学习docker基础知识可以参考这篇博文 安装好并启动docker后就可以开始搭建redis了 本篇文章我们安装redis6.0.6版本,执行以下命令直接下载redis6.0.6版本镜像 安装好后再执行 docker images命令,查看到redis6.0.6镜像则安装成功 安装好redis镜像后,此时redis还只是单体,我们需要搭建集群集群配置如下:回到linux,

weixin_44947701的博客 7008

Docker搭建Redis集群

Docker搭建Redis集群 1. 安装Redis 拉取redis官方镜像docker pull redis 查看镜像docker images 启动redisdocker run -it -p 6379:6379 --name myredis docker.io/redis 查看redis服务docker ps 测试docker exec -it [容器id] redis-c...

大菜的博客 2542

Docker搭建Redis分片集群

Redis分片集群(Redis Cluster)是Redis官方提供的分布式解决方案,它允许数据自动分布在多个Redis节点上,提供的Redis服务。主从和哨兵可以解决的问题。但是依然有两个问题没有解决:海量数据存储问题高并发写的问题。

m0_74808313的博客 842

Docker搭建redis集群

Docker搭建redis 前言 之前介绍了用docker搭建redis主从环境,但这只是对数据添加了从库备份(主从复制),当主库down掉的时候,从库是不会自动升级为主库的,也就是说,该redis主从集群并非是高可用的。 目前来说,高可用(主从复制、主从切换)redis集群有两种方案,一种是redis-sentinel,只有一个master,各实例数据保持一致;一种是redis-clust...

w531128724的专栏 5906

如何用docker搭建redis集群,来让大佬带你详细了解redis

redis定义redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。

pingguocu3的博客 886

docker搭建redis集群(三主三从)

本文讲述了关于redis集群三主三从的搭建

qq_45863248的博客 1534

redis-基于docker搭建redis集群

学习了redis的主从,哨兵之后,学习redis高可用的最后一篇集群。学习集群不着急,先来看看怎么搭建集群。现在都讲究容器部署,咱也来试试基于docker搭建redis集群。ps:我只有一台虚拟机,所以。。。。。将就一下。

weixin_42128977的博客 1124

如何在 Docker搭建 Redis 集群

通过以上步骤,你可以在 Docker 环境中成功搭建一个高可用的 Redis 集群。该集群具备负载均衡和故障转移功能,能够满足分布式应用的需求。

zru_9602的博客 1164

实战使用 Docker Compose 搭建 Redis Cluster 集群

通过本文的实践,我们成功地使用Docker Compose搭建了一个Redis Cluster集群。这个过程不仅帮助我们理解了Redis Cluster的基本原理,还掌握了如何利用Docker Compose简化多容器应用的部署。其中重要的是Redis Cluster解决了分布式储存和提升高并发性能的瓶颈,大大提升了中间件和应用系统的高可用,简直不要太爽。

勤于笔记,成于点滴。 953

docker搭建redis哨兵模式集群-docker搭建redis哨兵模式集群

docker搭建redis哨兵模式集群 一、搭建redis一主两从集群 1.创建docker网络,为了容器间相互通信 docker network create redis 2.运行redis容器 docker run -it -d --network redis --restart=always --name redis-master -p 6379:6379 -p 26379:26379 redis docker run -it -d --network redis --restart=alw

haishan88996的博客 1751
上一篇: Docker 安装mysql 主从复制
下一篇: DockerFile 简介
dylan_2017
博客等级 码龄4年 350粉丝 32原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值