上一节我们已经把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 执行结果
redis-cli --cluster check 127.17.0.1:6381 执行结果
为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执行结果
redis-cli --cluster check 10.0.12.8:6381执行结果
为主节点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执行结果
redis-cli --cluster check 10.0.12.8:6382执行结果