基于Docker的Redis集群配置(3)——主从扩容与缩容
  Il1dbC9Jhbvl 2023年11月02日 28 0

一、添加两个新容器

新增两个容器6387和6388

docker run -d --name redis-7 --network host --privileged=true -v /data/redis-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387

docker run -d --name redis-8 --network host --privileged=true -v /data/redis-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

二、将新节点加入集群

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

redis-cli --cluster add-node 10.10.10.12:6387 10.10.10.12:6381

基于Docker的Redis集群配置(3)——主从扩容与缩容_redis

检查集群节点,可以看到已经成功加入集群中但是没有分配槽位。

基于Docker的Redis集群配置(3)——主从扩容与缩容_集群_02

三、分配槽位

为新添加的节点6387分配槽位

redis-cli --cluster reshard 10.10.10.12:6381

计算新节点所需要的槽位大小

#计算公式:16384/主节点
How many slots do you want to move (from 1 to 16384)? 4096                  #根据公式计算出要给新节点分配的槽位大小
What is the receiving node ID? 4c161961578c17dd41ad5aae2d8d672d95c6229d     #输入要接收槽位大小的节点ID
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: all

输入完毕后回车,会弹出是否继续的提醒,输入yes继续即可

基于Docker的Redis集群配置(3)——主从扩容与缩容_redis_03

出现如下图所示就表示分配成功了(注:6387的槽位是由前三个master设备每台匀出来一部分来给新的节点6387使用。)

基于Docker的Redis集群配置(3)——主从扩容与缩容_扩容与缩容_04

为主节点6387添加从节点

#把6388作为从节点挂在6387下
redis-cli --cluster add-node 10.10.10.12:6388 10.10.10.12:6387 --cluster-slave --cluster-master-id  4c161961578c17dd41ad5aae2d8d672d95c6229d #这个id为主节点6387的ID
查看从节点是否添加成功
redis-cli --cluster check 10.10.10.12:6387
出现如下图所示则表示从节点添加成功

基于Docker的Redis集群配置(3)——主从扩容与缩容_集群_05

2)Redis集群缩容

下线6388节点和6387节点,恢复集群的3主3从状态

检查集群状态获取6388从节点ID

redis-cli --cluster check 10.10.10.12:6387

基于Docker的Redis集群配置(3)——主从扩容与缩容_集群_06

将6388节点从集群中删除,出现下图显示的信息表示删除成功

redis-cli --cluster del-node 10.10.10.12:6388 7c503bdd43d4c075c8eac8ffa71698dbb2672a05  #此id与端口号为要删除的从节点

基于Docker的Redis集群配置(3)——主从扩容与缩容_扩容与缩容_07

检查现有集群节点可以看到6388已经被删除

基于Docker的Redis集群配置(3)——主从扩容与缩容_集群_08

将6387的槽位清空,重新分配给6382

redis-cli --cluster reshard 10.10.10.12:6381

基于Docker的Redis集群配置(3)——主从扩容与缩容_集群_09

查看节点槽位是否已分配成功

redis-cli --cluster check 10.10.10.12:6382

如下图所示6387的所有槽位分配给了6382

基于Docker的Redis集群配置(3)——主从扩容与缩容_redis_10

最后,删除6387恢复三主三从集群

redis-cli --cluster del-node 10.10.10.12:6387 4c161961578c17dd41ad5aae2d8d672d95c6229d   #此ID和端口号为要删除的节点

再次检查集群节点情况,已恢复三主三从集群模式

基于Docker的Redis集群配置(3)——主从扩容与缩容_扩容与缩容_11

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  eHipUjOuzYYH   2023年11月19日   18   0   0 重启redis
  eHipUjOuzYYH   2023年12月07日   24   0   0 数据乐观锁redis
  P3nxyT0LRuwj   2023年11月24日   63   0   0 缓存redis配置文件
  L83A5jZvvg3Q   2023年11月19日   34   0   0 源码包icoredis
  eHipUjOuzYYH   2023年11月13日   188   0   0 本地地址redis链路
  9JCEeX0Eg8g4   2023年11月22日   23   0   0 数据redis持久化
  eHipUjOuzYYH   2023年11月13日   22   0   0 数据redis
  D04qQxYJZ4A6   2023年11月19日   35   0   0 mysqlredisphp
Il1dbC9Jhbvl