Logo
容器化部署与管理

容器化部署与管理 #

Helm 部署方式部署 SphereEx-DBPlusEngine-Proxy 集群 #

背景信息 #

使用 Helm 在 Kubernetes 集群中引导 SphereEx-DBPlusEngine-Proxy 集群进行安装。

前提条件 #

kubernetes 1.20+

kubectl

helm 3.8.1+

可以动态申请 PV(Persistent Volumes) 的 StorageClass 用于持久化数据。(可选)

操作步骤 #

最简安装 #

将 SphereEx-DBPlusEngine-Proxy 添加到 Helm 本地仓库:

helm repo add sphereex https://xxx

以 sphereex-dbplusengine 命名安装 charts:

helm install sphereex-dbplusengine sphereex/sphereex-dbplusengine

配置安装 #

运行时配置修改 #

以 sphereex-dbplusengine 命名安装 charts:配置项包括治理节点 Zookeeper 的数据持久化,mysql 驱动自动下载,治理中心 Namespace 配置

helm install sphereex-dbplusengine sphereex/sphereex-dbplusengine  --set governance.zookeeper.persistence.enabled=true --set governance.zookeeper.persistence.storageClass="<你的storageClass名称>" --set compute.mysqlConnector.version="<mysql驱动版本>" --set compute.serverConfig.mode.repository.props.namespace="governance_ds"
修改 values.yaml 文件,详细配置项参见配置示例 #
tar -zxvf sphereex-dbplusengine.tar.gz 

vim values.yaml 

helm install sphereex-dbplusengine

卸载 #

helm uninstall sphereex-dbplusengine

默认删除所有发布记录,增加 --keep-history 参数保留发布记录。

配置示例 #

治理节点配置项 #

配置项描述
governance.enabled用来切换是否使用治理节点的 charttrue

治理节点–ZooKeeper 配置项 #

配置项描述
governance.zookeeper.enabled用来切换是否使用 ZooKeeper 的 charttrue
governance.zookeeper.replicaCountZooKeeper 节点数量1
governance.zookeeper.persistence.enabled标识 ZooKeeper 是否使用持久卷申领 (PersistentVolumeClaim) 用来申请持久卷(PersistentVolume)false
governance.zookeeper.persistence.storageClass持久卷(PersistentVolume)的存储类 (StorageClass)""
governance.zookeeper.persistence.accessModes持久卷(PersistentVolume)的访问模式["ReadWriteOnce"]
governance.zookeeper.persistence.size持久卷(PersistentVolume) 大小8Gi
governance.zookeeper.resources.limitsZooKeeper 容器的资源限制{}
governance.zookeeper.resources.requests.memoryZooKeeper 容器申请的内存256Mi
governance.zookeeper.resources.requests.cpuZooKeeper 容器申请的 cpu 核数250m

计算节点–SphereEx-DBPlusEngine-Proxy 配置项 #

配置项描述
compute.image.repositorySphereEx-DBPlusEngine-Proxy 的镜像名apache/shardingsphere-proxy
compute.image.pullPolicySphereEx-DBPlusEngine-Proxy 镜像拉取策略IfNotPresent
compute.image.tagSphereEx-DBPlusEngine-Proxy 镜像标签5.1.2
compute.imagePullSecrets.username拉取私有仓库的用户名""
compute.imagePullSecrets.password拉取私有仓库的密码""
compute.resources.limitsSphereEx-DBPlusEngine-Proxy 容器的资源限制{}
compute.resources.requests.memorySphereEx-DBPlusEngine-Proxy 容器申请的内存2Gi
compute.resources.requests.cpuSphereEx-DBPlusEngine-Proxy 容器申请的 cpu 核数200m
compute.replicasSphereEx-DBPlusEngine-Proxy 节点个数3
compute.service.typeSphereEx-DBPlusEngine-Proxy 网络模式ClusterIP
compute.service.portSphereEx-DBPlusEngine-Proxy 暴露端口3307
compute.mysqlConnector.versionMySQL 驱动版本5.1.49
compute.startPortSphereEx-DBPlusEngine-Proxy 启动端口3307
compute.agent.enabledSphereEx-DBPlusEngine-Proxy Engine 启动配置false
compute.serverConfigSphereEx-DBPlusEngine-Proxy 模式配置文件""

计算节点 DBPlusEngine-Proxy Server 配置 权限配置项 #

配置项描述
serverConfig.authority.privilege.type存储节点数据授权的权限提供者类型,缺省值为 ALL_PERMITTEDALL_PERMITTED
serverConfig.authority.users[0].password用于登录计算节点的密码root
serverConfig.authority.users[0].user用于登录计算节点的用户名,授权主机。格式: @ hostname 为 % 或空字符串表示不限制授权主机root@%

计算节点 DBPlusEngine-Proxy Server 配置 模式配置项 #

配置项描述
serverConfig.mode.type运行模式类型。 现阶段仅支持 Cluster 模式Cluster
serverConfig.mode.repository.props.namespace注册中心命名空间governance_ds
serverConfig.mode.repository.props.server-lists注册中心连接地址{{ printf "%s-zookeeper.%s:2181" .Release.Name .Release.Namespace }}
serverConfig.mode.repository.props.maxRetries客户端连接最大重试次数3
serverConfig.mode.repository.props.operationTimeoutMilliseconds客户端操作超时的毫秒数5000
serverConfig.mode.repository.props.retryIntervalMilliseconds重试间隔毫秒数500
serverConfig.mode.repository.props.timeToLiveSeconds临时数据失效的秒数60
serverConfig.mode.repository.type持久化仓库类型。 现阶段仅支持 ZooKeeperZooKeeper

计算节点 DBPlusEngine-Proxy Server 配置 props 配置项 #

配置项描述
compute.serverConfig.props.proxy-frontend-database-protocol-type后端协议类型(支持 PostgreSQL、openGauss、MariaDB、MySQL ),如果需要进行其他非 MySQL 后端数据源链接,请更换此项配置MySQL

说明: 支持设置 CGROUP_MEM_OPTS 环境变量: 用于在容器环境中设置相关内存参数,脚本中的默认值为: -XX:InitialRAMPercentage=80.0 -XX:MaxRAMPercentage=80.0 -XX:MinRAMPercentage=80.0

配置示例 #

values.yaml

#
#   Copyright © 2022,Beijing Sifei Software Technology Co., LTD.
#   All Rights Reserved.
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
#

## @section Governance-Node parameters
## @param governance.enabled Switch to enable or disable the governance helm chart
##
governance:
  enabled: true
  ## @section Governance-Node ZooKeeper parameters
  zookeeper:
    ## @param governance.zookeeper.enabled Switch to enable or disable the ZooKeeper helm chart
    ##
    enabled: true
    ## @param governance.zookeeper.replicaCount Number of ZooKeeper nodes
    ##
    replicaCount: 3
    ## ZooKeeper Persistence parameters
    ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/
    ## @param governance.zookeeper.persistence.enabled Enable persistence on ZooKeeper using PVC(s)
    ## @param governance.zookeeper.persistence.storageClass Persistent Volume storage class
    ## @param governance.zookeeper.persistence.accessModes Persistent Volume access modes
    ## @param governance.zookeeper.persistence.size Persistent Volume size
    ##
    persistence:
      enabled: true
      storageClass: ""
      accessModes:
        - ReadWriteOnce
      size: 8Gi
    ## ZooKeeper's resource requests and limits
    ## ref: https://kubernetes.io/docs/user-guide/compute-resources/
    ## @param governance.zookeeper.resources.limits The resources limits for the ZooKeeper containers
    ## @param governance.zookeeper.resources.requests.memory The requested memory for the ZooKeeper containers
    ## @param governance.zookeeper.resources.requests.cpu The requested cpu for the ZooKeeper containers
    ##
    resources:
      limits: {}
      requests:
        memory: 4Gi
        cpu: 2

## @section Compute-Node parameters
## 
compute:
  ## @section Compute-Node ShardingSphere-Proxy parameters
  ## ref: https://kubernetes.io/docs/concepts/containers/images/
  ## @param compute.image.repository Image name of ShardingSphere-Proxy.
  ## @param compute.image.pullPolicy The policy for pulling ShardingSphere-Proxy image
  ## @param compute.image.tag ShardingSphere-Proxy image tag
  ##
  image:
    repository: "uhub.service.ucloud.cn/sphere-ex/sphereex-dbplusengine-proxy"
    pullPolicy: IfNotPresent
    ## Overrides the image tag whose default is the chart appVersion.
    ##
    tag: "1.3.1"
  imagePullSecrets:
    username: ""
    password: ""
  ## ShardingSphere-Proxy resource requests and limits
  ## ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
  ## @param compute.resources.limits The resources limits for the ShardingSphere-Proxy containers
  ## @param compute.resources.requests.memory The requested memory for the ShardingSphere-Proxy containers
  ## @param compute.resources.requests.cpu The requested cpu for the ShardingSphere-Proxy containers
  ##
  resources:
    requests:
      cpu: 2
      memory: 2Gi
    limits:
      cpu: 4
      memory: 4Gi
  ## ShardingSphere-Proxy Deployment Configuration
  ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
  ## ref: https://kubernetes.io/docs/concepts/services-networking/service/
  ## @param compute.replicas Number of cluster replicas
  ##
  replicas: 3
  ## @param compute.service.type ShardingSphere-Proxy network mode
  ## @param compute.service.port ShardingSphere-Proxy expose port
  ##
  service:
    type: LoadBalancer
    port: 3307
  ## MySQL connector Configuration
  ## ref: https://shardingsphere.apache.org/document/current/en/quick-start/shardingsphere-proxy-quick-start/
  ## @param compute.mysqlConnector.version MySQL connector version
  ##
  mysqlConnector:
    version: ""
  ## @param compute.startPort ShardingSphere-Proxy start port
  ## ShardingSphere-Proxy start port
  ## ref: https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-proxy/startup/docker/
  ##
  startPort: 3307
  agent:
    enabled: true
  terminationGracePeriodSeconds: 30
  ## @section Compute-Node ShardingSphere-Proxy ServerConfiguration parameters
  ## NOTE: If you use the sub-charts to deploy Zookeeper, the server-lists field must be "{{ printf \"%s-zookeeper.%s:2181\" .Release.Name .Release.Namespace }}",
  ## otherwise please fill in the correct zookeeper address
  ## The global.yaml is auto-generated based on this parameter.
  ## If it is empty, the global.yaml is also empty.
  ## ref: https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-jdbc/yaml-config/mode/
  ## ref: https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-jdbc/builtin-algorithm/metadata-repository/
  ##
  serverConfig:
    ## @section Compute-Node ShardingSphere-Proxy ServerConfiguration authority parameters
    ## NOTE: It is used to set up initial user to login compute node, and authority data of storage node.
    ## ref: https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-proxy/yaml-config/authentication/
    ## @param compute.serverConfig.authority.privilege.type authority provider for storage node, the default value is ALL_PERMITTED
    ## @param compute.serverConfig.authority.users[0].password Password for compute node.
    ## @param compute.serverConfig.authority.users[0].user Username,authorized host for compute node. Format: <username>@<hostname> hostname is % or empty string means do not care about authorized host
    ##
    authority:
      privilege:
        type: ALL_PERMITTED
      users:
        - password: root
          user: root@%
    ## @section Compute-Node ShardingSphere-Proxy ServerConfiguration mode Configuration parameters
    ## @param compute.serverConfig.mode.type Type of mode configuration. Now only support Cluster mode
    ## @param compute.serverConfig.mode.repository.props.namespace Namespace of registry center
    ## @param compute.serverConfig.mode.repository.props.server-lists Server lists of registry center
    ## @param compute.serverConfig.mode.repository.props.maxRetries Max retries of client connection
    ## @param compute.serverConfig.mode.repository.props.operationTimeoutMilliseconds Milliseconds of operation timeout
    ## @param compute.serverConfig.mode.repository.props.retryIntervalMilliseconds Milliseconds of retry interval
    ## @param compute.serverConfig.mode.repository.props.timeToLiveSeconds Seconds of ephemeral data live
    ## @param compute.serverConfig.mode.repository.type Type of persist repository. Now only support ZooKeeper
    ## @param compute.serverConfig.mode.overwrite Whether overwrite persistent configuration with local configuration
    ##
    mode:
     repository:
       props:
         maxRetries: 3
         namespace: ""
         operationTimeoutMilliseconds: 5000
         retryIntervalMilliseconds: 500
         server-lists: "{{ printf \"%s-zookeeper.%s:2181\" .Release.Name .Release.Namespace }}"
         timeToLiveSeconds: 600
       type: ZooKeeper
     type: Cluster
    props:
      proxy-frontend-database-protocol-type: MySQL

云上水平自动扩缩容(HPA) #

定义 #

在 Kubernetes 中,HorizontalPodAutoscaler(HPA) 自动更新工作负载资源,目的是自动扩缩工作负载以满足需求。

SphereEx-Operator 利用 Kubernetes 中 HPA 功能,结合 SphereEx-DBPlusEngine 的相关指标在 Kubernetes 集群中进行运行时自动扩缩容。

在开启自动扩缩容功能后,SphereEx-Operator 会在部署一个 SphereEx-DBPlusEngine 集群的同时在 Kubernetes 集群中应用一个 HPA 对象。

相关概念 #

  • HPA

HPA(HorizontalPodAutoscaler) 是指 SphereEx-Operator 利用 Kubernetes 中 HPA 功能对 SphereEx-DBPlusEngine 集群进行自动弹性扩缩容。

对系统的影响 #

在开启自动扩缩容之后,手动设置 SphereEx-DBPlusEngine 在 Kubernetes 中的副本将不会生效,SphereEx-DBPlusEngine 集群的副本数由 HPA 控制器的最大和最小值进行控制,进行弹性扩缩容将会在这两个值之间进行处理。

SphereEx-DBPlusEngine 的最小启动副本数也会由 HPA 的最小副本数进行控制,开启自动扩缩容功能后,SphereEx-DBPlusEngine 将以 HPA 的最小副本数进行启动。

使用 HPA 进行的扩缩容是对 SphereEx-DBPlusEngine 进行水平扩缩容。水平扩缩意味着对增加的负载的响应是部署更多的 Pod。

这与 “垂直(Vertical)” 扩缩不同,对于 Kubernetes, 垂直扩缩意味着将更多资源(例如:内存或 CPU)分配给已经为工作负载运行的 Pod。

使用限制 #

  • 现阶段受限于 SphereEx-DBPlusEngine 指标不够丰富,只能通过运行时 CPU 进行压力负载测试。未来会增加其余指标,丰富对于 SphereEx-DBPlusEngine 的运行时压力计算方式。
  • 如果想要使用 SphereEx-DBPlusEngine 在 Kubernetes 中的 HPA 功能,需要您的集群中安装 metrics-server 并能够正常使用 kubectl top 功能。
  • SphereEx-Operator 在创建 SphereEx-DBPlusEngine 集群的同时,会在 SphereEx-DBPlusEngine 集群前方建立负载均衡。您的应用和 SphereEx-DBPlusEngine 是通过负载均衡建立链接。
  • 因为 SphereEx-DBPlusEngine 和您的应用建立的是长链接,所以在扩容的过程中,对已有的长链接不会有明显的降低负载的效果。扩容的效果只会生效在扩容后新建立的链接上。
  • 缩容也会有相对应的问题,在缩容的过程中,您的应用会有闪断的现象,是因为缩容的 SphereEx-DBPlusEngine 副本处于缩容的过程中,会从负载均衡上摘除,您的应用和 SphereEx-DBPlusEngine 建立的长链接也会随之销毁。

原理介绍 #

使用 HPA 进行的扩缩容是对 SphereEx-DBPlusEngine 进行水平扩缩容。水平扩缩意味着对增加的负载的响应是部署更多的 Pod。

这与 “垂直(Vertical)” 扩缩不同,对于 Kubernetes, 垂直扩缩意味着将更多资源(例如:内存或 CPU)分配给已经为工作负载运行的 Pod。

如果负载减少,并且 Pod 的数量高于配置的最小值, HorizontalPodAutoscaler 会指示工作负载资源( Deployment、StatefulSet 或其他类似资源)缩减。

在 Kubernetes 集群中,有一个控制器会按照一定的时间间隔对相关资源创建的 HPA 中的指标进行查询。在满足指标的阈值之后会按照计算公式对相对应的资源进行扩容或者缩容。

在 SphereEx-Operator 工作过程中,HPA 对象作用于 SphereEx-DBPlusEngine 的 Deployment 部署对象,并且持续的查询 SphereEx-DBPlusEngine 每一个副本的 CPU 利用率。

SphereEx-DBPlusEngine 的 CPU 利用率从该容器的 /sys/fs/cgroup/cpu/cpuacct.usage 中获取 CPU 的使用情况,并且以 shardingsphere.sphere-ex.com/v1alpha1.proxy 中 automaticScaling.target 字段设置的值为阈值的百分比,进行持续的计算。

当计算的数值达到阈值之后,HPA 控制器按照如下的公式进行副本数的计算:

期望副本数 = ceil[当前副本数 * (当前指标 / 期望指标)]

值得注意的一点,CPU 利用率这一指标,是计算的每一个副本的 resources.requests 字段中 CPU 的数值。

在检查容差并决定最终值之前,控制平面还会考虑是否缺少任何指标, 以及有多少 Pod 已就绪。

当使用 CPU 指标来扩缩时,任何还未就绪(还在初始化,或者可能是不健康的)状态的 Pod 或 最近的指标度量值采集于就绪状态前的 Pod,该 Pod 也会被搁置。

原理图:

原理图

参数解释 #

NameDescriptionDefault Value
automaticScaling.enableSphereEx-DBPlusEngine-Proxy集群是否开启自动扩缩容FALSE
automaticScaling.scaleUpWindowsSphereEx-DBPlusEngine-Proxy 自动扩容稳定窗口30
automaticScaling.scaleDownWindowsSphereEx-DBPlusEngine-Proxy 自动缩容稳定窗口30
automaticScaling.targetSphereEx-DBPlusEngine-Proxy 自动扩缩容阈值,数值为百分比,注意:现阶段暂时只支持 cpu 为指标进行扩缩容70
automaticScaling.maxInstanceSphereEx-DBPlusEngine-Proxy 最大扩容副本数4
automaticScaling.minInstanceSphereEx-DBPlusEngine-Proxy 最小启动副本数,缩容不会小于这个副本数1

注意事项

在开启 SphereEx-DBPlusEngine 的 automaticScaling 功能时,将会由 HPA 接管 SphereEx-DBPlusEngine 的副本数,您的 SphereEx-DBPlusEngine 有可能会进行缩容操作,应用程序会出现闪断。

在开启 SphereEx-DBPlusEngine 的 automaticScaling 功能时,相对应的 HPA 会被删除。

操作步骤 #

  • 在按照下述配置修改完毕 values.yaml 之后执行 helm install 新建一个 SphereEx-DBPlusEngine 集群。
  • 或者使用 helm upgrade 更新现有的 SphereEx-DBPlusEngine 集群配置。

配置示例 #

如果想在 SphereEx-Operator 开启 SphereEx-DBPlusEngine 的自动扩缩容功能,需要在 SphereEx-DBPlusEngine-cluster charts 的 values.yaml 中开启如下配置:

automaticScaling:
  enable: true
  scaleUpWindows: 30
  scaleDownWindows: 30
  target: 20
  maxInstance: 4
  minInstance: 2

使用 Operator #

什么是 DBPlusEngine-Operator #

Kubernetes 的 Operator 模式允许你在不修改 Kubernetes 自身代码的情况下,通过一个或多个自定义资源关联控制器来扩展集群的能力。 Operator 是 Kubernetes API 的客户端,充当自定义资源的控制器。

Operator 模式旨在捕获(正在管理一个或一组服务的)运维人员的关键目标。 负责特定应用和 service 的运维人员,在系统应该如何运行、如何部署以及出现问题时如何处理等方面有深入的了解。

DBPlusEngine-Operator 帮助用户在 Kubernetes 环境中快速部署一套 DBPlusEngine-Proxy 集群,并且负责部署和维护这个集群周边的相关资源,监控集群状态。

DBPlusEngine-Mate 是 SphereEx 公司基于 Kubernetes 云原生自研的治理中心组件。

名词解释 #

CRD (CustomResourceDefinition) 用户自定义资源定义,代表 DBPlusEngine-Operator 将利用由 CRD 定义的 CR (CustomResource) ,在 Kubenrnetes 集群中部署一套完整的 DBPlusEngine-Proxy 集群。

产品优势 #

  • 配置简化

只需要编写简单的 yaml 即可在集群中部署一套完整的 DBPlusEngine-Proxy 集群。

  • 易扩展

通过对 CR yaml 的修改,即可做到水平扩缩容等一系列功能。

  • 易运维

使用 DBPlusEngine-Operator 将不用人为干预 DBPlusEngine-Proxy 在集群中的状态,DBPlusEngine-Operator 会自动检测集群状态并纠正。

逻辑架构 #

逻辑架构

安装 DBPlusEngine-Operator #

配置[Operator Parameters](#Operator Parameters),配置文件位置 shardingsphere-operator/values.yaml。

执行

kubectl create ns  dbplusengine-operator
helm install dbplusengine-operator dbplusengine-operator -n dbplusengine-operator

安装 DBPlusEngine-Proxy cluster #

配置[Cluster Parameters](#Cluster Parameters),配置文件位置 shardingsphere-cluster/values.yaml。

将 sphere-ex.license 移动至 shardingsphere-cluster/license ,并保持命名 sphere-ex.license。

kubectl create ns  dbplusengine
helm install  dbplusengine-proxy dbplusengine-proxy -n dbplusengine

Operator Parameters

DBPlusEngine-Proxy operator parameters

NameDescriptionValue
replicaCountoperator 副本数2
image.repositoryoperator 镜像名sphereex/dbplusengine-operator
image.pullPolicy镜像拉取策略IfNotPresent
image.tag镜像tag0.0.1
imagePullSecrets私有仓库镜像拉取密钥[]
resourcesoperator 需要的资源{}
webhook.portoperator webhook启动端口9443
health.healthProbePortoperator 健康检查端口8081

Cluster Parameters

DBPlusEngine-Proxy cluster parameters

NameDescriptionValue
replicaCountDBPlusEngine-Operator-Cluster 集群启动副本数,注意:在开启 automaticScaling 后,这个参数将不再生效"1"
automaticScaling.enableDBPlusEngine-Operator-Cluster 集群是否开启自动扩缩容false
automaticScaling.scaleUpWindowsDBPlusEngine-Operator-Cluster 自动扩容稳定窗口30
automaticScaling.scaleDownWindowsDBPlusEngine-Operator-Cluster 自动缩容稳定窗口30
automaticScaling.targetDBPlusEngine-Operator-Cluster 自动扩缩容阈值,数值为百分比,注意:现阶段暂时只支持 cpu 为指标进行扩缩容70
automaticScaling.maxInstanceDBPlusEngine-Operator-Cluster 最大扩容副本数4
automaticScaling.minInstanceDBPlusEngine-Operator-Cluster 最小启动副本数,缩容不会小于这个副本数1
image.registryDBPlusEngine-Operator-Cluster 镜像hostdocker.io
image.repositoryDBPlusEngine-Operator-Cluster 镜像仓库名sphereex/dbplusengine-proxy
image.tagDBPlusEngine-Operator-Cluster 镜像tag5.1.2
resourcesDBPlusEngine-Operator-Cluster 启动需求资源,在开启automaticScaling 后,以 request 的资源乘以 target 的百分比为触发扩缩容动作的实际使用率{}
service.typeDBPlusEngine-Operator-Cluster 对外暴露方式ClusterIP
service.portDBPlusEngine-Operator-Cluster 对外暴露端口3307
startPortDBPlusEngine-Operator-Cluster 启动端口3307
imagePullSecretsDBPlusEngine-Operator-Cluster 私有镜像仓库密钥[]
mySQLDriver.versionDBPlusEngine-Operator-Cluster mysql 驱动版本,如果为空,将不下载驱动""
GN.modeDBPlusEngine-Operator-Cluster 治理中心模式,支持 sidecar / zookeeperzookeeper
GN.SidecarRegistryDBPlusEngine-Operator-Cluster sidecar 模式镜像 host<镜像仓库host>
GN.SidecarRepositoryDBPlusEngine-Operator-Cluster sidecar 模式镜像仓库名sphereex/dbplusengine-sidecar
GN.SidecarTagDBPlusEngine-Operator-Cluster sidecar 模式镜像 tag0.2.0
GN.sidecarServerAddrDBPlusEngine-Operator-Cluster sidecar 模式镜像服务端地址服务端地址
withAgentDBPlusEngine-Operator-Cluster 是否启动agent参数false

计算节点 DBPlusEngine-Proxy Server 配置 权限配置项

NameDescriptionValue
serverConfig.authority.privilege.type存储节点数据授权的权限提供者类型,缺省值为 ALL_PERMITTEDALL_PERMITTED
serverConfig.authority.users[0].password用于登录计算节点的密码root
serverConfig.authority.users[0].user用于登录计算节点的用户名,授权主机。格式: @ hostname 为 % 或空字符串表示不限制授权主机root@%

计算节点 DBPlusEngine-Proxy Server 配置 模式配置项

NameDescriptionValue
serverConfig.mode.type运行模式类型。 现阶段仅支持 Cluster 模式Cluster
serverConfig.mode.repository.props.namespace注册中心命名空间governance_ds
serverConfig.mode.repository.props.server-lists注册中心连接地址{{ printf "%s-zookeeper.%s:2181" .Release.Name .Release.Namespace }}
serverConfig.mode.repository.props.maxRetries客户端连接最大重试次数3
serverConfig.mode.repository.props.operationTimeoutMilliseconds客户端操作超时的毫秒数5000
serverConfig.mode.repository.props.retryIntervalMilliseconds重试间隔毫秒数500
serverConfig.mode.repository.props.timeToLiveSeconds临时数据失效的秒数60
serverConfig.mode.repository.type持久化仓库类型。 现阶段仅支持 ZooKeeperZooKeeper

说明: 支持设置 CGROUP_MEM_OPTS 环境变量: 用于在容器环境中设置相关内存参数,脚本中的默认值为:

-XX:InitialRAMPercentage=80.0 -XX:MaxRAMPercentage=80.0 -XX:MinRAMPercentage=80.0

治理节点 ZooKeeper 配置项

配置项描述
zookeeper.enabled用来切换是否使用 ZooKeeper 的 charttrue
zookeeper.replicaCountZooKeeper 节点数量1
zookeeper.persistence.enabled标识 ZooKeeper 是否使用持久卷申领 (PersistentVolumeClaim) 用来申请持久卷(PersistentVolume)false
zookeeper.persistence.storageClass持久卷(PersistentVolume)的存储类 (StorageClass)""
zookeeper.persistence.accessModes持久卷(PersistentVolume)的访问模式["ReadWriteOnce"]
zookeeper.persistence.size持久卷(PersistentVolume) 大小8Gi

配置示例 #

dbplusengine-operator/values.yaml

## @section DBPlusEngine-Operator-Cluster operator parameters
## @param replicaCount operator 副本数
##
replicaCount: 2
image:
  ## @param image.repository operator 镜像名
  ##
  repository: "sphere-ex/dbplusengine-operator"
  ## @param image.pullPolicy 镜像拉取策略
  ##
  pullPolicy: IfNotPresent
  # Overrides the image tag whose default is the chart appVersion.
  ## @param image.tag 镜像tag
  ##
  tag: "0.1.0"
## @param imagePullSecrets 私有仓库镜像拉取密钥
## e.g:
## imagePullSecrets:
##   - name: mysecret
##
imagePullSecrets: []
## @param resources operator 需要的资源
## e.g:
## resources:
##   limits:
##     cpu: 2
##   limits:
##     cpu: 2
##
resources: {}
## @param webhook.port operator webhook启动端口
##
webhook:
  port: 9443
## @param health.healthProbePort operator 健康检查端口
##
health:
  healthProbePort: 8081

dbplusengine-proxy/values.yaml

#
# Copyright © 2022,Beijing Sifei Software Technology Co., LTD.
# All Rights Reserved.
# Unauthorized copying of this file, via any medium is strictly prohibited.
# Proprietary and confidential
#

# @section DBPlusEngine-Proxy cluster parameters
## @param replicaCount DBPlusEngine-Proxy 集群启动副本数,注意:在开启 automaticScaling 后,这个参数将不再生效
##
replicaCount: "2"

#
##
##
GN:
  mode: zookeeper
  SidecarRegistry: uhub.service.ucloud.cn
  SidecarRepository: sphere-ex/dbplusengine-sidecar
  SidecarTag: "0.2.0"
  sidecarServerAddr: "so-dbplusengine-operator.ss"
## @param automaticScaling.enable DBPlusEngine-Proxy 集群是否开启自动扩缩容
## @param automaticScaling.scaleUpWindows DBPlusEngine-Proxy 自动扩容稳定窗口
## @param automaticScaling.scaleDownWindows DBPlusEngine-Proxy 自动缩容稳定窗口
## @param automaticScaling.target DBPlusEngine-Proxy 自动扩缩容阈值,数值为百分比,注意:现阶段暂时只支持 cpu 为指标进行扩缩容
## @param automaticScaling.maxInstance DBPlusEngine-Proxy 最大扩容副本数
## @param automaticScaling.minInstance DBPlusEngine-Proxy 最小启动副本数,缩容不会小于这个副本数
##
automaticScaling:
  enable: false
  scaleUpWindows: 30
  scaleDownWindows: 30
  target: 20
  maxInstance: 4
  minInstance: 1
## @param image.registry DBPlusEngine-Proxy 镜像host
## @param image.repository DBPlusEngine-Proxy 镜像仓库名
## @param image.tag DBPlusEngine-Proxy 镜像tag
##
image:
  registry: uhub.service.ucloud.cn
  repository: sphere-ex/dbplusengine-proxy
  tag: "1.2.0"
withAgent: false
## @param resources DBPlusEngine-Proxy 启动需求资源,在开启automaticScaling 后,以 request 的资源乘以 target 的百分比为触发扩缩容动作的实际使用率
## e.g:
## resources:
##   limits:
##     cpu: 2
##   requests:
##     cpu: 2
##
resources:
  limits:
    cpu: '2'
  requests:
    cpu: '2'
## @param service.type DBPlusEngine-Proxy 对外暴露方式
## @param service.port DBPlusEngine-Proxy 对外暴露端口
##
service:
  type: ClusterIP
  port: 3307
## @param startPort DBPlusEngine-Proxy 启动端口
##
startPort: 3307
## @param imagePullSecrets DBPlusEngine-Proxy 私有镜像仓库密钥
## e.g:
## imagePullSecrets:
##   - name: mysecret
##
imagePullSecrets:
  username: ""
  password: ""
## @param mySQLDriver.version DBPlusEngine-Proxy mysql 驱动版本,如果为空,将不下载驱动
##
mySQLDriver:
  version: "5.1.43"
## @section  DBPlusEngine-Proxy ServerConfiguration parameters
## NOTE: If you use the sub-charts to deploy Zookeeper, the server-lists field must be "{{ printf \"%s-zookeeper.%s:2181\" .Release.Name .Release.Namespace }}",
## otherwise please fill in the correct zookeeper address
## The global.yaml is auto-generated based on this parameter.
## If it is empty, the global.yaml is also empty.
## ref: https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-jdbc/yaml-config/mode/
## ref: https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-jdbc/builtin-algorithm/metadata-repository/
##
serverConfig:
  ## @section Compute-Node DBPlusEngine-Proxy ServerConfiguration authority parameters
  ## NOTE: It is used to set up initial user to login compute node, and authority data of storage node.
  ## @param serverConfig.authority.privilege.type authority provider for storage node, the default value is ALL_PERMITTED
  ## @param serverConfig.authority.users[0].password Password for compute node.
  ## @param serverConfig.authority.users[0].user Username,authorized host for compute node. Format: <username>@<hostname> hostname is % or empty string means do not care about authorized host
  ##
  authority:
    privilege:
      type: ALL_PERMITTED
    users:
      - password: root
        user: root@%
  ## @section Compute-Node DBPlusEngine-Proxy ServerConfiguration mode Configuration parameters
  ## @param serverConfig.mode.type Type of mode configuration. Now only support Cluster mode
  ## @param serverConfig.mode.repository.props.namespace Namespace of registry center
  ## @param serverConfig.mode.repository.props.server-lists Server lists of registry center
  ## @param serverConfig.mode.repository.props.maxRetries Max retries of client connection
  ## @param serverConfig.mode.repository.props.operationTimeoutMilliseconds Milliseconds of operation timeout
  ## @param serverConfig.mode.repository.props.retryIntervalMilliseconds Milliseconds of retry interval
  ## @param serverConfig.mode.repository.props.timeToLiveSeconds Seconds of ephemeral data live
  ## @param serverConfig.mode.repository.type Type of persist repository. Now only support ZooKeeper

  ##
#  mode:
#    repository:
#      props:
#        namespace: matenamespace
#        server-lists: "127.0.0.1:21506"
#      type: SphereEx:MATE
#    type: Cluster
  mode:
    repository:
      props:
        maxRetries: 3
        namespace: governance_ds
        operationTimeoutMilliseconds: 5000
        retryIntervalMilliseconds: 500
        server-lists: "{{ printf \"%s-zookeeper.%s:2181\" .Release.Name .Release.Namespace }}"
        timeToLiveSeconds: 600
      type: ZooKeeper
    type: Cluster
## @section ZooKeeper chart parameters

## ZooKeeper chart configuration
## https://github.com/bitnami/charts/blob/master/bitnami/zookeeper/values.yaml
##
zookeeper:
  ## @param zookeeper.enabled Switch to enable or disable the ZooKeeper helm chart
  ##
  enabled: true
  ## @param zookeeper.replicaCount Number of ZooKeeper nodes
  ##
  replicaCount: 1
  ## ZooKeeper Persistence parameters
  ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/
  ## @param zookeeper.persistence.enabled Enable persistence on ZooKeeper using PVC(s)
  ## @param zookeeper.persistence.storageClass Persistent Volume storage class
  ## @param zookeeper.persistence.accessModes Persistent Volume access modes
  ## @param zookeeper.persistence.size Persistent Volume size
  ##
  persistence:
    enabled: false
    storageClass: ""
    accessModes:
      - ReadWriteOnce
    size: 8Gi

清理 #

helm uninstall dbplusengine-proxy -n dbplusengine

helm uninstall dbplusengine-operator -n dbplusengine-operator

kubectl delete crd clusters.dbplusengine.sphere-ex.com \
proxyconfigs.dbplusengine.sphere-ex.com \
plocks.dbplusengine.sphere-ex.com \
pmetadata.dbplusengine.sphere-ex.com \
pnodes.dbplusengine.sphere-ex.com \
ppipelines.dbplusengine.sphere-ex.com \
psys.dbplusengine.sphere-ex.com \
pworkids.dbplusengine.sphere-ex.com