1、使用trib的check命令检查当前集群节点状态
$ redis-trib.rb check 192.169.0.175:700
2、新增两个节点。注意,新增节点最好为偶数个,保持节点为奇数,选择时不会出现平票现象
#拷贝四个配置文件,增加两个主节点和两个从节点
cd /usr/local/redis-4.0.14
cp redis.conf /usr/local/redis-4.0.14/redis_cluster/7006
cp redis.conf /usr/local/redis-4.0.14/redis_cluster/7007
cp redis.conf /usr/local/redis-4.0.14/redis_cluster/7008
cp redis.conf /usr/local/redis-4.0.14/redis_cluster/7009
#编辑每个节点的配置文件
cd redis_cluster/7006 ----对7007,7008,7009做相同的操作修改配置
vim redis.conf ----具体修改哪些内容参照二
#启动这四个节点
cd /usr/local/redis-4.0.14
redis-server redis_cluster/7006/redis.conf
redis-server redis_cluster/7007/redis.conf
redis-server redis_cluster/7008/redis.conf
redis-server redis_cluster/7009/redis.conf
#检查节点是否启
ps -ef | grep redis
netstat -tnlp | grep redis ---检要节点的启动情况
3、添加主节点
$ redis-trib.rb add-node 192.169.0.175:7006 192.169.0.175:7000 ----7000这个节点可以是任意的原集群主节点
#注释:
192.168.10.219:6378是新增的节点
192.168.10.219:6379集群任一个旧节点
#为新添加的节点分配slot,redis的solt是固定16384个,新添加的节点是没有slot的,只能从其他节点获取slot进行分配
$ redis-trib.rb reshard 192.169.0.175:7006
How many slots do you want to move (from 1 to 16384)? 2500 ----新节点接收的节点数
What is the receiving node ID? 364ae8322ab2627e25b05d45b702448c74afad10 ----接收的节点,新节点的redis-ID
Please enter all the source node IDs.(Type 'all' to use all the nodes as source nodes for the hash slots) all
Resharding plan:
Moving slot 5461 from 273107e5ac994d675749be0979556e761274bb93
Moving slot 5469 from 273107e5ac994d675749be0979556e761274bb93
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 5461 from 192.169.0.175:7000 to 192.169.0.175:7006...
#检查新添加节点分配置的slot
$ redis-cli -h 192.169.0.175 -c -p 7006
$ cluster nodes
364ae8322ab2627e25b05d45b702448c74afad10 192.169.0.175:7006 myself,master - 0 0 7 connected 0-98 5461-5561 10923-11021
#以上可以看出7006节点分配置到slot为0-98,5461-5561,10923-11021
4、添加从节点
4.1、直接通过追加从节点的方式添加
$ redis-cli -c -p 7007 cluster replicate 0b00721a509444db793d28448d8f02168b94bd38 ----把7007这个节点变为7006的slave节点
4.2、通过直接添加从节点方式添加
$ redis-trib.rb add-node --slave --master-id 2b7bb3be16460f2e0848c69cef3acc68f655a041 192.169.0.175:7008 192.169.0.175:7000
#注释:
--slave,表示添加的是从节点
--master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2,主节点的node id,在这里是前面新添加的6378的node id
192.168.10.220:6385,新节点
192.168.10.219:6379集群任一个旧节点
这种方式可以随意添加从节点,一个主节点可以有多个从节点
5、另一个节点的添加重复3、4步骤
$ redis-trib.rb reshard 192.169.0.175:7008
6、删除从节点
$ redis-trib.rb del-node 192.169.0.175:7002 '9c240333476469e8e2c8e80b089c48f389827265'
7、删除主节点
#删除主节点要把从节点挂到其他节点,并去掉分配的所有slot
$ redis-trib.rb reshard 192.169.0.175:7000 ---重新分配置这个主节点的slot
How many slots do you want to move (from 1 to 16384)? 5461 -----被删除master的所有slot数量,这个数量可通过cluster nodes查出
What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 ----接收7000节点slot的master
Please enter all the source node IDs.
Source node #1:364ae8322ab2627e25b05d45b702448c74afad10 -----被删除master的node-id
Source node #2:done
$ redis-trib.rb del-node 192.169.0.175:7000 '03ccad2ba5dd1e062464bc7590400441fafb63f2' -----最后才能删除这个空掉的节点