跳到主要内容

Redis集群

Redis支持网络、可基于内存、可持久化的日志型数据存储系统,支持多类型数据结构,支持提供多种语言的API。Redis丰富的数据结构以及高速的读写速度,通过Redis哨兵和集群两种方式提供高可用性的服务,可满足企业级的数据库、缓存和消息中间件等大部分功能。

  • 通过operator 和 CRD 的方式在K8s集群进行部署和维护,支持一键部署,自定义集群配置。
  • 支持基于Prometheus的各类性能监控数据统计展示。

创建Redis集群服务

创建Redis集群的步骤如下所示。

前提条件

Redis对应的集群插件根据项目需要安装配置,由项目管理员以上权限的成员在项目维度安装对应的operator,方可部署该operator集群。

(1) 用户点击[所有产品/中间件/应用],选择对应的集群项目,在应用页面找到Redis页签,点击<部署>按钮,进入Redis集群配置页面,弹框如下图所示。

test

(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启动端口,配置如下图所示。

test

(3) 配置redis statefulset yaml文件,文件路径为[进入工作负载/有状态副本集/],然后选择标记Yaml文件。

(4) 在文件中增加hosteNetwork参数,配置如下图所示。

test

(5) 修改hostPort containerPort参数,与configmap里的端口配置一致。

(6) 增加redis REDIS_PORT,配置如下图所示。

test

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

test

查看集群

基础信息

点击展开详情,进入“基础信息”可以查看新创建的数据库集群的参数、资源配置、实例副本等信息。

信息
  • 参数:用户名和密码,可以修改密码。
  • 资源配置:可以修改数据库实例配置,这里是一个容器的配置,总配置=资源配置*实例副本数。
  • 实例副本:可修改容器实例的副本数,可查看节点的容器名和挂载路径。一般容器实例数多于1时,数据库可用性更高,推荐实例数为3。

存储

切换存储,可以查看当前存储卷配置,如下图所示。

test

Cephrbd和Glusterfs停止数据库集群后,可以扩容,用户可按需配置,拖动即可调整存储配置。

备份

数据库集群运行成功后,可以手动设置备份。

  • 点击“手动备份”,进入备份配置弹框,输入备份名称,建立一个备份。redis集群目前仅支持全量备份。
  • 点击“设置自动备份”。可以设置每周的某天某时间开始备份,会自动的全量备份数据。
  • 支持对已有的备份进行“删除”操作,找到所要删除的备份,下拉右侧操作框点击删除,在弹出框中点击确定删除即可。
  • 若因误操作或应用逻辑的bug导致业务数据的丢失,可以通过“回滚”操作恢复到某个备份的状态。回滚操作后可基于回滚后的数据继续做备份。

配置管理

配置管理可以修改 redis.conf文件中内容,从而对该数据库集群进行调优,重新编辑配置文件后,系统将重启该集群的所有实例,将进行滚动升级。

访问方式

可以修改数据库访问方式,修改网络出口等。

访问方式下支持编辑开启只读地址,点击“编辑”按钮,勾选“开启只读地址”,开启只读地址后,使用只读地址执行读请求,可将所有的读请求分摊到所有备节点。

备注

集群中备节点为只读节点,务必使用只读地址执行读请求,系统可将所有的读请求分摊到所有备节点。建议使用可读可写地址执行写请求。

容器监控

监控pod实例的关键参数,包括CPU、内存、网络、硬盘相应信息。

性能监控

性能监控集成了grafana开源工具,将通过prometheus抓取的监控数据可视化地展示,方便用户查看集群运行状态,页面如下所示。

备注
  • 用户在配置middleware-monitor插件时,需要选择有域名的网络出口。
  • 如果用户本地没有做域名解析,则需要把域名信息配置到本地hosts文件中,才可实现IP地址的解析。
  • 如果用户使用证书方式去访问集群,需要单独对证书进行信任操作,才可实现数据正常的访问。
test

事件

切换事件可以查看集群创建过程中的事件,同时事件中将记录回滚、删除、扩容等操作。

删除集群

(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,并记录操作结果和日志。工作原理示意图如下所示。

test

创建Redis数据同步的操作步骤如下所示。

(1) 选择“数据同步”菜单项,进入数据同步配置页面。

(2) 单击<同步配置>按钮,进入到创建数据同步弹框,配置目标集群,访问目标集群密码,所需资源大小。

(3) 配置完成后,单击<确定>按钮,进入同步配置页面,如下图所示。配置同步页面如下图所示。

test

在数据同步页面,用户可以按照业务需要对同步配置进行操作,可执行的操作有:启动/停止数据同步、查看/删除数据同步以及查看Deployment资源。

Redis监控

平台支持Redis exporter,支持通过外部将数据源信息可视化为相应的图表,便于用户掌握集群的运行状态。