无论使用还是运维Redis,不要将其看作黑盒。当Redis达到了一定规模,这些命令会变得捉襟见肘,如果通过平台化的工具同意监控和管理将极大地提升开发和运维人员工作效率

CacheCloud是什么

当数千个Redis节点、数百台机器、数百个业务支撑时,缺少一个好的可视化运维平台可能会存在很多问题

现有问题

部署成本

以Redis Cluster为例,虽然有redis-rtib工具帮助构建和管理,但每个Redis节点仍然需要手工配置和启动,既耗时又容易出错

实例碎片化

关系型数据库(Orcale、MySQL)发展成熟,会有DBA人员管理。但Redis这样地NoSQL数据库,没有专职人员维护,会出现Redis由各个业务组来维护,造成Redis散落在各个机器上,没有整体的管理。高效的做法为提供统一管理和监控的Redis平台,用于管理机器、集群、节点、用户等资源并做好全方位监控,防止各种“私搭乱建”造成的混乱现象

监控、统计和管理不完善

Redis Live等工具虽然提供了可视化方式监控,但功能不完善

运维、经济成本

运维Redis的三个问题:

  • 开发人员善于使用Redis实现各种功能,但没有经理和经验来维护好Redis
  • Redis较为分散的部署在各自服务器上,机器利用率低,出现大量闲置资源
  • 各个业务组的Redis使用各种不同的版本,不便于管理和交互

CacheCloud功能

CacheCloud是一个Redis云管理平台:支持Redis多种架构(Standalone、Sentinel、Cluster)高效管理、有效降低大规模redis运维成本,提升资源管控能力和利用率。平台提供快速搭建/迁移,运维管理,弹性伸缩,统计监控,客户端整合接入等功能。
image.png
开源项目地址:https://github.com/sohutv/cachecloud
image.png

主要功能

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

快速部署

下载项目源码

我使用的是2.0版本
image.png
image.png

初始化数据库

image.png

Cache项目配置

修改配置数据库
image.png

启动

image.png
报错了!!!傻眼了😭,懒得排查了,切到1.3部署

初始化数据库和配置

image.png
我使用的MySQL8.0以上所以数据源和配置要改变
image.png
image.png

剩余详细配置在此网页
https://github.com/sohutv/cachecloud/wiki/3.%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E6%8E%A5%E5%85%A5%E6%96%87%E6%A1%A3

使用1.3版本配置

image.png
本地启动好的如上图

坑总结

1.使用1.3版本
2.MySQL最好使用5.6和以下的,我是用的8版本更改数据源配置还是报错,可能url写入代码里面了,懒得改了

运行方法

  • 1.下载1.3版本
  • 2.更改数据源配置IP地址、账号、密码
  • 3.进入下载包mvn clean compile install -Plocal
  • 4.进入cachecloud-open-web文件夹下,运行mvn spring-boot:run

登陆确认

默认账号密码admin、admin登录
image.png
image.png

机器部署

CacheCloud使用SSH(secure shell)协议与Redis所在的机器进行交互来完成实例部署工作,需要在Redis所在的机器添加相应的SSH用户名和密码,从而让CacheCloud能与之交互,同时机器还要在指定的目录下安装Redis,从而让CacheCloud了解Redis的相应安装目录,实现对Redis日志、持久化数据、配置文件的集中管理,有了这些CacheCloud才可以正常的对机器和Redis进行管理和运维
image.png

脚本部署

image.png

相关配置:

  • 创建SSH用户
    image.png
  • 创建CacheCloud相关目录
    image.png
  • 安装最新的release版本的Redis
    image.png

执行脚本

image.png

  • 在root用户下执行
    sh cachecloud-init.sh [用户名]
    image.png
    image.png
  • 验证
  • redis-cli -v验证Redis是否已经安装成功
    image.png
  • 以前yum安装的redis如下
    image.png
  • cachecloud安装的redis如下
    image.png

添加机器

修改机器相关的系统配置

先修改机器相关的系统配置,需要配置正确,以下图为默认值
image.png

  • 需更改,必须要确认是否正确:
    1.ssh用户名
    2.ssh密码
    3.ssh端口
    4.cachecloud根目录

添加配置

image.png

  • 添加信息有助于管理员在部署Redis时分配机器
  • 添加的CPU和内存只是参考依据,CacheCloud会自己收集信息

机器信息收集

机器添加后CacheCloud后台会启动一个内部的定时任务,通过SSH连接到机器上进行相关数据的收集
image.png
如果正常1分钟后可以查看到如下统计信息
image.png

接入应用

开发人员如何通过CacheCloud客户端实现对Redis的使用
在CacheCloud中,Redis Standalone、Redis Sentinel、Redis Cluster统一称为应用,开发者只需要一个应用id,就可以实现Redis节点的和获取,完成客户端的使用

总体流程

image.png

具体流程如下:

  • 申请账户:
    普通用户在CacheCloud进行用户注册,待管理员审核后,成为CacheCloud账户
  • 创建用户:
    普通用户填写申请应用的工单,待管理员审核后,拥有自己的应用
  • 接入应用:
    在自己的项目中使用CacheCloud的客户端接入代码进行开发,之后就可以使用CacheCloud提供的各种功能

账户申请和审批

image.png
image.png

应用申请和审批

申请

image.png
其中比较重要的属性有:

  • 存储种类:
    分为Redis Standalone、Redis Sentinel、Redis Cluster三种
  • 内存总量:
    代表申请总量,实际容量以CacheCloud管理员实际分配为准
  • 测试:
    代表当前应用是否为测试,如果为测试,可能CacheCloud管理员会适当分配一些比较差的机器
  • 后端是否有数据源:
    应用放是否拿Redis作为存储使用
  • 是否需要持久化:
    应用方是否需要使用持久化功能
  • 是否需要热备:
    应用方申请的Redis是否需要从节点
  • 预估QPS(并发量):
    应用方的并发量(实际填写QPS),如果并发量比较大,CacheCloud管理员在分配机器时会适当考虑使用更好的机器
  • 预估条目数量:
    应用发预估key的个数
  • 客户端机房:
    应用方所在的机房,可以是多个
  • 内存报警阈值:
    应用方希望应用和每个Redis节点的内存使用超过百分之多少时会进行报警
  • 客户端连接数报警阈值:
    应用方希望应用和每个Redis节点的连接数超过多少时会进行报警

审批

image.png
image.png
image.png
操了,同IP部署还不行,已经提交了issue,看看是不是我姿势不对,😄
image.png
那就部署单机的吧
image.png
image.png
image.png

审批更新

必须要在申请Redis单机或集群和哨兵和审批相同才可以
image.png

用户功能

运维功能


这个家伙很懒,啥也没有留下😋