当前位置:首页 > 技术分析 > 正文内容

Docker 中redis集群扩容、缩容

ruisui8812小时前技术分析4


适逢双十一等大型活动流量爆增时redis集群扛不住了,这个时候怎么办呢,不能说把redis停了,我再搭建一个5主5从集群吧,这个时候就需要用到redis自动扩容。


1、redis集群设计



redis官网有这么一段话,大概意思是 redis集群设计了16384个槽位,然后针对每个集群主节点,需要分配一些或者一个槽位,这样一来,最大就是可以有16384个集群主节点(一个槽位一个节点),但是因为redis集群超过1000个节点后,速度会变慢,所以就建议最大1000个集群主节点。


注意:这里说的是主节点


接上篇3主3配置,我们可以看到redis将16384个槽位平均分配到3个主节点



说到这里,大家知道怎么集群怎么扩容了吗,那就是将槽位再分配下呗。


2、新建6387、6388两个Redis容器节点


涉及命令:


docker run -d --name redis-node-7 --net host --privileged=true -v /usr/local/tool/volumn/redis/node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387;

docker run -d --name redis-node-8 --net host --privileged=true -v /usr/local/tool/volumn/redis/node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388;


命令选项这里就不说了,不懂的看下上篇


实例:



3、将新增的6387节点(空槽位)作为master节点加入原集群


进入任意节点(非6387、6388),执行命令


涉及命令:


#命令格式: redis-cli --cluster add-node 要新增的节点IP:Port 当前进入的节点IP:Port
redis-cli --cluster add-node 192.168.13.61:6387 192.168.13.61:6381


实例:



4、检查集群情况第1次


涉及命令:


redis-cli --cluster check 192.168.13.61:6381


实例:



5、重新分派槽位


进入任意节点(非6388),执行命令


涉及命令:


redis-cli --cluster reshard 192.168.13.61:6381


实例:





选择yes即可执行槽位重新分配


6、检查集群情况第2次


执行命令同4


实例:



7、为主节点6387分配从节点6388


涉及命令:


#格式 redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID 
#新主机节点ID 可以通过redis-cli --cluster check 192.168.13.61:6381 查到
redis-cli --cluster add-node 192.168.13.61:6388 192.168.13.61:6387 --cluster-slave --cluster-master-id 351512dc4c50f36ac3ac9f3e334094e69fbef59f


实例:



8、检查集群情况第3次


执行命令同4


实例:



至此,redis扩容就实现了,轻松愉快的扛过活动,活动过后是不是得缩回3主3从呢?


9、删除6387从节点


进入任意节点(非6387),执行命令


涉及命令:


#格式  redis-cli --cluster del-node ip:端口  节点ID 
redis-cli --cluster del-node 192.168.13.61:6388 d106683d0f11ca8f294133dbd696f41fc85f2cde


注意:必须先删除从节点,否则报错(主节点槽位需要被分配其他主节点后才可以删除)



实例:



10、将6387主节点槽位分给其他主节点


进入任意节点,执行命令


涉及命令:


#192.168.13.61:6381 可以为任意节点IP:Port
redis-cli --cluster reshard 192.168.13.61:6381



11、删除6387节点



涉及命令:


redis-cli --cluster del-node 192.168.13.61:6387 351512dc4c50f36ac3ac9f3e334094e69fbef59f


实例:


扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4056.html

分享给朋友:

“Docker 中redis集群扩容、缩容” 的相关文章

Gitlab之间进行同步备份

目前,我们公司有两个研发团队,分别在北京和武汉,考虑到访问速度的问题,原有武汉的研发环境在近端部署。也就是北京和武汉分别有两套独立的研发管理环境,虽然这解决了近端访问速度的问题,但是管理上较为分散,比如研发环境备份和恢复就是最重要的问题之一。最近,处于对安全性和合规性的考虑,希望将北京和武汉的源代码...

JS数组过滤元素的方法

引言JavaScript 作为前端开发的核心技术之一,在现代 Web 开发中扮演着举足轻重的角色。随着 Web 应用越来越复杂,高效处理数据集合的需求日益凸显。本文旨在介绍 JavaScript 中数组过滤的基础知识及其在实际项目中的应用技巧。技术概述定义数组过滤是 JavaScript 提供的一种...

数组、去重、排序、合并、过滤、删除

ES6数字去重 Array.from(new Set([1,2,3,3,4,4])) //[1,2,3,4] [...new Set([1,2,3,3,4,4])] //[1,2,3,4]2、ES6数字排序 [1,2,3,4].sort(); // [1, 2,3,4],默认是升序...

三、Uni-app + vue3 页面如何跳转及传参?

Vue 项目往往需要使用 vue-router 插件,刚开始入门 Uni-app + Vue3 项目的同学,会不会想着路由使用 vue-router V4 版本不就可以了吗?不怕大家笑话,我就是这样想的,毕竟我是第一次使用 Uni-app ,由于孕期记性贼差,所以我决定写成笔记,加深记忆。uni-a...

关于Vue页面跳转传参,参数不同, 但页面只获取参数一次的问题

#头条创作挑战赛#1.问题描述问题描述: element 展示表格(页面A),点击表格的每一行的查看详情按钮,可以携带此行的信息参数跳转到另一个页面(页面B),但是从A页面到B页面,只有第一次跳转的时候B页面可以获取到A页面的参数,返回再次A->B ,B页面无法获取到参数。2.解决办法:方法一...

VUE 技术栈

官网链接:https://cn.vuejs.org/什么是vue:渐进式JavaScript 框架vue-cli链接:https://cli.vuejs.org/vue-cli安装:npm install -g @vue/clivue -V创建一个项目:vue create xxxxxx模版语法:文...