文章目录
- 水平拓展节点(增加节点)
- 增加主节点
- 1、新建节点文件夹,并复制实例信息
- 2、删除以前节点的数据信息,不然会导致后面节点添加失败
- 3、修改配置文件
- 4、启动两个redis 实例
- 添加主节点
- 移除节点(先从后主)
- 移除从节点:
- 移除主节点
- 迁移插槽数据
redis原有集群图
水平拓展节点(增加节点)
我们现在需要在以上集群的基础上在增加两个节点
服务器 10.0.8.149 端口 9007
服务器 10.0.8.149 端口 9008
并且打算9007作为主节点 9008作为从节点。
增加主节点
1、新建节点文件夹,并复制实例信息
cd /usr/software/redis-cluster
//新建两个节点的文件夹
mkdir redis9007 redis9008
//将之前节点下文件复制到新的节点下
cp redis9001/* redis9007
cp redis9001/* redis9008
2、删除以前节点的数据信息,不然会导致后面节点添加失败
本示例,redis节点数据存在在对应redis实例的data文件下
cd /usr/software/redis-cluster/redis9007/data
rm -rf *
cd /usr/software/redis-cluster/redis9008/data
rm -rf *
3、修改配置文件
配置基本与之前节点相同,只是端口号更改,我们采用替换方式
vim /usr/software/redis-cluster/redis9007/redis.conf
//替换命令
%s/9001/9007/g
vim /usr/software/redis-cluster/redis9008/redis.conf
//替换命令
%s/9001/9008/g
4、启动两个redis 实例
cd /usr/software/redis-cluster/redis9007/
src/redis-server redis.conf
cd /usr/software/redis-cluster/redis9008/
src/redis-server redis.conf
出现上图表示两个节点启动成功
添加主节点
(1)增加主节点
redis-cli --cluster add-node 10.0.8.149:9007 10.0.8.149:9001 -a redis123456
上面两个地址10.0.8.149:9007标识新增主节点,10.0.8.149:9001原有的主节点
出现如上图标识节点添加成功
你以为到此就成功了吗,并不然,我们知道redis集群中共有16384个插槽,在我们之前搭建集群的时候已将这16384个插槽都已经分配到了之前的所有主节点上。也就说,现在新的主节点没有插槽,也就没有任何作用,接下来我们开始为该主节点添加插槽。
(2)分配插槽
redis-cli --cluster reshard 10.0.8.149:9007 -a redis123456
(3)指定该节点分配多少个插槽数,我们现在又4个主节点,所以平均下大概分配4000个。
(4)输入指定要分配哈希槽的节点ID,也就是说我们当前那个节点要分配插槽,此处是9007节点要分配插槽,也就是ID
ba15565f65b55a8073e3b99f7739ba04b76665ce;
(5)选择分配插槽的来源,输入all ,然后选择yes,即完成插槽分配
分配前
分配后
分配前后插槽对比
可以明显的看出9007节点的插槽数都是平均从其他三个节点抽取过来的。
(6)分配哈希槽有两种方式
(1)将所有节点用作哈希槽的源节点。:all
(2)在指定的节点拿出指定数量的哈希槽分配到目标节点:done
上述使用的是第一种方式分配哈希槽:
现在我们讲一下用第二种方式怎么分配:
1、现在我们对7002端口的另一个master进行分配哈希槽
./src/redis-cli --cluster reshard ip:port -a 密码
2、这里输入给目录节点选择分配1000个哈希槽,并输入要给哪个节点分配哈希槽,就输入哪个节点的ID
3、先输入源节点ID(哈希从哪里来的?),然后再输入done
正在从源节点迁移哈希槽
4、是否继续执行建议的reshard计划
Do you want to proceed with the proposed reshard plan (yes/no)?
输入yes
以上主节点添加,插槽分配就完成了主节点的添加,下面开始从节点的操作
添加从节点:
执行如下命令即可
redis-cli --cluster add-node --cluster-slave --cluster-master-id ba15565f65b55a8073e3b99f7739ba04b76665ce 10.0.8.149:9008 10.0.8.150:9004 -a redis123456
cluster-master-id是主节点9007redis实例的ID
10.0.8.149:9008 是新加的从节点
10.0.8.150:9004 作为从节点的主节点
出现入下图所示,表示从节点添加成功
到此redis集群增加主从节点操作全部完成
移除节点(先从后主)
我们移除后面新增的节点
移除从节点:
redis-cli --cluster del-node 10.0.8.149:9008 31f576e04b8b9ae8f10eff644bb5722f20937317 -a redis123456
10.0.8.149:9008 从节点地址
31f576e04b8b9ae8f10eff644bb5722f20937317 从节点ID
出现上图表示从节点移除成功,我们可以通过查看集群节点,验证节点是否移除成功
移除主节点
删除主节点,稍微比删除主节点麻烦些,应为主节点中有插槽数据,在删除主节点前需要 将插槽分配其他节点,否则会出现数据丢失
迁移插槽数据
redis-cli --cluster reshard 10.0.8.149:9007 -a redis123456
10.0.8.149:9007 删除节点信息
9007总共有4000个插槽,我们需要将其平均的分配到其他3台主节点上
首先将9007上的1333个插槽迁移至9001节点上
How many slots do you want to move (from 1 to 16384)? 1333
Do you want to proceed with the proposed reshard plan (yes/no)? yes
执行成功后,查看节点插槽数
迁移成功后插槽数
依次类推将9007剩下的节点分别迁移到9002,9006
9007到9002节点
同理完成插槽迁移后的节点详情
出现上图上面9007节点插槽数据已经迁移完毕,可以移除节点。
redis-cli --cluster del-node 10.0.8.149:9007 ba15565f65b55a8073e3b99f7739ba04b76665ce -a redis123456
10.0.8.149:9007 需要移除节点
ba15565f65b55a8073e3b99f7739ba04b76665ce 节点ID
查看redis集群节点验证节点是否移除
到此,完成了集群的增加和移除节点的全部操作