13.6 运维功能
CacheCloud作为Redis的运维工具,包含了Redis日常运维的常用功能,
本节将对如下功能进行介绍:
1)应用运维:Redis节点的上下线、手动故障转移、配置管理、扩容
等。
2)接入已存在的Redis:将已经存在的Redis接入到CacheCloud。
3)Redis配置管理:对Redis配置进行模板化管理。
4)迁移工具:实现Redis Standalone、Redis Sentinel、Redis Cluster、
AOF、RDB之间数据迁移。
5)监控报警:机器、应用、实例各个维度的监控报警。
6)系统配置:CacheCloud系统的全局配置。

13.6.1 应用运维
CacheCloud的应用运维主要包含以下几个方面:
·应用上下线。
·Redis Sentinel运维。
·Redis Cluster运维。
·配置管理。
·垂直扩容和水平扩容。
1.应用上下线
我们已经通过CacheCloud自动化部署了应用(上线),那么当需要将这
个应用下线时,如何操作以及要注意哪些呢?管理员进入CacheCloud后台,
进入全局统计选项卡,可以看到应用列表,其中就包含了应用下线的按钮,
如图13-32所示。

应用下线会做如下操作:
·将应用所有的Redis节点关掉。
·CacheCloud停止应用下所有节点统计任务。
·将应用的状态变为下线,客户端无法集群使用已下线应用。
·将所有Redis节点的状态变为下线,这样客户端获取的Redis节点列表代
表为空。
运维提示
1)应用下线属于比较重要的操作,需要应用方和CacheCloud管理员确
认后方可进行,下线应用无法再次上线。
2)超级管理员组的用户才有权限下线应用,超级管理员组的配置方法
请参考13.6.6节。
2.应用运维
单击应用运维按钮即可进入运维界面,图13-33为Redis Cluster的运维界
面。 

主要包含如下功能:
·实例基本信息:运行状态、角色、内存使用状态、对象数、连接数、
命中率、日志查看等。
·下线实例:对该节点执行shutdown操作,并关闭该节点相关监控任
务。
·上线实例:针对已下线的节点,重新启动该节点并重新加入监控。
·添加从节点:可以为主节点添加一个从节点,只需要填写节点IP即
可。
·FailOver:手动完成Redis Cluster主从节点的故障转移,其中failover操
作支持三种方法:failover、failover force、failover takeover。 

3.配置管理
用户提交配置修改的工单后,管理员在后台流程审批中完成配置确认和
审批,如图13-34所示。
4.应用扩容
用户提交容量伸缩的工单后,管理员可以在后台的流程审批选项卡看到
容量伸缩的相关条目,单击审批处理,即可进入扩容页面,如图13-35所
示。

默认会进入垂直扩容界面,需要填写的是每个实例的maxmemory(以
MB为单位),点击“保存”即可。
运维提示
·垂直扩容:修改每个Redis实例的maxmemory。
·水平扩容:添加新的节点,迁移slots等,可以参考10.4节。
如果本次扩容需要水平扩容,点击水平扩容按钮即可,需要两步来完
成:
1)填写一对主从节点(主从节点不能是同一个IP),如图13-36所示。
2)填写源节点id和目标节点id,以及要迁移的slot,单击migrate按钮,
即可开始一个迁移任务。列表下方会显示实时的迁移进度。 

 有关水平扩容有两点需要注意:
·不要过度依赖水平扩容,在开启应用分配资源时,提前做好规划更重
要,因为迁移无论对客户端还是服务端都有一定的成本。
·迁移速度上,migrate<set<AOF<RDB,所以在需要做数据迁移时,要弄
清真正需要什么粒度的迁移。 <li="">

13.6.2 接入已存在的Redis节点
到目前为止,Redis都是通过CacheCloud开启的,那么已经存在的Redis
节点如何接入到CacheCloud中呢?操作步骤如下:
1)管理员用户命令下拉菜单中导入应用链接。
2)填写导入应用表单,如图13-38所示,最重要的就是实例详情。与部
署应用不同的是,由于当前导入的节点已经存在,所以除了ip和
maxmemory,还需要填写端口号。

Redis数据节点和Sentinel节点格式如下:
·Redis数据节点:ip:port:maxmemory(单位为MB)。
·Sentinel节点:ip:port:masterName。
具体格式参考实例列表下面的说明即可,这里就不占用篇幅了。但是有
几点需要注意,如下情况会造成检查格式失败:
·机器不受CacheCloud管理。
·Redis节点不存在。
·Redis节点已经在CacheCloud中(可以在机器管理中查询,或者直接查
询instance_info表)。
·Sentinel节点masterName为空或者与真实masterName不符。
·Redis节点节点包含密码,此功能暂不支持密码。
·Redis节点没有配置maxmemory,会展示不出来应用内存统计。
验证格式并点击开始导入,就可以将填写的Redis节点导入到
CacheCloud中,包括应用信息、实例信息、应用和实例的各种统计信息的收
集就会生效,报表就可以展示出来,并且相关报警也会自动启动。那么将已
经存在的Redis接入CacheCloud到底做了什么呢?CacheCloud不会对Redis节
点造成任何性能上影响,只做了如下三件事:
1)验证输入内容。
2)保存应用信息、实例信息、应用与实例关系信息。
3)开启统计功能(每分钟执行一次info命令)。 

13.6.3 Redis配置模板
该功能可以对每次开启的Redis节点添加配置模板,如图13-39为后台
Redis配置模板的管理页面。

可以看到Redis配置模板管理提供了对配置模板的增删改查功能,按照
Redis普通节点、Sentinel节点、Cluster节点分别展示。当管理员设置好认为
最好的配置时,可以点击“配置预览”,即可看到配置模板预览,如下所示。
但需要注意该功能是配置模板,不是修改线上配置。

Redis 普通节点配置,所用参数 port=6379,maxmemory=2048  配置模板预览 :
daemonize no
tcp-backlog 511
timeout 300
tcp-keepalive 60
loglevel notice
databases 16 … .

例如读者当前使用的是Redis3.2版本,那么就可以添加诸如protected-
mode、supervised、list-max-ziplist-size、list-compress-depth等3.2版本的新参
数。 

13.6.4 迁移工具
1.功能说明
数据迁移工具可以完成如下功能:
·支持在RDB文件、AOF文件、Redis Standalone、Redis Sentinel、Redis
Cluster,Cache-Cloud应用之间进行数据迁移,如图13-40所示支持任意两种
类型的数据源和目标进行数据迁移。
·数据迁移能够保证实时性,如果合理使用可以基本保证一致性。
·以可视化方式实现迁移流程控制。

图13-40 CacheCloud迁移工具

 2.CacheCloud数据迁移工具是如何实现的?
CacheCloud数据迁移工具底层使用的是唯品会公司开源的redis-migrate-
tool [1] 。
redis-migrate-tool是用C语言开发的Redis数据迁移工具,可以做到在
Standalone、Sentinel、Cluster、RDB、AOF之间迁移数据,服务于唯品会公
司数千个Redis节点,无论从数据迁移的准确性、稳定性、高效性等方面都
能满足生产环境的需求,所以CacheCloud选择它作为数据迁移的基础组件,
CacheCloud通过可视化的方式完成节点数据迁移、进度查询、日志查询、配
置查询、历史记录等功能。
redis-migrate-tool是基于复制的原理,将迁移工具伪装成从节点,所以
是实时迁移的,这点比起Redis自带的redis-trib.rb的import命令功能要强大很
多,如图13-41所示。

图13-41 CacheCloud迁移基本原理

 3.部署和使用
1)准备迁移工具所有的机器。为CacheCloud添加一台机器专门用于数
据迁移。只不过在CacheCloud添加机器时候,机器类型选取“Redis迁移工具
机器”。
运维提示
建议选择一台单独的机器作为迁移工具机器。
2)安装部署redis-migrate-tool:

#1. 进入 cachecloud 目录
cd /opt/cachecloud/
#2. 下载 redis-migrate-tool ,在写本书时还没有 release 版本,如果有了请自行替换
wget https:// github.com/vipshop/redis-migrate-tool/archive/master.zip -O master.zip
#3.  重命名解压等
unzip master.zip
mv redis-migrate-tool-master redis-migrate-tool
cd redis-migrate-tool
#4.  创建数据目录用来存储 redis-migrate-tool 配置和数据
mkdir -p data
#5.  编译
$ autoreconf -fvi
$ ./configure
$ make
#6.  验证安装成功
$ src/redis-migrate-tool -h
#7.  修改目录权限为 ssh 用户
chown -R {cachecloud-ssh-username}.{cachecloud-ssh-username} /opt/cachecloud/redis-
migrate-tool

4.添加迁移任务
选择迁移数据工具后,再点击添加新的迁移任务,即可看到如图13-42
的迁移工具界面。

 表单中左右两侧分别代表数据源节点和目标节点。两侧分别可以选择
Redis Cluster、Redis Sentinel、Redis Standalone、AOF、RDB,具体的节点列
表可以是ip:port列表也可以是CacheCloud的appId,只要按照列表下面的说
明格式填写即可。
格式验证后即可开启了一个迁移的任务。如图13-43所示,可以可视化
地观察迁移日志、关闭迁移任务、迁移状态查询,详情可以参考CacheCloud
官方博客和redis-migrate-tool的GitHub文档。

13.6.5 监控报警
如图13-44所示,CacheCloud有8个功能涉及短信和邮件接口,其中左侧
四个前面的章节已经进行了介绍,本节将介绍CacheCloud监控报警的相关业
务。 

1.短信和邮件接口
在正式介绍报警业务之前,有必要介绍一下后台的系统配置管理中两个
接口:邮件报警接口和短信报警接口。这两个接口为HTTP接口,这样接口
的实现就不会限于某种语言,它们是邮件和短信通知和报警的基础。
具体参数如表13-3所示。

表13-3 邮件和短信接口参数

 

 2.监控报警
监控报警的内容有:
1)应用日报。每天10点,所有CacheCloud用户会收到应用前一天的使
用状态,如图13-45所示,其中包含客户端相关统计和服务端相关统计,该
功能便于用户及时了解自身应用的使用状态。

图13-45 CacheCloud日报

 2)异常统计报警(邮件)。每天10点,所有CacheCloud管理员会收到
系统前一天的异常,如下所示:

CacheCloud 异常统计, 日期 :2016-09-16; 服务器 :10.16.14.181; 总数 :67:
java.util.concurrent.RejectedExecutionException=42
org.springframework.dao.DeadlockLoserDataAccessException=22
com.sohu.cache.exception.SSHException=2
org.springframework.dao.DataIntegrityViolationException=1

这样管理员可以了解CacheCloud服务端的一些运行状态,如果发现异常
较多,可以尽快处理。
3)Redis实例心跳(邮件和短信)。CacheCloud会每5分钟对所有Redis
节点做心跳检测(3次ping操作),如果检测失败(3次ping都失败),管理
员会收到Redis节点心跳停止的消息,例如下面就是appId=10001的某个节点
可能宕掉。
CacheCloud 系统 - 实例 (10.10.xx.1:6381)- 由运行中变为心跳停止 , appId:10001-ranking-online
如果下一次检测到Redis已经恢复(3次ping命令,有一次ping通),管
理员同样会收到Redis节点已经运行的消息,如下所示:
CacheCloud 系统 - 实例 (10.10.xx.1:6381)- 由心跳停止变为运行中 , appId:10001-ranking-online
需要注意的是,心跳停止和下线是两个概念,下线是管理员操作的,心
跳停止是Cachecloud判断的,Redis节点是否真的宕掉需要管理员确认。
4)应用内存和客户端连接数(邮件和短信)。CacheCloud会每隔20分
钟,检测应用以及应用下每个Redis节点的内存和客户端连接数是否超过预
设阀值(第一次申请应用和应用详情界面可以设置)。
例如应用总体内存超过阀值会收到如下消息:
应用 (10001)- 内存使用率报警 - 预设百分之 90- 现已达到百分之 92.88- 请及时关注
例如应用单个Redis节点超过内存预设阀值会收到如下消息:
分片 (10.10.xx.1:6380, 应用 (10001)) 内存使用率报警 - 预设百分之 90- 现已达到百分之 92.28- 应用的内存使用率百分之 88.99-
同样客户端连接数,也是如此同样会收到如下消息:
分片 (10.10.xx.1:6380, 应用 (10001)) 客户端连接数报警 - 预设 2500- 现已达到 2525- 请及时关注
5)机器性能报警(邮件和短信)。CacheCloud会每小时对机器的内
存、负载、CPU进行监控,一旦超过预设阀值,将会收到如下信息:
ip:10.10.xx.1 , load:10.79
机器报警阀值管理员只需要在后台的系统配置管理中,按照图13-46设
置即可。

注意
CacheCloud已经计划在后期的版本中加入机器信息详细统计以及相关报
警功能,保证功能完整性。

13.6.6 系统配置管理
本节对CacheCloud后台的系统配置管理进行汇总说明,如表13-4所示。

 

表13-4 CacheCloud系统配置管理说明表 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐