您的位置:首页 > 数据库 > Redis

redis-cluster集群添加节点、删除节点

2017-05-15 15:01 766 查看
原文地址,转载请注明出处:
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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: