0
点赞
收藏
分享

微信扫一扫

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

zhongjh 2023-09-16 阅读 11

一、添加两个新容器

新增两个容器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)——主从扩容与缩容_扩容与缩容_03

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

基于Docker的Redis集群配置(3)——主从扩容与缩容_redis_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)——主从扩容与缩容_redis_06

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

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

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

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

基于Docker的Redis集群配置(3)——主从扩容与缩容_redis_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)——主从扩容与缩容_集群_10

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

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

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

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

举报

相关推荐

0 条评论