一、扩容
方法一:利用ruby工具
1、创建新的节点
mkdir -p /opt/redis_{6390,6391}/{conf,logs,pid}
mkdir -p /data/redis_{6390,6391}
cd /opt/
cp redis_6380/conf/redis_6380.conf redis_6390/conf/redis_6390.conf
cp redis_6380/conf/redis_6380.conf redis_6391/conf/redis_6391.conf
sed -i 's#6380#6390#g' redis_6390/conf/redis_6390.conf
sed -i 's#6380#6391#g' redis_6391/conf/redis_6391.conf
redis-server /opt/redis_6390/conf/redis_6390.conf
redis-server /opt/redis_6391/conf/redis_6391.conf
ps -ef|grep redis
2、将新的主节点加入集群
redis-trib.rb add-node 10.0.0.51:6390 10.0.0.51:6380
# 将新的节点添加到6380所在集群
3、转移slot(重新分片)
redis-trib.rb reshard 10.0.0.51:6380
4、将从节点加入集群
redis-trib.rb add-node --slave --master-id 881a713dcd1569a2426a69038f76e9718884e227 10.0.0.516391 10.0.0.51:6380
# 添加从节点 主节点id 新从节点信息 所加入的集群信息
方法二:利用自带命令
1、创建新的节点
mkdir -p /opt/redis_{6390,6391}/{conf,logs,pid}
mkdir -p /data/redis_{6390,6391}
cd /opt/
cp redis_6380/conf/redis_6380.conf redis_6390/conf/redis_6390.conf
cp redis_6380/conf/redis_6380.conf redis_6391/conf/redis_6391.conf
sed -i 's#6380#6390#g' redis_6390/conf/redis_6390.conf
sed -i 's#6380#6391#g' redis_6391/conf/redis_6391.conf
redis-server /opt/redis_6390/conf/redis_6390.conf
redis-server /opt/redis_6391/conf/redis_6391.conf
ps -ef|grep redis
2、将新添加的节点加入到集群
redis-cli -c -h 10.0.0.51 -p 6380 cluster meet 10.0.0.51 6390
redis-cli -c -h 10.0.0.51 -p 6380 cluster meet 10.0.0.51 6391
redis-cli -c -h 10.0.0.51 -p 6380 cluster nodes
3、扩容(重新分配槽位)
redis-cli --cluster reshard 10.0.0.51:6380
4、手动添加复制关系
二、缩容
缩容思路
将要下线节点的槽重新分配至其他节点
方法一:利用ruby工具
redis-trib.rb reshard 10.0.0.51:6380
第一次还原
第二次还原
第三次还原
删除节点
redis-trib.rb del-node 10.0.0.51:6390 881a713dcd1569a2426a69038f76e9718884e227
redis-trib.rb del-node 10.0.0.51:6391 efad54782609d6bcae5a7635399c91f08cb75a0a
方法二:利用自带命令
redis-cli --cluster reshard 10.0.0.51:6380
重复上述操作,知道6390所有的槽都被分配完毕