容器化部署与管理 #
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 | 用来切换是否使用治理节点的 chart | true |
治理节点–ZooKeeper 配置项 #
配置项 | 描述 | 值 |
---|---|---|
governance.zookeeper.enabled | 用来切换是否使用 ZooKeeper 的 chart | true |
governance.zookeeper.replicaCount | ZooKeeper 节点数量 | 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.limits | ZooKeeper 容器的资源限制 | {} |
governance.zookeeper.resources.requests.memory | ZooKeeper 容器申请的内存 | 256Mi |
governance.zookeeper.resources.requests.cpu | ZooKeeper 容器申请的 cpu 核数 | 250m |
计算节点–SphereEx-DBPlusEngine-Proxy 配置项 #
配置项 | 描述 | 值 |
---|---|---|
compute.image.repository | SphereEx-DBPlusEngine-Proxy 的镜像名 | apache/shardingsphere-proxy |
compute.image.pullPolicy | SphereEx-DBPlusEngine-Proxy 镜像拉取策略 | IfNotPresent |
compute.image.tag | SphereEx-DBPlusEngine-Proxy 镜像标签 | 5.1.2 |
compute.imagePullSecrets.username | 拉取私有仓库的用户名 | "" |
compute.imagePullSecrets.password | 拉取私有仓库的密码 | "" |
compute.resources.limits | SphereEx-DBPlusEngine-Proxy 容器的资源限制 | {} |
compute.resources.requests.memory | SphereEx-DBPlusEngine-Proxy 容器申请的内存 | 2Gi |
compute.resources.requests.cpu | SphereEx-DBPlusEngine-Proxy 容器申请的 cpu 核数 | 200m |
compute.replicas | SphereEx-DBPlusEngine-Proxy 节点个数 | 3 |
compute.service.type | SphereEx-DBPlusEngine-Proxy 网络模式 | ClusterIP |
compute.service.port | SphereEx-DBPlusEngine-Proxy 暴露端口 | 3307 |
compute.mysqlConnector.version | MySQL 驱动版本 | 5.1.49 |
compute.startPort | SphereEx-DBPlusEngine-Proxy 启动端口 | 3307 |
compute.agent.enabled | SphereEx-DBPlusEngine-Proxy Engine 启动配置 | false |
compute.serverConfig | SphereEx-DBPlusEngine-Proxy 模式配置文件 | "" |
计算节点 DBPlusEngine-Proxy Server 配置 权限配置项 #
配置项 | 描述 | 值 |
---|---|---|
serverConfig.authority.privilege.type | 存储节点数据授权的权限提供者类型,缺省值为 ALL_PERMITTED | ALL_PERMITTED |
serverConfig.authority.users[0].password | 用于登录计算节点的密码 | root |
serverConfig.authority.users[0].user | 用于登录计算节点的用户名,授权主机。格式: | 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 | 持久化仓库类型。 现阶段仅支持 ZooKeeper | ZooKeeper |
计算节点 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 也会被搁置。
原理图:
参数解释 #
Name | Description | Default Value |
---|---|---|
automaticScaling.enable | SphereEx-DBPlusEngine-Proxy集群是否开启自动扩缩容 | FALSE |
automaticScaling.scaleUpWindows | SphereEx-DBPlusEngine-Proxy 自动扩容稳定窗口 | 30 |
automaticScaling.scaleDownWindows | SphereEx-DBPlusEngine-Proxy 自动缩容稳定窗口 | 30 |
automaticScaling.target | SphereEx-DBPlusEngine-Proxy 自动扩缩容阈值,数值为百分比,注意:现阶段暂时只支持 cpu 为指标进行扩缩容 | 70 |
automaticScaling.maxInstance | SphereEx-DBPlusEngine-Proxy 最大扩容副本数 | 4 |
automaticScaling.minInstance | SphereEx-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
Name | Description | Value |
---|---|---|
replicaCount | operator 副本数 | 2 |
image.repository | operator 镜像名 | sphereex/dbplusengine-operator |
image.pullPolicy | 镜像拉取策略 | IfNotPresent |
image.tag | 镜像tag | 0.0.1 |
imagePullSecrets | 私有仓库镜像拉取密钥 | [] |
resources | operator 需要的资源 | {} |
webhook.port | operator webhook启动端口 | 9443 |
health.healthProbePort | operator 健康检查端口 | 8081 |
Cluster Parameters
DBPlusEngine-Proxy cluster parameters
Name | Description | Value |
---|---|---|
replicaCount | DBPlusEngine-Operator-Cluster 集群启动副本数,注意:在开启 automaticScaling 后,这个参数将不再生效 | "1" |
automaticScaling.enable | DBPlusEngine-Operator-Cluster 集群是否开启自动扩缩容 | false |
automaticScaling.scaleUpWindows | DBPlusEngine-Operator-Cluster 自动扩容稳定窗口 | 30 |
automaticScaling.scaleDownWindows | DBPlusEngine-Operator-Cluster 自动缩容稳定窗口 | 30 |
automaticScaling.target | DBPlusEngine-Operator-Cluster 自动扩缩容阈值,数值为百分比,注意:现阶段暂时只支持 cpu 为指标进行扩缩容 | 70 |
automaticScaling.maxInstance | DBPlusEngine-Operator-Cluster 最大扩容副本数 | 4 |
automaticScaling.minInstance | DBPlusEngine-Operator-Cluster 最小启动副本数,缩容不会小于这个副本数 | 1 |
image.registry | DBPlusEngine-Operator-Cluster 镜像host | docker.io |
image.repository | DBPlusEngine-Operator-Cluster 镜像仓库名 | sphereex/dbplusengine-proxy |
image.tag | DBPlusEngine-Operator-Cluster 镜像tag | 5.1.2 |
resources | DBPlusEngine-Operator-Cluster 启动需求资源,在开启automaticScaling 后,以 request 的资源乘以 target 的百分比为触发扩缩容动作的实际使用率 | {} |
service.type | DBPlusEngine-Operator-Cluster 对外暴露方式 | ClusterIP |
service.port | DBPlusEngine-Operator-Cluster 对外暴露端口 | 3307 |
startPort | DBPlusEngine-Operator-Cluster 启动端口 | 3307 |
imagePullSecrets | DBPlusEngine-Operator-Cluster 私有镜像仓库密钥 | [] |
mySQLDriver.version | DBPlusEngine-Operator-Cluster mysql 驱动版本,如果为空,将不下载驱动 | "" |
GN.mode | DBPlusEngine-Operator-Cluster 治理中心模式,支持 sidecar / zookeeper | zookeeper |
GN.SidecarRegistry | DBPlusEngine-Operator-Cluster sidecar 模式镜像 host | <镜像仓库host> |
GN.SidecarRepository | DBPlusEngine-Operator-Cluster sidecar 模式镜像仓库名 | sphereex/dbplusengine-sidecar |
GN.SidecarTag | DBPlusEngine-Operator-Cluster sidecar 模式镜像 tag | 0.2.0 |
GN.sidecarServerAddr | DBPlusEngine-Operator-Cluster sidecar 模式镜像服务端地址 | 服务端地址 |
withAgent | DBPlusEngine-Operator-Cluster 是否启动agent参数 | false |
计算节点 DBPlusEngine-Proxy Server 配置 权限配置项
Name | Description | Value |
---|---|---|
serverConfig.authority.privilege.type | 存储节点数据授权的权限提供者类型,缺省值为 ALL_PERMITTED | ALL_PERMITTED |
serverConfig.authority.users[0].password | 用于登录计算节点的密码 | root |
serverConfig.authority.users[0].user | 用于登录计算节点的用户名,授权主机。格式: | root@% |
计算节点 DBPlusEngine-Proxy Server 配置 模式配置项
Name | Description | Value |
---|---|---|
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 | 持久化仓库类型。 现阶段仅支持 ZooKeeper | ZooKeeper |
说明: 支持设置 CGROUP_MEM_OPTS 环境变量: 用于在容器环境中设置相关内存参数,脚本中的默认值为:
-XX:InitialRAMPercentage=80.0 -XX:MaxRAMPercentage=80.0 -XX:MinRAMPercentage=80.0
治理节点 ZooKeeper 配置项
配置项 | 描述 | 值 |
---|---|---|
zookeeper.enabled | 用来切换是否使用 ZooKeeper 的 chart | true |
zookeeper.replicaCount | ZooKeeper 节点数量 | 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