redis现在集群环境:
192.168.2.41 7000 7001
192.168.2.42 7002 7003
192.168.2.43 7004 7005
经过变更之后的集群环境:
192.168.2.41 7000 7001
192.168.2.42 7000 7001
192.168.2.43 7000 7001
且各台的7000为master,7001是各台机器7000的slave
1、删除slave节点
查看集群信息
# redis-trib.rb check 192.168.2.41:7000
slave节点可以直接删除
命令
redis-trib.rb del-node IP:PORT ID
# redis-trib.rb del-node 192.168.2.41:7001 a123f3ec62c8367f396a1fef8ae9c6c0ac413d96
# redis-trib.rb del-node 192.168.2.42:7003 17d25af071d0f5508e2d3bfae9d6b4322ad2f5f5
# redis-trib.rb del-node 192.168.2.43:7005@17005 eb2b9276976ea162473f8ce00b2c8c35785721c9
2、删除master节点
删除master节点需要首先把其上slots进行转移
这里的192.168.2.41的master节点不进行删除,删除集群中的其他两个master
首先要把192.168.2.42:7002和192.168.2.43:7004的slots转移到192.168.2.41:7000上
查看集群信息,可以查看到节点有多少slots,有多少就需要转移多少
命令:
redis-trib.rb reshard IP:PORT
# redis-trib.rb reshard 192.168.2.42:7002
How many slots do you want to move (from 1 to 16384)? 5461
What is the receiving node ID? 9226e25993d0e6cc75600bb6ad21f01090746fd7
Source node #1:4bd00c217e74513f202982458f5fb699771dee55
Source node #2:done
说明:
第一个为要转移的slots的个数,按实际情况填写
第二个为要转移到的节点的节点id
第三个为要转移slots的节点的节点id
# redis-trib.rb reshard 192.168.2.43:7004
删除两个master节点
# redis-trib.rb del-node 192.168.2.42:7002 4bd00c217e74513f202982458f5fb699771dee55
# redis-trib.rb del-node 192.168.2.43:7004 1b13f21a02938c739f29dcd803886379054bf793
3、修改配置文件
修改删除的四个节点的配置文件
分别是
192.168.2.42:7002
192.168.2.42:7003
192.168.2.43:7004
192.168.2.43:7005
以192.168.2.42:7002为例
# cd /usr/local/redis-4.0.11/cluster
# mv 7002 7000
# mv 7003 7001
# sed -i 's/7002/7000/g' 7000/redis.conf
# sed -i 's/7003/7001/g' 7001/redis.conf
其他三个节点以此类推做修改
4、启动服务
192.168.2.41
# redis-server /usr/local/redis-4.0.11/cluster/7001/redis.conf
192.168.2.42
# redis-server /usr/local/redis-4.0.11/cluster/7000/redis.conf
# redis-server /usr/local/redis-4.0.11/cluster/7001/redis.conf
192.168.2.43
# redis-server /usr/local/redis-4.0.11/cluster/7000/redis.conf
# redis-server /usr/local/redis-4.0.11/cluster/7001/redis.conf
5、增加master节点
命令:
redis-trib.rb add-node ADD-NODEIP:PORT ADD-TO-NODEIP:PORT
# redis-trib.rb add-node 192.168.2.42:7000 192.168.2.41:7000
# redis-trib.rb add-node 192.168.2.43:7000 192.168.2.41:7000
6、增加slave节点
命令:
redis-trib.rb add-node --slave SLAVENODEIP:PORT MASTERNODEIP:PORT
# redis-trib.rb add-node --slave 192.168.2.41:7001 192.168.2.41:7000
# redis-trib.rb add-node --slave 192.168.2.42:7001 192.168.2.42:7000
# redis-trib.rb add-node --slave 192.168.2.43:7001 192.168.2.43:7000
7、转移slots到其他两个新增的master
查看集群信息
# redis-trib.rb check 192.168.2.41:7000
>>> Performing Cluster Check (using node 192.168.2.41:7000)
M: 9226e25993d0e6cc75600bb6ad21f01090746fd7 192.168.2.41:7000
slots:10922-16383 (5462 slots) master
1 additional replica(s)
S: b79bf8001cff43a5df16b285ecbc9caccf8b12ef 192.168.2.41:7001
slots: (0 slots) slave
replicates 9226e25993d0e6cc75600bb6ad21f01090746fd7
M: 174b6d42aa784e69a3104f6f06574919cb69d7d8 192.168.2.42:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: a06342821949f7d666fe5d7b5b64d4573c33c8ea 192.168.2.42:7001
slots: (0 slots) slave
replicates 174b6d42aa784e69a3104f6f06574919cb69d7d8
M: 5fb1b9ca8da83af089fa8f022abf13d2041d6d60 192.168.2.43:7000
slots:5461-10921 (5461 slots) master
1 additional replica(s)
S: b5ef76db06606ffb36cd3ee22570dfd7e14c5a33 192.168.2.43:7001
slots: (0 slots) slave
replicates 5fb1b9ca8da83af089fa8f022abf13d2041d6d60
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.