Redis集群动态增加和删除节点
阅读原文时间:2023年07月08日阅读:1

1、首先将需要添加的节点启动

这里启动redis6383.conf和redis6393.conf两个节点

查看原有节点:          

3个主节点所对应的哈希槽(hash slot)

myself表示当前连接的节点

2、执行以下命令,将新节点添加到集群中

../redis-trib.rb add-node 192.168.230.129:6383 192.168.230.129:6380

备注:192.168.42.111:6383 是新的主节点

192.168.42.111:6380 是原存在的任一主节点

查看刚才新增的节点   

3、增加一个从节点,执行以下命令

../redis-trib.rb add-node --slave --master-id 863203beac4e9e1fd85b218fc388f8b8ac9d2218 192.168.230.129:6393 192.168.230.129:6380

注释:

--slave 表示添加的是从节点

--master-id 863203beac4e9e1fd85b218fc388f8b8ac9d2218 主节点的node id,在这里是前面新添加的6383的node id

192.168.10.220:6393 新节点

192.168.10.219:6380 集群任一个旧节点  

查看节点情况,可看见从节点已添加

但是,其主节点也就是6383的哈希槽为空,需要重新分配槽,执行命令:

../redis-trib.rb reshard 192.168.230.129:6380

注释: 192.168.230.129:6380 集群任一个旧节点

然后再输入yes,redis集群就开始分配哈希槽了…..

至此,一个新的主节点就添加完成了,执行命令查看现在的集群中节点的状态

可看到已分配

1、删除从节点

删除从节点,直接使用以下命令即可

../redis-trib.rb del-node 192.168.230.129:6393 05945dcae79aca1425f68ca95f2aaf4d44b2167a

注释:192.168.230.129:6393  节点地址

05945dcae79aca1425f68ca95f2aaf4d44b2167a   节点node_id

2、删除主节点

因为主节点含有槽数,所以,首先要把节点中的哈希槽转移到其他节点中,执行命令

../redis-trib.rb reshard 192.168.230.129:6380

注:192.168.230.129:6380  集群中任一主节点     

然后再输入yes,等待转移完成……

查看节点情况

最后,使用以下命令,将节点删除

../redis-trib.rb del-node 192.168.230.129:6383 863203beac4e9e1fd85b218fc388f8b8ac9d2218

1.首先将新节点添加到集群中,使用命令

../redis-trib.rb add-node 192.168.230.129:6383 192.168.230.129:6380

2.执行以下命令,将添加至某个主节点

../redis-cli -c -h 192.168.230.129 -p 6383 cluster replicate 52f6a45a1e968ab150a50127f29e9f0b3efbae9c

注:后面的node_id为要添加主节点的ID

3.使用下面命令来确认一下192.168.230.129:6383是否已经成为192.168.230.129:6380的从节点

../redis-cli -c -h 192.168.230.129 -p 6380 cluster nodes | grep slave | grep 52f6a45a1e968ab150a50127f29e9f0b3efbae9c

可看到6380的两个从节点:

查看节点之间的关系