16boke - 一路博客

最详细的Codis集群扩容方法

一、背景

当机器增加内存之后需要对紧张的codis集群容量进行扩容,针对codis集群的扩容一般采用增加新的redis实例,再将新的实例增加到新的group中,然后将group通过codis进行管理起来。

二、步骤

1、新增redis实例

原来是6381、6382、6383、6384这四个实例,现在增加6385和6386两个实例的配置文件,并且设置6385为master,6386为slave。配置如下图:


其中6386配置了slaveof:


2、启动新建的两个Redis

采用脚本来启动(startRedisByPort.sh):

#!/bin/sh

nohup ../bin/codis-server ./redis_conf/$1.conf &> /data/redis/logs/redis_$1.log &

到此为止两个实例已经启动完成。


3、新建group3

进入dashboard的管理页面,点击“New Server Group”


选择3,


再添加redis实例


输入:


注意:codis默认第一个添加的是master。


添加成功如图:



4、开始数据迁移


点击“Auto Rebalance”之后会自动开始迁移,管理页面会显示Migrate Task Info信息:



5、迁移结束


可以看到将之前每个实例中的key平均分配到新加之后的三个组中。


6、迁移时间

测试环境总key数为51141个,迁移总时间为22分钟左右,截取部分日志内容:

2016/02/25 11:38:52 rebalancer.go:113: [INFO] start rebalance

2016/02/25 11:38:54 rebalancer.go:135: [INFO] rebalance tasks submit finish

2016/02/25 11:38:54 migrate_task.go:135: [INFO] migration start: {SlotId:208 NewGroupId:3 Delay:0 CreateAt:1456371532 Percent:0 Status:pending Id:0000000000}

...

...

...

2016/02/25 12:00:15 migrate_task.go:145: [INFO] migration finished: {SlotId:941 NewGroupId:3 Delay:0 CreateAt:1456371534 Percent:0 Status:finished Id:0000000340}