docker部署的redis集群 添加节点(扩容)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 这篇博文说一下如何在集群基础上继续添加节点,也就是给集群扩容



这篇博文说一下如何在集群基础上继续添加节点,也就是给集群扩容


博文中的命令出现的 111.111.111.111 均换成实际 IP 执行


创建要添加的一主一从容器

这里创建一个6377主节点和一个6378从节点


docker run -d --name redis-node7 --net host --privileged=true -v /usr/local/redis/node7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6377

docker run -d --name redis-node8 --net host --privileged=true -v /usr/local/redis/node8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6378


然后别忘记打开这两个端口和对应的16377 16378通信端口


将新增的6377作为 master 节点加入集群

进入6377节点


docker exec -it redis-node7 /bin/bash

执行添加命令


redis-cli --cluster add-node 111.111.111.111:6377 111.111.111.111:6374

意思是把6377添加到6374领头的主节点集群,执行之后出现一大段内容,有下图内容表示添加成功



检查集群情况,可以发现已经有6377主节点了,但是还没有分配槽位(下图第四行中 0 slots | 0 slaves)


redis-cli --cluster check 111.111.111.111:6371


集群重新分配槽位

执行重新分配槽位命令(目前还是在6377容器里面,在其他节点执行也是没问题的 )


redis-cli --cluster reshard 111.111.111.111:6371

执行之后会出现下图内容,问你1到16384分配多少,这里因为是4个主节点 所以直接使用16384除以4得到4096,输入4096回车



然后又会问你节点的ID,这里一定要输入上图红框位置的6377节点的ID(肯定跟我图上的不一样,填你实际的ID)。填完之后又会问你是处理单个节点还是所有节点,这里输入all 回车



开始分配后,中途会再询问你一次,是否继续执行重新分配计划,输入yes回车。等他继续分配完成。再次使用check命令查看集群情况



可以看到四个主节点都是4096个槽位,但并不是重新分成四份分配的,而是在原来三个节点槽位中挨个分了一部分(大概1364个)给新节点。


因为之前节点已经存有数据了,如果重新分配成本太高,所以就采用这种形式


给6377节点挂一个6378从节点

redis-cli --cluster add-node 111.111.111.111:6378 111.111.111.111:6377 --cluster-slave --cluster-master-id fdb615eb6c86ec8246739112b6cc89679b37f58b

命令最后的id是6377主节点的节点id,也就是上一步分配槽位时填的那个id


再次使用check命令查看,可以看到已经是4主4从了

   



到此就完成了从原来的3主3从集群扩容到4主4从集群


有扩容就有缩容,下篇博文完成删除节点 缩容操作:点这里


相关文章
kde
|
2月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
kde
809 4
|
2月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
122 5
kde
|
2月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
kde
668 7
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
352 5
|
应用服务中间件 nginx Docker
Docker进阶-快速扩容
1、命令方式 在创建好的Swarm集群中运行nginx服务,并使用--replicas参数指定启动的副本数。 docker service create --replicas 3 -p 80:80 --name nginx nginx:latest 或者 docker service create...
1137 0
|
3月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建