Redis集群
Redis支持网络、可基于内存、可持久化的日志型数据存储系统,支持多类型数据结构,支持提供多种语言的API。Redis丰富的数据结构以及高速的读写速度,通过Redis哨兵和集群两种方式提供高可用性的服务,可满足企业级的数据库、缓存和消息中间件等大部分功能。
- 通过operator 和 CRD 的方式在K8s集群进行部署和维护,支持一键部署,自定义集群配置。
- 支持基于Prometheus的各类性能监控数据统计展示。
创建Redis集群服务
创建Redis集群的步骤如下所示。
Redis对应的集群插件根据项目需要安装配置,由项目管理员以上权限的成员在项目维度安装对应的operator,方可部署该operator集群。
(1) 用户点击[所有产品/中间件/应用],选择对应的集群项目,在应用页面找到Redis页签,点击<部署>按钮,进入Redis集群配置页面,弹框如下图所示。

(2) 填写数据库集群名称,配置集群实例资源,选择访问方式、集群模式,填写副本数,选择存储卷(支持rbd、NFS、local类型的存储),输入密码。
(3) 选择备份方式,支持FTP的方式(需提供FTP服务地址、用户名、密码)或rbd存储的方式(保证默认的rbd存储集群在[集群详情/集群存储]中配置了radosgw地址)备份。
(4) 单击<创建>,即可创建一个Redis集群。
配置Redis集群使用Cluster模式
用户配置Redis集群使用Cluster模式的操作步骤如下所示。
- 节点配置要求:由于deploy采用hostNetwork模式,而最小的[Redis Cluster]需要3主3从6个节点,必须要求slave节点大于等于6台。
- 网络要求:保证每台Redis服务部署节点redis端口上下行放开。
- 考虑到k8s集群后期可能部署多套对外提供服务的[Redis Cluster]集群,Redis健康检查服务将被禁用(9121端口)。
(1) 创建集群内访问的Redis Cluster。
(2) 修改Redis集群的configmap,修改Redis启动端口,配置如下图所示。

(3) 配置redis statefulset yaml文件,文件路径为[进入工作负载/有状态副本集/],然后选择标记Yaml文件。
(4) 在文件中增加hosteNetwork参数,配置如下图所示。

(5) 修改hostPort containerPort参数,与configmap里的端口配置一致。
(6) 增加redis REDIS_PORT,配置如下图所示。

(7) 文件修改完成后,保存退出;删除Redis Pod重新创建测试。

查看集群
基础信息
点击展开详情,进入“基础信息”可以查看新创建的数据库集群的参数、资源配置、实例副本等信息。
- 参数:用户名和密码,可以修改密码。
- 资源配置:可以修改数据库实例配置,这里是一个容器的配置,总配置=资源配置*实例副本数。
- 实例副本:可修改容器实例的副本数,可查看节点的容器名和挂载路径。一般容器实例数多于1时,数据库可用性更高,推荐实例数为3。
存储
切换存储,可以查看当前存储卷配置,如下图所示。

Cephrbd和Glusterfs停止数据库集群后,可以扩容,用户可按需配置,拖动即可调整存储配置。
备份
数据库集群运行成功后,可以手动设置备份。
- 点击“手动备份”,进入备份配置弹框,输入备份名称,建立一个备份。redis集群目前仅支持全量备份。
- 点击“设置自动备份”。可以设置每周的某天某时间开始备份,会自动的全量备份数据。
- 支持对已有的备份进行“删除”操作,找到所要删除的备份,下拉右侧操作框点击删除,在弹出框中点击确定删除即可。
- 若因误操作或应用逻辑的bug导致业务数据的丢失,可以通过“回滚”操作恢复到某个备份的状态。回滚操作后可基于回滚后的数据继续做备份。
配置管理
配置管理可以修改 redis.conf
文件中内容,从而对该数据库集群进行调优,重新编辑配置文件后,系统将重启该集群的所有实例,将进行滚动升级。
访问方式
可以修改数据库访问方式,修改网络出口等。
访问方式下支持编辑开启只读地址,点击“编辑”按钮,勾选“开启只读地址”,开启只读地址后,使用只读地址执行读请求,可将所有的读请求分摊到所有备节点。
集群中备节点为只读节点,务必使用只读地址执行读请求,系统可将所有的读请求分摊到所有备节点。建议使用可读可写地址执行写请求。
容器监控
监控pod实例的关键参数,包括CPU、内存、网络、硬盘相应信息。
性能监控
性能监控集成了grafana开源工具,将通过prometheus抓取的监控数据可视化地展示,方便用户查看集群运行状态,页面如下所示。
- 用户在配置middleware-monitor插件时,需要选择有域名的网络出口。
- 如果用户本地没有做域名解析,则需要把域名信息配置到本地hosts文件中,才可实现IP地址的解析。
- 如果用户使用证书方式去访问集群,需要单独对证书进行信任操作,才可实现数据正常的访问。

事件
切换事件可以查看集群创建过程中的事件,同时事件中将记录回滚、删除、扩容等操作。
删除集群
(1) 点击集群名称链接,进入集群详情页。
(2) 点击右上角“其他操作/删除”操作,删除集群。
重启集群
(1) 点击集群名称链接,进入集群详情页。
(2) 点击右上角“其他操作/重启”操作,重启集群。
停止/启动
(1) 点击集群名称链接,进入集群详情页。
(2) 集群运行状态,点击右上角“其他操作/停止”操作,停止集群。
(3) 集群停止状态,点击右上角“其他操作/启动”操作,启动集群。
数据同步
Redis集群跨区高可用实现了源集群和目标集群数据同步、不同版本的redis集群间数据的同步等多种场景下数据的同步。其工作原理如下所示:
在Kubernetes中,存在指定PV无法与其他Pod共享的情况,在Redis Master和各个Redis Slave对应的Pod中启动一个Agent进程,负责与各个Pod中的Redis Master或者Redis Slave共享PV的数据。
Agent对外暴露Restful API,在外部可以通过调用Restful API可以实现Redis Maste和各个Redis Slave的数据文件的备份和恢复。
外部我们通过Kubernetes CRD实现,分别定义Backup和Restore两种资源对象,并通过两种Controller实现二者的业务逻辑,通过创建两种资源对象分别触发备份和恢复,结果和日志分别记录在两种资源对象实例的对应属性上;
Backup Controller调用Master Pod中Agent提供的Restful API实现数据文件的备份,并记录操作结果和日志。
Restore Controller调用Master和Slave对应的所有Pod中的Agent进程提供Restful API实现数据数据文件的恢复,重建这些Pod,并记录操作结果和日志。工作原理示意图如下所示。

创建Redis数据同步的操作步骤如下所示。
(1) 选择“数据同步”菜单项,进入数据同步配置页面。
(2) 单击<同步配置>按钮,进入到创建数据同步弹框,配置目标集群,访问目标集群密码,所需资源大小。
(3) 配置完成后,单击<确定>按钮,进入同步配置页面,如下图所示。配置同步页面如下图所示。

在数据同步页面,用户可以按照业务需要对同步配置进行操作,可执行的操作有:启动/停止数据同步、查看/删除数据同步以及查看Deployment资源。
Redis监控
平台支持Redis exporter,支持通过外部将数据源信息可视化为相应的图表,便于用户掌握集群的运行状态。