黄昏版,Docker搭建Redis集群(上一节)、集群扩容、集群缩容(下一节)

154 阅读2分钟

上一节我们已经把redis的集群搭建起来,并且3主3从。至于网上的master节点挂了,然后slave节点上位操作,自己去玩吧。

开始实操前,我们启动另外2个redis-node-7和redis-node-8的容器

将6387添加到redis集群中

# 进入刚刚刚刚启动的 redis-node-7节点容器内
docker exec -it redis-node-7 /bin/bash

#  将6387作为master加入集群(redis-cli --cluster add-node 本节点地址 要加入的集群中的其中一个节点地址)
redis-cli --cluster add-node 172.17.0.1:6387 172.17.0.1:6381

#  检查当前集群状态
redis-cli --cluster check 127.17.0.1:6381
可以发现,6371节点已经作为master加入了集群,但是该节点没有被分配槽位。

redis-cli --cluster add-node 172.17.0.1:6387 172.17.0.1:6381 执行结果 image.png

redis-cli --cluster check 127.17.0.1:6381 执行结果 image.png

为6387分配槽位
# 重新分配集群的槽位
redis-cli --cluster reshard 172.17.0.1:6381

⚠️注意现在一共有4台master主机,集群一共有166384槽位来4台master分配;我这边的是4台机器均分。
第一次填写 166384/4 = 4096
第二次填写给那个节点分配 就是redis-node-7的ID
第三次填写 all(全部)
第三次填写 yes

How many slots do you want to move (from 1 to 16384)? 4096

What is the receiving node ID? c5edbf28a8fd443d460110d13387dbb6a4cd0c09

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

Do you want to proceed with the proposed reshard plan (yes/no)? yes

# 查看集群状态
redis-cli --cluster check 10.0.12.8:6381
仔细发现前3台master每台给redis-node-7分配了一点。

edis-cli --cluster reshard 172.17.0.1:6381执行结果

image.png

redis-cli --cluster check 10.0.12.8:6381执行结果

image.png

为主节点6387分配从节点6388
# redis-cli --cluster add-node 6388的IP 6387的IP --cluster-slave --cluster-master-id  6387节点ID

redis-cli --cluster add-node 172.17.0.1:6388 172.17.0.1:6387 --cluster-slave --cluster-master-id c5edbf28a8fd443d460110d13387dbb6a4cd0c09

# 查看集群状态
redis-cli --cluster check 10.0.12.8:6382

redis-cli --cluster add-node 172.17.0.1:6388 172.17.0.1:6387 --cluster-slave --cluster-master-id c5edbf28a8fd443d460110d13387dbb6a4cd0c09执行结果

image.png

redis-cli --cluster check 10.0.12.8:6382执行结果

image.png

🔥🔥🔥🔥🔥🔥🔥🔥明天继续Redis的集群缩容!!