1)Redis 集群扩容
新增两个 redis 容器 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
检查集群节点,可以看到已经成功加入集群中但是还没有分配槽位。
为新添加的节点 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 继续即可
出现如下图所示就表示分配成功了
注:6387 的槽位是由前三个 master 设备每台匀出来一部分来给新的节点 6387 使用。
为主节点 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
出现如下图所示则表示从节点添加成功
2)Redis 集群缩容
删除 6388 节点和 6387 节点,恢复集群的 3 主 3 从状态。(优先删除从节点,主节点需要先释放占用的槽位再进行删除)
检查集群状态获取 6388 从节点 ID
redis-cli --cluster check 10.10.10.12:6387
将 6388 节点从集群中删除,出现下图显示的信息表示删除成功
redis-cli --cluster del-node 10.10.10.12:6388 7c503bdd43d4c075c8eac8ffa71698dbb2672a05 #此 id 与端口号为要删除的从节点
检查现有集群节点可以看到 6388 已经被删除
将 6387 的槽位清空,重新分配给 6382
redis-cli --cluster reshard 10.10.10.12:6381
查看节点槽位是否已分配成功
redis-cli --cluster check 10.10.10.12:6382
如下图所示 6387 的所有槽位分配给了 6382
最后,删除 6387 节点恢复三主三从集群
redis-cli --cluster del-node 10.10.10.12:6387 4c161961578c17dd41ad5aae2d8d672d95c6229d #此 ID 和端口号为要删除的节点
至此,我们就完成了 Docker 容器下 Redis 集群的扩容与缩容实验。
© 版权声明
博主的文章没有高度、深度和广度,只是凑字数。利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章!如若有侵权,请联系博主删除。
喜欢就点个赞吧