当前位置:   article > 正文

Redis监控运维平台-CacheCloud_redis运维平台

redis运维平台

一、CacheCloud

1、出现问题

当Redis达到一定规模,容易出现以下问题:

  1. 运维部署成本高,手动部署,容易出现错误。
  2. 实例碎片化,机器利用率较低,可能出现大量闲置资源。
  3. 监控,统计,管理不完善,配置分散,不便于发现线上问题。

2、CacheCloud

  • 如果通过平台化的工具统一监控和管理Redis,将极大的提升开发和运维人员的工作效率。CacheCloud,就是这样的一款开源的Redis管理、可视化运维平台。
  • CacheCloud是搜狐平台的一款Redis运维与管理工具,在搜狐管理上千个Redis实例,数百台机器,数百个应用,于2016年开源在GitHub上,目前Star数目为4.9k。

3、CacheCloud主要功能

  • 监控统计:提供了机器、应用、实例下各个维度数据的监控和统计界面,提高机器利用率。
  • 一键开启:Redis Standalone、Redis Sentinel、Redis Cluster三种类型的应用,无需手动配置初始化。
  • Failover:支持哨兵,集群的高可用模式。
  • 伸缩:提供完善的垂直和水平在线伸缩功能。
  • 完善运维:提供自动运维和简化运维操作功能,避免纯手工运维出错。
  • 方便的客户端:方便快捷的客户端接入。
  • 元数据管理:提供机器、应用、实例、用户信息管理。
  • 流程化:提供申请,运维,伸缩,修改等完善的处理流程。
  • 一键导入:一键导入已经存在的Redis
  • 迁移数据:Redis Standalone、Redis Sentinel、Redis Cluster、AOF、RDB。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PI4UykIr-1583896830399)(/Users/jiangxiuli/File/Typora/Redis监控运维平台—CacheCloud.assets/image-20200217144802406.png)]

4、本文思路

  1. 快速部署:快速搭建CacheCloud项目。

  2. 机器部署:实现CacheCloud对机器管理部署,修改SSH交互模式的话,需要修改源码。

  3. 接入应用:使用CacheCloud部署Redis Cluster,并完成客户端快速接入。

  4. 用户功能:站在开发人员角度介绍CacheCloud相关功能。

  5. 运维功能:站在运维人员角度介绍CacheCloud相关功能。

  6. 客户端上报:CacheCloud获取上报客户端统计信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kaiuUDLP-1583896830401)(/Users/jiangxiuli/File/Typora/Redis监控运维平台—CacheCloud.assets/image-20200217165600455.png)]

二、部署与安装

1、部署CacheCloud

CacheCloud服务端环境要求:

  • JDK 7+
  • Maven 3
  • MySQL 5.5
  • Redis 3.0+
  1. MySQL:脚本在script/cachecloud.sql目录下。

  2. CacheCloud连接MySQL,配置文件:

    cachecloud-master/cachecloud-open-web/src/main/swap/online.properties
    
    • 1
  3. 编译并启动CacheCloud

    将程序进行打包:

    mvn clean compile install -Ponline
    
    • 1

    运行程序,deploy.sh会将编译后的工程包,配置文件,启动脚本拷贝到/opt/cachecloud-web目录下。

    sh script/deploy.sh
    
    • 1

    执行如下命令,启动CacheCloud:

    sh /opt/cachecloud-web/start.sh
    
    • 1

    查看日志:

    tail -f /opt/cachecloud-web/logs/cachecloud-web.log
    
    • 1

    http://ip:port/manage/login启动后,默认的用户名,密码是admin/admin。

2、机器部署

script/cachecloud-init.sh脚本,是用来初始化服务器的CacheCloud环境的,主要工作如下三个:

  • 创建SSH用户,为了能让CacheCloud与机器使用SSH协议进行交互。
  • 在指定目录下创建CacheCloud相关目录,data、conf、logs、redis,这样才可以实现对Redis的日志、持久化数据、配置文件的集中管理。
  • 机器还要在指定目录下安装release版本的Redis。

我们想要进行机器部署,只需要在目标机器上使用Root用户,执行如下脚本:

sh cachecloud-init.sh ssh_name
  • 1

过程中,会要求输入ssh用户的密码。我们通过如下命令,验证Redis是否安装成功了。

redis-cli -v
  • 1

3、应用接入

  • Redis Standalone、Redis Sentinel、Redis Cluster统称为应用,有一个应用id。
  • 使用CacheCloud可以快速部署Redis Standalone、Redis Sentinel、Redis Cluster。

在这里插入图片描述

4、客户端接入

两种接入方式:

  • Rest API
  • Java 客户端

在这里插入图片描述

5、本节小结

  1. 机器端做好准备工作,建立好和CacheCloud通信的基础。
  2. 在CacheCloud端填写上机器端的SSH配置,所有的机器都需要一致的,此处填写的就是机器端实际的。
  3. 在CacheCloud端添加机器,实现CacheCloud真正对机器的接管。添加的CPU和内存这是参考依据,以实际服务端探测的为主。
  4. 应用接入阶段,管理员会根据申请,选择哪些机器资源来实现应用的要求。

三、用户功能

站在开发人员角度介绍CacheCloud相关功能。

1、应用统计信息

  1. 全局信息:应用的全局信息,内存使用率,连接数,主从节点数,命中率,对象数,当前状态及分布的机器节点数。
  2. 命令统计:展示当前应用执行最频繁的5个命令的分布情况。
  3. 统计报表:展示了每分钟命令次数、命中次数、网络流量、客户端连接数、内存使用统计图。
  4. 申请扩容
  5. 申请修改配置

2、实例列表

  • 应用下,所有Redis节点的基本信息。
  • 运行状态、内存使用情况、对象数、连接数、命中率、碎片率、角色等。
  • 还有详细的信息:实例统计信息、慢查询分析、配置查询、连接信息、故障报警、命令曲线等功能,与应用统计信息很像,但是不同的是这个是实时的调用info命令获取的,而应用统计信息周期性统计后进行汇总生成的,所以会有一定的延迟。

3、应用详情

  1. 应用详情:应用ID、应用名称、应用申请人、应用类型、报警用户、负责人、Redis节点拓扑、Appkey等。
  2. 用户管理:对该用户的用户权限进行设置,添加进来的用户能有应用的访问权。
  3. 应用报警配置:CacheCloud面向用户的报警配置比较少,只有内存和连接数,相关报警主要集中在管理员层面

4、命令曲线

  • 根据命令的调用次数做倒排,展示出每个命令最近两天的调用量,可以帮助开发人员快速定位到命令执行是否正常。

5、CacheCloud Redis Shell控制台

  • 可以与Redis实例,通过命令进行交互。

6、慢查询

  • 应用下每个节点近2天的慢查询,可以选择时间,CacheCloud每隔5分钟收集所有Redis节点的慢查询保存到MySQL,这样会存在漏掉慢查询的可能性。例如Redis节点在这5分钟内产生了大量的慢查询。

7、应用拓扑

  • 实心的方块代表主节点,同一列的空心方块代表从节点。该功能方便及时发现当前集群部署结构存在的问题。CacheCloud会每隔一分钟收集应用下所有节点的info信息,将它们计算汇总后保存到MySQL中。同时CacheCloud还会对机器信息、内存、连接数、AOF重写、慢查询等做定期收集,每种收集都是在一个线程池内异步执行的,而整体的调度依赖quartz。

在这里插入图片描述

四、运维功能

  • 站在运维人员角度介绍CacheCloud相关功能。

1、应用运维

  • 应用上下线:应用下线,会将Redis节点关掉,停止应用下所有节点统计任务,将应用的状态变为下线,这样客户端获取的Redis节点列表为空。下线应用无法再次上线。超级管理员组的用户才有权限下线应用。
  • Redis Sentinel运维
  • Redis Cluster运维:主要包含如下功能:
    • 实例基本信息:运行状态、角色、内存使用状态、对象数、连接数、命中率、日志查看等。
    • 下线实例:对该节点进行Shutdown操作,并关闭该节点相关监控任务。
    • 上线实例:针对已下线的节点,重新启动该节点,并重新加入监控。
    • 添加从节点:给主节点,添加一个从节点,只需要添加对应的从节点IP即可。
    • FailOver:手动完成Redis Cluster主从节点的故障转移,其中FailOver操作支持三种方法:FailOver、FailOver Force、FailOver TakeOver。
  • 配置管理:用户提交配置修改的工单后,管理员在后台流程审批中完成配置确认和审批。
  • 垂直扩容与水平扩容:用户提交工单后,管理员审批,默认的是垂直扩容,直接修改Redis实例的MaxMemory。水平扩容需要两步,增加新的节点,迁移slots。迁移速度上migrate<set<AOF<RDB。

2、接入已存在的Redis

  1. 管理员用户命令下拉菜单中导入应用链接。
  2. 填写导入的应用表单,也就是Redis的实例列表。
  3. Redis节点最好配置MaxMemory,否则会展示不出来应用内存统计。

CacheCloud实际上对Redis节点做了如下三件事情:

  1. 验证输入内容。
  2. 保存应用信息,实例信息,应用与实例关系信息。
  3. 开启统计功能(每分钟执行一次info命令)。

3、Redis配置模板

该功能可以对每次开启的Redis节点添加配置模板。

4、迁移工具

支持以下任意的两种类型之间的切换:

  • 能够保证实时性,如果合理使用基本可以保证一致性。
  • 以可视化方式实现迁移流程控制。

在这里插入图片描述

CacheCloud迁移工具底层使用的是唯品会公司开源的redis-migrate-tool。

需要为CacheCloud添加一台机器专门用于数据迁移。

迁移工具的基本原理:

在这里插入图片描述

5、监控报警

两种方式:邮件与短信。

涉及到邮件与短信的功能:

在这里插入图片描述

监控报警的内容有:

  1. 应用日报:每天收到前一天的使用状态,包括客户端相关统计和服务端相关统计。
  2. 异常统计报警:每天,所有CacheCloud管理员会收到系统前一天的异常。
  3. Redis的实例心跳:CacheCloud每五分钟对Redis节点做心跳检测,如果检测失败,会报警。
  4. 应用内存和客户端连接数:CacheCloud每20分钟会检查Redis的内存和客户端的连接数是否超过了阈值。
  5. 机器性能报警:CacheCloud每小时对机器内存、负载、CPU进行监控,一旦超过预设的阈值,会进行报警。

6、系统配置管理

在这里插入图片描述

五、客户端上报

CacheCloud提供Java客户端上报功能,可以将信息进行可视化展示。

1、客户端上报整体设计

在这里插入图片描述

六、参考资料

  1. CacheCloud的Wiki
  2. CacheCloud的官网
  3. CacheCloud的Github
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/624687
推荐阅读
相关标签
  

闽ICP备14008679号