目录
目录README.md

概述

应用于kubernetes中,管理OpenGauss集群部署、更新的Operator。

完成情况

我们不仅实现了赛题的基本特性要求:单机部署、集群部署、动态扩缩容、Pod迁移以及版本更新, 还扩展了一项数据库的常用特性:数据库备份。此外,我们在功能性特性的基础上,从可用性、易用性、灵活性上 做出了大量优化,力求达到:优雅升级/迁移、主备故障恢复、部署/配置简单、资源配置灵活。

项目架构

功能点

单机部署

mode设置为standalone,完成单机部署。

集群部署

Opengauss官方部署方式,可支持一主多备,预留master字段,可做级联部署。

更新

识别imageresource字段,为对应集群节点做版本和资源更新。

集群扩缩容

name字段标识每个备节点,operator通过对比,当备节点出现新增或删除时进行对应扩缩容。

pod指定node迁移

每个InstancenodeName作为Pod迁移的依据,当发现目前name对应nodeName不一致,则对其进行指定的node迁移。

数据库备份

根据backup字段定义,指定每隔一段时间interval备份指定的数据库实例instance

非功能性

可用性

  1. 优雅升级:当主库进行升级时,数据库的写服务处于不可用状态,所以升级时间越短越好。我们使用主备切换的方式,当主库需要升级时,首先将主库与一个备库切换(备库升级为主库),由此避免主库升级时的不可用情况。
  2. 优雅迁移:与优雅升级类似。当主库进行迁移时,数据库的写服务处于不可用状态,我们仍然使用主备切换的方式,先将备库升级为主库,以此保证迁移期间的写服务的可用性。
  3. 主备故障恢复:我们充分考虑到了主库实例和备库实例宕机的区别,在运行阶段维护正确的副本数量,当实例宕机后,则启动新的Pod,并恢复原有的主备之间的连接。

灵活性

  1. 配置灵活:由于我们直接使用底层的资源对象,用户可以针对性的对每个实例指定资源配置。如不同的数据库副本可以使用不同的cpu、内存、存储资源配置。或者备库使用不同的存储引擎用以达到更高的读取性能,此时就可以使用不同的镜像来达到目的。

易用性

  1. 部署/配置简单:一个资源定义支持单机、集群部署、动态扩缩容、版本更新、Pod迁移、备份等多种功能。用户只需指定镜像、节点名称以及读写端口,无需关注存储网络等问题,即可部署一个高可用的读写分离的openGauss集群。

配置文件示例

apiVersion: database.iscas/v1alpha1
kind: OpenGauss
metadata:
  name: opengauss-sample
spec:
  readPort:     30000    # 读服务端口,读服务可以负载均衡到所有副本上(包括主库)
  WritePort:    30001    # 写服务端口,写服务只能使用主库
  backup:                # 数据库备份配置
    instance:  master   # 指定备份的数据库实例
    interval:  1        # 备份间隔时间(0表示不备份,单位为小时)
  mode:  cluster        # 指定单机模式"standalone"或集群模式"cluster"
  primaryInstance:      # 指定主库配置
    image:      enmotech/opengauss:2.1.0    # 数据库镜像
    name:       master        # 数据库示例名称
    nodeName:  master-60       # 指定调度节点
    resources:                 # 节点资源要求,与Pod配置要求一样(cpu及memory)
      limits:
        cpu:     1                              
        memory:  2Gi
    storage:     4Gi                           # 最小磁盘容量要求
  standbyInstances:                            # 指定备库配置
    - image:      enmotech/opengauss:2.1.0   # 数据库镜像
      name:       standby1                    # 备库名称
      nodeName:  master-60                     # 指定调度节点
      resources:  ...                          # 节点资源配置
      storage:     4Gi                         # 磁盘存储配置
    - image:       enmotech/opengauss:2.1.0 
      name:        standby2
      nodeName:   master-60
      resources:  ...
      storage:     4Gi
关于

openGauss-operator

101.6 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号