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从集群


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


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4天前
|
Docker 容器
paddleocr 在docker环境下部署_docker部署paddleocr,90%的人看完都说好
paddleocr 在docker环境下部署_docker部署paddleocr,90%的人看完都说好
|
2天前
|
JSON 测试技术 定位技术
【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具
【5月更文挑战第16天】在Docker环境下部署Simple mind map思维导图工具
19 1
【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具
|
2天前
|
监控 物联网 测试技术
【好用的个人工具】使用Docker部署Dashdot服务器仪表盘
【5月更文挑战第15天】使用Docker部署Dashdot服务器仪表盘
34 12
|
3天前
|
运维 监控 Docker
使用Docker进行微服务架构的部署
【5月更文挑战第18天】本文探讨了如何使用Docker进行微服务架构部署,介绍了Docker的基本概念,如容器化平台和核心组件,以及它与微服务的关系。通过Docker,每个微服务可独立运行在容器中,便于构建、测试和部署。文章详细阐述了使用Docker部署微服务的步骤,包括定义服务、编写Dockerfile、构建镜像、运行容器、配置服务通信、监控和日志管理以及扩展和更新。Docker为微服务提供了可移植、可扩展的解决方案,是现代微服务架构的理想选择。
|
4天前
|
敏捷开发 数据可视化 测试技术
【Docker项目实战】使用Docker部署nullboard任务管理工具
【5月更文挑战第14天】使用Docker部署nullboard任务管理工具
18 2
|
4天前
|
运维 Linux Docker
ChatGLM3在Docker环境部署,Linux运维免打包多渠道统计如何实现
ChatGLM3在Docker环境部署,Linux运维免打包多渠道统计如何实现
|
4天前
|
运维 Linux Docker
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
|
4天前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷
|
4天前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(3)
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(3)
|
4天前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(2)
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(2)