在集群中添加新结点
我们先打开之前创建的6个结点 7001-7006。
添加新的节点的基本过程就是添加一个空的节点然后移动一些数据给它,有两种情况,添加一个主节点和添加一个从节点(添加从节点时需要将这个新的节点设置为集群中某个节点的复制)
在集群目录中新建两个目录:
mkdir 7007 7008
cp 7001/redis.conf 7007/ 复制配置文件,更改其中的参数为7007
cp 7001/redis.conf 7008/ 更改其中的参数为7008
此时8个结点都打开,现在我们把他们加入到结点中去。
redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001 添加主节点
新的结点 存在的结点
可见7007结点已经添加进去,并且它没有slave结点。并且没有哈希槽。
所以我们还需要给他添加一个slave结点,才能分配哈希槽。
redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7007 --cluster-slave --cluster-master-id f43ad5c680f1c87baea88ed6a15991d86aa67ca1
此时7007和708都加进去了但是仍然没有哈希槽,所以我们现在分配哈希槽给7007
redis-cli --cluster reshard 127.0.0.1:7007
先分配300个给7007的id,然后从所有结点中取300个,all代表从所有的里面取。
这里我们看到分配的哈希槽是非常不均匀,我们给4个结点均匀分配一下哈希槽:
redis-cli --cluster rebalance --cluster-use-empty-masters --cluster-threshold 1 127.0.0.1:7001
cluster-use-empty-masters 使用空master
threshold 起点
这样就均分了。每个4096个槽了。
数据就存到7007上了,因为槽在7007上。