栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker redis集群扩容缩容

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker redis集群扩容缩容

上一篇文章中搭建的redis集群的三个主节点平分了16384个槽位:

如果此时以redis-cli -p 端口号的方式进入了某个主节点,尝试存入某个key,但是其哈希值不在该节点的哈希槽范围内,则会报如下错误:

解决方法就是以redis-cli -p 端口号 -c进入:

此时,存储ok,并且会跳转到另外一个主机。

上述redis集群的容错机制是:若主节点挂了,从节点会上位,如果主机点恢复,则会变为从机。

接下来介绍扩容:

首先再创建两个实例:

docker run -p 6387:6379 -p 16387:16379 --name redis7 --privileged=true -v /tmp/redis/data7/:/data -d redis --cluster-enabled yes --appendonly yes

docker run -p 6388:6379 -p 16388:16379 --name redis8 --privileged=true -v /tmp/redis/data8/:/data -d redis --cluster-enabled yes --appendonly yes

 进入redis7容器,执行如下命令使其加入集群:

redis-cli --cluster add-node 新加入节点的ip:6379 原集群中某个主机的ip:6379

如果不清楚ip,可以通过cat /etc/hosts查看。接下来重新划分哈希槽:

redis-cli --cluster reshard 集群中某个主节点的ip:6379

这里以redis1容器的ip 172.0.0.2为例,如下图:

 输入上述命令后,首先会问你移多少个槽,为了均分,需要移4096个槽位给新加入的节点,然后输入接受节点的id,即新加入节点在集群中的id,然后会问你从哪儿移槽位,这里我们选择所有的节点,输入all:

接下来可能还会有一个确认项,输入yes即可 ,完成分配后,重新检查集群信息:

可以发现,新加入的节点已经分配了4096个槽位(分成了三段),其他三个主节点的槽位都有减少。接下来进入从机redis8容器,执行如下命令使其加入集群并成为redis7的从机:

redis-cli --cluster add-node 从机ip:6379 主机ip:6379 --cluster-slave --cluster-master-id 主机在集群中的id

然后查看集群信息,发现集群已经变为四主四从:

接下来介绍缩容:

首先从集群中删除redis8从机节点 :

redis-cli --cluster del-node 从机ip:6379 从机在集群中的id

在删除redis7主机之前,需要重新分配槽位,即把redis7的4096个槽位分给其他节点,这里全部分给redis1节点:

上图中依然是选择移动4096个槽位,使用redis1在集群中的id作为接受者,然后输入redis8的id作为槽位来源者,输入done,表示设置结束,槽位重新分配好之后,从集群中删除redis7节点:

redis-cli --cluster del-node 主机ip:6379 主机在集群中的id

然后查看集群信息:

  

可以看到集群已经变为三主三从

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840487.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号