首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >docker搭建Redis3主3从集群并扩缩容

docker搭建Redis3主3从集群并扩缩容

原创
作者头像
buiu
修改于 2022-02-09 01:43:56
修改于 2022-02-09 01:43:56
3370
举报
3主3从Redis集群扩缩容

使用主从时需要避免主与从在同一物理机, 否则当一对主从挂机后, 对应数据不可使用

一. 构建

代码语言:shell
AI代码解释
复制
1. 创建6个Redis容器实例
docker run -d --name redis-node-1 --net host --privileged=true -v /opt/redis/share/redis-node-1:/data redis --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /opt/redis/share/redis-node-2:/data redis --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /opt/redis/share/redis-node-3:/data redis --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /opt/redis/share/redis-node-4:/data redis --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /opt/redis/share/redis-node-5:/data redis --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /opt/redis/share/redis-node-6:/data redis --cluster-enabled yes --appendonly yes --port 6386
	# 参数详解 --net host = 使用宿主机的ip和端口, 是默认选项

2. 构建集群
redis-cli --cluster create 10.122.1.86:6381 10.122.1.86:6382 10.122.1.86:6383 10.122.1.86:6384 10.122.1.86:6385 10.122.1.86:6386 --cluster-replicas 1		# 一一分配
yes
3. 查看集群状态(redis内执行)
cluster info		
cluster nodes	# 可以确定主从的对应关系
M		S
1		6
2		4
3		5
redis-cli --cluster check 10.122.1.86:6381	(容器内执行)

4.连接至集群中
docker exec -it redis-node-1 /bin/bash
redis-cli -p 6381 -c

5. 容错迁移, 假使某个master宕, 是否有slave上位
 docker stop redis-node-2		# 宿主机执行
 # check状态
cluster nodes 
 # 发现master,fail, 短暂等待再次check
cluster nodes
# 会发现原先属于master2的slave4上位, 变成master

二. 扩容

需求: 新增主从, master6387, 其slave为6388

代码语言:shell
AI代码解释
复制
1. 启动实例
docker run -d --name redis-node-7 --net host --privileged=true -v /opt/redis/share/redis-node-7:/data redis --cluster-enabled yes --appendonly yes --port 6387
docker run -d --name redis-node-8 --net host --privileged=true -v /opt/redis/share/redis-node-8:/data redis --cluster-enabled yes --appendonly yes --port 6388
2. 将6387节点作为master加入集群
docker exec -it redis-node-7  /bin/bash
redis-cli  --cluster add-node 10.122.1.86:6387 10.122.1.86:6381
redis-cli  --cluster check 10.122.1.86:6381发现6387已经作为新的master
3. 重新分配槽号

   How many slots do you want to move (from 1 to 16384)? 4096

   What is the receiving node ID?	c6822e309e97b70122ec8219334b28457bbd6845

   Source node #1: all

   Do you want to proceed with the proposed reshard plan (yes/no)? yes

   redis-cli  --cluster check 10.122.1.86:6381

# 发现6387节点具有4096个槽位(原本的3个节点各均匀分配一些出来)

1. 将6388作为6387的slave新增至集群
redis-cli --cluster add-node 10.122.1.86:6388 10.122.1.86:6387 --cluster-slave --cluster-master-id c6822e309e97b70122ec8219334b28457bbd6845
redis-cli -p 6381 -c
cluster nodes 	# 确认集群状态

三. 缩容

需求: 删除主从6387和6388

代码语言:shell
AI代码解释
复制
1. 删除从机6388
redis-cli --cluster del-node 10.122.1.86:6388 1da4941694c45812027fc74e687d7de17ad798eb
2. 重分配槽位
2.1 方案1: 将6387的槽位分配给6382
	 redis-cli  --cluster reshard 10.122.1.86:6382
	 How many slots do you want to move (from 1 to 16384)? 4096
	 What is the receiving node ID? 4314fd868093beea918b8aabacca74f3800855e4
	 Source node #1: c6822e309e97b70122ec8219334b28457bbd6845
	 Source node #2: done
	 Do you want to proceed with the proposed reshard plan (yes/no)? yes
	 

   		 redis-cli  --cluster check 10.122.1.86:6381

# 发现6387已经没有槽位, 而6382有8192个槽位

1. 删除主机6387
redis-cli --cluster del-node 10.122.1.86:6387 c6822e309e97b70122ec8219334b28457bbd6845
2. 确认
redis-cli  --cluster check 10.122.1.86:6381

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
redis cluster(集群)模式-基于docker 哈希槽分区
哈希槽分区在数据和节点之间又加入了一层,把这层称为哈希槽(slot),用于管理数据和节点之间的关系,现在就相当于节点上放的是槽,槽里放的是数据。
鱼找水需要时间
2023/02/16
4210
redis cluster(集群)模式-基于docker 哈希槽分区
Docker 实践经验(五)docker上部署 redis 三主三从集群
1、一个 redis 镜像 2、准备一份 redis.conf,建议使用物理机安装 redis 后自带的。 3、准备一个承载目录,用于挂载 redis 容器数据卷,以及将配置文件放进去。 我这里使用 /redis-data
看、未来
2022/05/06
5350
Docker 实践经验(五)docker上部署 redis 三主三从集群
docker搭建3主3从redis集群(主从容错切换、主从扩容、主从缩容)
–cluster-replicas 1 表示为每个master创建一个slave节点
别团等shy哥发育
2023/02/25
1K0
docker搭建3主3从redis集群(主从容错切换、主从扩容、主从缩容)
docker高级篇(大厂进阶):安装redis集群
查看集群状态,命令:redis-cli --cluster check 自己IP:6381
刘大猫
2024/12/17
2370
docker安装redis集群--分布式存储案例
如果有1~2亿条数据需要缓存,那如何设计这个存储案例呢?单机是100%不可能的,肯定得是分布式存储,那具体如和实现呢?
害恶细君
2022/11/22
1.6K0
docker安装redis集群--分布式存储案例
Docker高级篇笔记(七)在docker里面进行redis三主三从的集群案例搭建步骤
执行完成以上的命令 –cluster-replicas 1 表示为每个master创建一个slave节点
一写代码就开心
2022/05/09
4260
Docker高级篇笔记(七)在docker里面进行redis三主三从的集群案例搭建步骤
接近3w详解Docker搭建Redis集群(主从容错、主从扩容、主从缩容)
简单粗暴,直接有效,只需要预估好数据规划好节点,例如3台、8台、10台,就能保证一段时间的数据支撑。使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡+分而治之的作用。
小熊学Java
2022/09/04
7490
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
步骤2中进入/mydata/mysql-master/conf目录下新建my.cnf -> vim my.cnf
刘大猫
2024/12/30
1210
Docker高级篇:实战Redis集群!从3主3从变为4主4从
通过前面两篇,我们学会了三主三从的Redis集群搭建及主从容错切换迁移,随着业务增加,可能会有主从扩容的,所以,本文我们来实战主从扩容
凯哥Java
2022/12/21
1K0
Docker高级篇:实战Redis集群!从3主3从变为4主4从
docker高级篇第二章-分布式存储之实战案例:3主3从redis集群扩容配置
在上一篇文章中,我们介绍了分布式存储的三种方式:hash取余分区、一致性哈希算法分区以及哈希槽分区。本篇,我们就来实战3主3从的哈希槽Redis集群搭建。
凯哥Java
2022/12/19
7280
docker高级篇第二章-分布式存储之实战案例:3主3从redis集群扩容配置
docker学习入门篇
docker官网: www.docker.com dockerhub官网: hub.docker.com
鹅厂老五
2024/06/02
5.9K0
大数据篇---redis学习Redis安装Redis启动redis集群搭建
Redis安装 1 第一步:安装 C 语言需要的 GCC 环境 yum install -y gcc-c++ yum install -y wget 第二步:下载并解压缩 Redis 源码压缩包 wg
用户2337871
2020/12/22
9460
大数据篇---redis学习Redis安装Redis启动redis集群搭建
Redis Cluster的搭建与部署,实现redis的分布式方案
  上篇Redis Sentinel安装与部署,实现redis的高可用实现了redis的高可用,针对的主要是master宕机的情况,我们发现所有节点的数据都是一样的,那么一旦数据量过大,redi也会效率下降的问题。redis3.0版本正式推出后,有效地解决了Redis分布式方面的需求,当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构方法达到负载均衡的目的。
青石路
2018/09/10
1.9K0
Redis Cluster的搭建与部署,实现redis的分布式方案
Docker高级篇:Redis集群实战!从4主4从缩容到3主3从,该怎么处理?
那么,接着,活动过去了。流量没有那么大了。需要缩容了。从4主4从缩容到3主3从了。那么这个时候又该怎么处理呢?
凯哥Java
2022/12/22
1.3K0
Docker高级篇:Redis集群实战!从4主4从缩容到3主3从,该怎么处理?
centos6下redis cluster集群部署过程
一般来说,redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口,比如:slaveof 192.168.10.10 6379,然后启动主从,主从就搭建好了。redis主从中如果主节点发生故障,不会自动切换,需要借助redis的Sentinel(哨兵模式)或者keepalive来实现主的故障转移。 今天介绍下redis cluster集群模式: redis集群是一个无中心的分布式redis存储架构,可以在多个节点之间进行数据共享,解决了redis高可用、
洗尽了浮华
2018/01/23
1.8K0
centos6下redis  cluster集群部署过程
Docker搭建Redis的cluster集群
  相比于哨兵集群,cluster集群能支持扩容,且无须额外的节点来监控状态,所以使用这种模式集群的系统会用得更多些。
别团等shy哥发育
2023/02/25
8280
Docker搭建Redis的cluster集群
通过 Docker 部署 Redis 集群
在 Redis 3.0 版本后正式推出 Redis 集群模式,该模式是 Redis 的分布式的解决方案,是一个提供在多个 Redis 节点间共享数据的程序集,且 Redis 集群是去中心化的,它的每个 Master 节点都可以进行读写数据,每个节点都拥有平等的关系,每个节点都保持各自的数据和整个集群的状态。
JAVA葵花宝典
2021/04/08
9790
通过 Docker 部署 Redis 集群
CentOS7下安装Redis-4.0.11版本分片集群
注意:redis分片集群最少需要六个节点,如果机器不够配置2台服务器,每台3个节点
用户5766185
2019/07/08
9490
redis集群
集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。
xiaozhangStu
2023/10/19
3530
Redis集群环境中添加和删除节点
林老师带你学编程
2018/01/04
2.8K0
Redis集群环境中添加和删除节点
推荐阅读
相关推荐
redis cluster(集群)模式-基于docker 哈希槽分区
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档