docker版redis-cluster模式集群-主从扩容
3主3从节点在上篇:docker版redis-cluster模式集群搭建(3主3从)
1、新建6387、6388两个节点
docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387 docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388
2、进入6387容器实例内部
docker exec -it redis-node-7 /bin/bash
3、将新增的6387节点(空槽号)作为master节点加入原集群
redis-cli --cluster add-node 宿主机ip:6387 宿主机ip:6381
6387 就是将要作为master新增节点
6381 就是原来集群节点里面的领路人
4、检查集群情况
redis-cli --cluster check 宿主机ip:6381
5、重新分派槽号
从上图集群节点信息可以看出,6387节点没有分配哈希槽,因为之前3台Master已经分完了16384个哈希槽。我们重新分配哈希槽,让6387分配到一定的哈希槽,重新分配后,还要考虑之前的Redis节点数据迁移。
本例采用平均分配方式,16384/4=4096
输入完命令后会问你三个问题:
a.每个分配多少个槽位:4个主节点,AA分配,16384/4=4096
b.分配给节点的ID:此处6387节点的ID
c.从哪个节点分配给6387:此处all
redis-cli --cluster reshard IP地址:端口号
6、检查集群情况第2次
为什么6387是3个新的区间,以前的还是连续?
重新分配成本太高,所以前3家各自匀出来一部分,从6381/6382/6383三个旧节点分别匀出1364个坑位给新节点6387
7、为主节点6387分配从节点6388
redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID
8、检查集群情况第3次
4主4从完成。