原文地址,转载请注明出处: http://blog.csdn.net/qq_34021712/article/details/72150526 ©王赛超
1.添加节点
1.1:重新搭建集群
之前安装的集群有三个节点,每个节点有一备份节点。为了方便测试,将之前的每个redis节点下的dump.rdb 和nodes.conf删掉,重新搭建一个只有三个master的集群(7001,7002,7003)
重新启动三个master节点后重新执行脚本来搭建集群
./redis-trib.rb create --replicas 0 192.168.17.168:7001 192.168.17.168:7002 192.168.17.168:7003
1.2:启动7004节点,添加为主节点
1)添加为主节点
redis-trib.rb add-node 192.168.17.168:7004 192.168.17.168:7001
注释:
192.168.17.168:7004是新增的节点
192.168.17.168:7001是集群中任一旧节点
2)连接集群,执行cluster nodes 查看集群状态
3)显示已经添加到集群中,但是并没有哈希槽,给他分配哈希槽
./redis-trib.rb reshard 192.168.17.168:7001 #这个节点是集群中任一节点都可以,只要能连上就可以
过程:
How many slots do you want to move (from 1 to 16384)? 1000 #输入1000表示要移动1000个哈希槽
What is the receiving node ID? #把这1000个哈希槽给谁呢?输入7004节点对应的id
Source node #1: all #输入all表示从所有的哈希槽拥有者中抽取1000个给7004节点
也可以从固定的节点中拿100个 Source node #1: 339a50df26f4722f14faba2a8fe3cad508059e88 #输入某个节点的id表示 从该节点上拿1000个 给7004这个节点 然后再执行done命令
我们选择all 摁回车会展示分配槽的信息,再输入yes 回车就分配完成了。
1.3:启动7005节点,添加为从节点
之前的7004已经添加为master了就不动它了
1)添加为从节点
./redis-trib.rb add-node --slave --master-id 339a50df26f4722f14faba2a8fe3cad508059e88 192.168.17.168:7005 192.168.17.168:7001
注释:
--slave,表示添加的是从节点
--master-id 339a50df26f4722f14faba2a8fe3cad508059e88,主节点的node id,这个id是7001的节点id 表示将新节点添加为7001的slave
192.168.17.168:7005,新节点
192.168.17.168:7001集群任一个旧节点
添加slave 不需要分配哈希槽
2.改变从节点的master
1)比如我们要将刚才的将7005添加为7001的从节点,现在将他修改为7003的从节点
2)连接7005端口
./redis-cli -h 192.168.17.168 -p 7005 -c #连接要修改的从节点
3)移动到新的主节点
cluster replicate 3dd56b46572e1d1c1edece5e73ff4edf54485b09 #3dd56b46572e1d1c1edece5e73ff4edf54485b09为新的主节点node id
3.删除节点
3.1删除从节点
1)直接删除就可以了
./redis-trib.rb del-node 192.168.17.168:7005 081057b99f96b02ecad64ce6e4ab92c9d494a170
注释:
192.168.17.168:7005 要删除的从节点IP 端口号
081057b99f96b02ecad64ce6e4ab92c9d494a170 要删除从节点的 node id
3.2删除主节点
如果主节点有从节点,将从节点转移到其他主节点
如果主节点有slot,去掉分配的slot,然后在删除主节点
1)我们移除上面添加的7004主节点
2)取消分配的slot,下面是主要过程
./redis-trib.rb reshard 192.168.17.168:7004 #要移除的主节点ip 端口号
过程:
How many slots do you want to move (from 1 to 16384)? 1000 #移除多少个哈希槽,7004有1000个 全部移走
What is the receiving node ID? 339a50df26f4722f14faba2a8fe3cad508059e88 //接收7004节点slot的master 我们用7001来接收
Source node #1:d33aba61b519cbc0b5d7f33b825863d8f78a8925 //被删除master的node-id
Source node #2:done
Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot后,reshard
3)执行第二步之后,7004节点的哈希槽就没有了,然后删除该7004节点
./redis-trib.rb del-node 192.168.17.168:7004 d33aba61b519cbc0b5d7f33b825863d8f78a8925