diff --git a/product/zh/docs-mogdb-stack/v3.0/architecture/backuping.md b/product/zh/docs-mogdb-stack/v3.0/architecture/backuping.md new file mode 100644 index 0000000000000000000000000000000000000000..1e499692cc5eb3791896d260d0d28db62120d94b --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/architecture/backuping.md @@ -0,0 +1,71 @@ +--- +title: 高可用架构 +summary: 高可用架构 +author: Ji Yabin +date: 2023-07-04 +--- + +## 备份管理 + +MogDB Stack使用Mogdb内置的工具集执行备份和恢复功能,支持物理备份、逻辑备份,分别适用于不同的应用场景。最小化集群安装模式下,集群备份功能默认未开启,如果后续需要开启此功能,可以向系统提交相关配置yaml,即可实时开启备份功能。 + +MogDB Stack提供了备份的保留期限,用户可根据实际的业务需求,配置保留的必要备份集数量,节省远程存储的使用空间。 + +支持手动备份和周期性备份模式: + +- 手动备份:可以指定单次的备份,系统对于备份仅执行一次,如果需要再次执行,需要重置备份id。 +- 周期性备份:提供与crontab一致的时间描述方式,系统会根据配置,周期性调度备份任务。 + +同时,支持两种不同的备份方式: + +- 物理备份:备份文件以物理页的形式存放,这种备份方式一般速度较快,但只能导入同版本数据库。 +- 逻辑备份:备份文件以SQL命令形式的存放,一般可用于跨版本数据库的数据导入。 + +以下是备份的架构图: + +![备份](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v3.0.0/backup.png) + +其中: + +- CR: 备份配置作为mogdbcluster的一个配置项,用户只需要提供对应的字段,并提交到k8s系统,即可生效。 +- mogdbcluster controller: mogdbcluster控制器捕获到配置变更,触发备份相关的处理流。 +- cronjob controller:Kubernetes平台标准的控制器,用于周期性任务的调度。 +- job:实际执行备份的任务资源,会包含备份相关的程序,执行具体的备份任务。 +- s3:备份转储的外部存储。 + +## 恢复 + +恢复是MogDB Stack重要的功能模块,负责MogDB集群的可靠性。它通过读取远程存储的备份集数据,恢复出满足业务需求的完整数据库。 + +恢复的应用场景: + +- 数据误删除 +- 数据错乱 +- 数据迁移 +- 集群克隆 + +MogDB Stack支持两种恢复模式: + +- 基于文件的恢复 +- 基于PITR的恢复 + +## 远程存储 + +MogDB Stack支持常见的远程存储,用于转储备份文件: + +- Amazon S3 +- Minio +- Google Cloud Storage +- Google Drive +- Google Photos +- HDFS +- Ceph +- FTP +- OpenStack Swift +- QingStor +- Qiniu Cloud Object Storage (Kodo) +- SFTP +- Tencent Cloud Object Storage (COS) +- etc. + +以上列出的远程存储,只是常见的部分存储,完整的存储支持列表,请参考[Rclone官方文档](https://rclone.org/#providers) \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/architecture/high-availability.md b/product/zh/docs-mogdb-stack/v3.0/architecture/high-availability.md new file mode 100644 index 0000000000000000000000000000000000000000..44a22ff964e2e3ab5550b9c6f202ae3b4582c92a --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/architecture/high-availability.md @@ -0,0 +1,37 @@ +--- +title: 高可用架构 +summary: 高可用架构 +author: Ji Yabin +date: 2023-07-04 +--- + +高可用是 MogDB Stack 体系中的一个功能组件,以哨兵模式运行,提供命令行管理工具。支持以下功能: + +- 故障检测: + + 通过向MogDB写入心跳表,并周期性更新心跳信息,探测MogDB存活状态。提供了三种心跳状态,可读、可写、可执行。 + +- 故障转移: + + 当检测到主库出现故障,并且持续了一段时间,系统会触发切换逻辑,通过选取最优的候选节点,提升为主库,完成故障切换。 + +- 故障修复: + + 当备库出现复制链路异常,系统会尝试修复复制状态,也会build数据,重新建立复制关系。 + +发生切换的场景包括: + +- 机架掉电 +- 主库网络不可达 +- 数据库发生故障宕机 +- 数据库磁盘故障或者某些硬件故障 + +以下是高可用的架构图: + +高可用 + +包含以下功能组件: + +- agent: 负责上报心跳信息,以及执行manager下发的的任务。 +- Manager: 系统的控制中心,负责心跳信息的分析决策,执行故障转移。 +- portal/ctl: 系统的入口,用户通过命令行或web界面发送任务,任务最终传递到Manager中,由Manager负责任务的管理。 diff --git a/product/zh/docs-mogdb-stack/v3.0/architecture/monitoring.md b/product/zh/docs-mogdb-stack/v3.0/architecture/monitoring.md new file mode 100644 index 0000000000000000000000000000000000000000..9350996080f86b911a0ff9413fe80b5da399fdee --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/architecture/monitoring.md @@ -0,0 +1,109 @@ +--- +title: 监控 +summary: 监控 +author: Ji Yabin, hhhhhzhen +date: 2023-07-22 + +--- + +# 监控与告警 + +本文介绍如何对 Kubernetes 集群进行监控。在 MogDB 集群运行的过程中,需要对容器资源、宿主机、Kubernetes 组件等进行监控。对于这些组件或资源的监控,需要在整个 Kubernetes 集群维度部署监控系统来实现。 + +
+ +## 架构 + +监控告警共包含四个维度: + +- 宿主机指标 +- 容器指标 +- Kubernetes 资源状态 +- MogDB 集群状态 + +![deploy-arch](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v1.0.0/monitor.png) + +## 宿主机监控 + +通过 node exporter 对物理机指标进行采集,统一抓取到 prometheus 中。Node Exporter 是 Prometheus 官方提供的一个节点资源采集组件,可以用于收集服务器节点的数据,如 CPU 频率信息、磁盘 IO 统计、剩余可用内存等等。Node Exporter 会将收集到的信息转换为 Prometheus 可识别的 Metrics 数据。Prometheus 可以从 Node Exporter 中对这些指标进行收集与存储,并且可以根据这些数据的实时变化进行服务器节点资源监控。 + +
+ +## 容器监控 + +cAdvisor 是 Google 开源的容器资源监控和性能分析工具,它是专门为容器而生,在 Kubernetes 中,我们不需要单独去安装,cAdvisor 作为 kubelet 内置的一部分程序可以直接使用,也就是我们可以直接使用 cAdvisor 采集数据,可以采集到和容器运行相关的所有指标。 + +cadvisor 中获取到的典型监控指标如下: + +| 指标名称 | 类型 | 含义 | +| -------------------------------------- | ------- | -------------------------------------------- | +| container_cpu_load_average_10s | gauge | 过去10秒容器CPU的平均负载 | +| container_cpu_usage_seconds_total | counter | 容器在每个CPU内核上的累积占用时间 (单位:秒) | +| container_cpu_system_seconds_total | counter | System CPU累积占用时间(单位:秒) | +| container_cpu_user_seconds_total | counter | User CPU累积占用时间(单位:秒) | +| container_fs_usage_bytes | gauge | 容器中文件系统的使用量(单位:字节) | +| container_fs_limit_bytes | gauge | 容器可以使用的文件系统总量(单位:字节) | +| container_fs_reads_bytes_total | counter | 容器累积读取数据的总量(单位:字节) | +| container_fs_writes_bytes_total | counter | 容器累积写入数据的总量(单位:字节) | +| container_memory_max_usage_bytes | gauge | 容器的最大内存使用量(单位:字节) | +| container_memory_usage_bytes | gauge | 容器当前的内存使用量(单位:字节) | +| container_spec_memory_limit_bytes | gauge | 容器的内存使用量限制 | +| machine_memory_bytes | gauge | 当前主机的内存总量 | +| container_network_receive_bytes_total | counter | 容器网络累积接收数据总量(单位:字节) | +| container_network_transmit_bytes_total | counter | 容器网络累积传输数据总量(单位:字节) | + +
+ +## 资源对象监控 + +kube-state-metrics 提供资源对象本身的监控,如 pod 运行状态、有多少 job 在运行中等等,它基于 client-go 开发,轮询 Kubernetes API,并将 Kubernetes 的结构化信息转换为 metrics。 + +指标类别包括: + +- CronJob Metrics + +- DaemonSet Metrics + +- Deployment Metrics + +- Job Metrics + +- LimitRange Metrics + +- Node Metrics + +- PersistentVolume Metrics + +- PersistentVolumeClaim Metrics + +- Pod Metrics + +- Pod Disruption Budget Metrics + +- ReplicaSet Metrics + +- ReplicationController Metrics + +- ResourceQuota Metrics + +- Service Metrics + +- StatefulSet Metrics + +- Namespace Metrics + +- Horizontal Pod Autoscaler Metrics + +- Endpoint Metrics + +- Secret Metrics + +- ConfigMap Metrics + +
+ +## MogDB 监控 + +为了获取 MogDB 自身的监控指标,需要配套的 MogDB exporter 采集相应的数据。 + +
\ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/architecture/overview.md b/product/zh/docs-mogdb-stack/v3.0/architecture/overview.md new file mode 100644 index 0000000000000000000000000000000000000000..537aeaaab99ffc058fbd9015948c43d8be5de6f8 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/architecture/overview.md @@ -0,0 +1,49 @@ +--- +title: MogDB Stack 架构 +summary: MogDB Stack 架构 +author: Ji Yabin +date: 2023-07-04 +--- + +# 架构 + +MogDB Stack提供了两种模式,分别是单机群模式和多集群模式。单机群模式适用于单一的Kubernetes集群,在整个Kubernetes内实现MogDB集群的生命周期管理,多集群模式提供了一种跨Kubernetes/机房的方案,满足用户对于跨机房的容灾要求。 + +## 单集群模式 + +单机群模式,一般指MogDB Stack所有组件部署在一套Kubernetes集群内,完成整个生命周期管理。以下是单机群模式的架构图: + +![单集群架构](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v3.0.0/single-datacenter.png) + +包含以下功能组件: + +- connector: 应用层连接数据库的api,如sharding-jdbc。 +- ingress: 外部应用访问Kubernetes内部服务的入口,提供四层、七层转发。 +- master service: Kubernetes内部读写服务,数据库的读写流量通过此service转发。 +- replicas service: Kubernetes内部只读服务,数据库的只读流量通过此service转发,具备负载均衡的能力。 +- MogDB Cluster: 运行在Kubernetes中的MogDB集群,以主备模式运行多个副本。 +- HA Manager: 高可用组件,负责MogDB的故障探测、故障转移。 +- operator: 集群生命周期管理模块,负责集群资源申请、回收、扩缩容等。 + +## 多集群模式 + +多集群模式,一般应用在多中心场景下,不同的数据中心运行着不同的Kubernetes集群,MogDB Cluster需要跨越数据中心部署。以下是多集群模式的架构图: + +![多集群架构](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v3.0.0/multi-datacenter.png) + +包含以下资源对象: + +- kubeconfig: Kubernetes的证书、权限等配置。 +- multi cluster: 用于描述用户期望的多集群/多中心的配置。 + +包含以下功能组件: + +- multi-operator: 多集群管理控制器,负责下发集群到各个数据中心。 +- single-operator: 单集群管理控制器,负责单一Kubernetes集群的MogDB Cluster生命周期管理。 +- MogDB Cluster: MogDB集群,多副本运行,其中每个节点以statefulset负载运行。 + +业务应用通过ingress入口转发到后端实际的数据库集群,具体流程架构图如下: + +![多集群流量转发架构](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v3.0.0/multi-datacenter-access.png) + +业务应用通过sharding-jdbc访问各个数据中心的后端数据库,sharding-jdbc支持配置多条访问链路,自动探测最新的主库路径。 diff --git a/product/zh/docs-mogdb-stack/v3.0/faq.md b/product/zh/docs-mogdb-stack/v3.0/faq.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/product/zh/docs-mogdb-stack/v3.0/installation/multi-helm.md b/product/zh/docs-mogdb-stack/v3.0/installation/multi-helm.md new file mode 100644 index 0000000000000000000000000000000000000000..d3e885d2a7ec46d06ed1f4c1b2856955aa5c7502 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/installation/multi-helm.md @@ -0,0 +1,720 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: 使用 helm 安装(多集群模式) +summary: 使用 helm 安装(多集群模式) +--- + +# 使用 helm 安装(多集群模式) + +本节提供了使用 helm 安装和配置 mogdb-stack `多 kubernetes 集群模式`的说明。 + +
+ +## 术语 + +提前了解以下术语将有助于您阅读本文档。 + +- 数据平面:数据层,mogdb 真实存在的位置; +- 数据中心:每个数据平面被称为一个数据中心; +- 控制平面:控制层,用于控制 mogdb 在多个数据中心上的分配逻辑; + +注意:控制平面、数据平面、数据中心均为逻辑概念。实际上,控制平面和数据平面出现在同一 kubernetes 集群中是被允许的,多个数据平面也可以同时出现在一个 kubernetes 集群中。**在生产环境中我们推荐将控制平面、数据平面分开部署。** + +
+ +## 前置条件 + +- 已准备一个控制平面 +- 已准备至少一个数据平面 +- 各平面之间 kubernetes 网络已互通 +- 已安装 [helm](https://helm.sh),具体请参考 +- 添加 [enmotech helm 发布仓](https://github.com/enmotech/charts) + +```shell +helm repo add enmotech https://enmotech.github.io/charts +``` + +​ 期望输出: + +```shell +$ helm repo add enmotech https://enmotech.github.io/charts +"enmotech" has been added to your repositories + +$ helm search repo enmotech +NAME CHART VERSION APP VERSION DESCRIPTION +enmotech/mogha 3.0.0 3.0.0 Helm chart for deploying MogDB Ha on Kubernetes +enmotech/mogdb-monitor 3.0.0 3.0.0 A Helm chart for Kubernetes +enmotech/mogdb-cluster 3.0.0 3.0.0 Helm chart for deploying MogDB Cluster on Kubernetes +enmotech/multi-cluster 3.0.0 3.0.0 Helm chart for deploying MogDB Multi Cluster on Kubernetes +enmotech/mogdb-operator 3.0.0 3.0.0 Helm chart for deploying MogDB Operator on Kubernetes +enmotech/multi-operator 3.0.0 3.0.0 Helm chart for deploying MogDB Multi Operator on Kubernetes +``` + +
+ +## 安装模式 + +在安装 mogdb-stack 中的 mogdb-operator 与 multi-operator 组件时,可以配置其管理整个 kubernetes 集群的 mogdb 集群,或仅允许其管理单个 kubernetes 命名空间中的 mogdb 集群。 + +在管理整个 kubernetes 集群的 mogdb 集群时,我们会创建 ClusterRole 与 ClusterRoleBinding。 + +但是当仅允许其管理单个 kubernetes 命名空间中的 mogdb 集群时,我们则会创建 Role 与 RoleBinding。 + +不论是集群模式还是命名空间模式,helm 都会自动帮助我们创建必须的资源。 + +**默认情况下为集群模式,如果要使用命名空间模式,只需指定 `singleNamespace=true` 即可。** + +
+ +## 配置 + +虽然默认的 helm chart 可以在大多数 kubernetes 环境中工作,但可能有必要根据您的特定需求进一步自定义。 + +我们的 Helm charts 为您提供了丰富的可自定义选项,有关这些选项的具体信息,请参考[参考/helm-charts](../references/helm-charts)。 + +
+ +## 控制平面安装 + +**注意:只能同时存在一个控制平面。** + +在开始之前,确保您已将 kubectl 的当前上下文切换到控制平面: + +```shell +kubectl config --kubeconfig use-context +``` + +期望输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context control-plane +Switched to context "control-plane". +``` + +
+ +### 1.安装 mogdb-ha + +**注意**: + +- mogdb-ha 组件是**必选的**; +- 如果您要将其用于生产环境,确保您已准备了**高可用 etcd 集群**,我们会在在后续安装时传递相关信息。 + +
+ +创建 namespace: + +```shell +kubectl create namespace +``` + +期望输出: + +```shell +$ kubectl create namespace mogdb-ha +namespace/mogdb-ha created +``` + +
+ +安装 mogdb-ha 组件,有关设置的详细信息说明请参考 [mogdb ha charts value](../references/charts/mogdb-ha): + +- 默认以**集群模式**安装 mogdb-ha: + +```shell +helm install enmotech/mogdb-ha -n [--set =...] +``` + +​ 期望输出(在本例中,关闭了 debug 日志,使用简化版 etcd,并设置 ha 容器的内存大小为 1Gi): + +```shell +$ helm install mogdb-ha helm/mogdb-ha -n mogdb-ha \ + --set debug=false \ + --set withEtcd=true \ + --set ha.resources.limits.memory=1Gi \ + --set ha.resources.requests.memory=1Gi +NAME: mogdb-ha +LAST DEPLOYED: Tue Jul 4 13:58:13 2023 +NAMESPACE: mogdb-ha +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Ha! +``` + +
+ +- 要以**命名空间模式**安装 mogdb-ha,请指定 `--set singleNamespace=true`: + +```shell +helm install enmotech/mogdb-ha -n --set singleNamespace=true [--set =...] +``` + +​ 期望输出(在本例中,关闭了 debug 日志,使用简化版 etcd,并设置 ha 容器的内存大小为 1Gi): + +```shell +$ helm install mogdb-ha helm/mogdb-ha -n mogdb-ha \ + --set singleNamespace=true \ + --set debug=false \ + --set withEtcd=true \ + --set ha.resources.limits.memory=1Gi \ + --set ha.resources.requests.memory=1Gi +NAME: mogdb-ha +LAST DEPLOYED: Tue Jul 4 13:58:13 2023 +NAMESPACE: mogdb-ha +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Ha! +``` + +
+ +检查相关组件是否运行正常: + +```shell +kubectl get all -n +``` + +期望输出: + +```shell +$ kubectl get all -n mogdb-ha +NAME READY STATUS RESTARTS AGE +pod/mogdb-ha-58fb655887-59q8z 2/2 Running 0 71s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-ha NodePort 10.96.7.215 6544/TCP 71s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-ha 1/1 1 1 71s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-ha-58fb655887 1 1 1 71s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +### 2.安装控制平面 multi-operator + +**注意**:multi-operator 组件是**必选的**; + +
+ +安装 CRD: + +**注意,在同一个 kubernetes 集群中,CRD 只需安装一次。** + +```shell +kubectl apply --server-side -k kustomize/multi-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/multi-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io/kubeclientconfigs.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/multiclusters.mogdb.enmotech.io serverside-applied +``` + +
+ +创建 namespace: + +```shell +kubectl create namespace +``` + +期望输出: + +```shell +$ kubectl create namespace control-plane +namespace/control-plane created +``` + +
+ +安装 multi-operator,有关设置的详细信息说明请参考 [multi operator charts value](../references/charts/mmulti-operator): + +- 默认以**集群模式**安装 multi-operator: + +```shell +helm install enmotech/multi-operator -n [--set =...] +``` + +​ 期望输出: + +```shell +$ helm install manager helm/multi-operator -n control-plane +NAME: manager +LAST DEPLOYED: Tue Jul 4 16:58:37 2023 +NAMESPACE: control-plane +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Multi Operator! +``` + +- 要以**命名空间模式**安装 multi-operator,请指定 `--set singleNamespace=true`,且指定ns为与context对应的namespace: + +```shell +helm install enmotech/multi-operator -n --set singleNamespace=true [--set =...] +``` + +​ 期望输出: + +```shell +$ helm install manager helm/multi-operator --set singleNamespace=true -n control-plane +NAME: manager +LAST DEPLOYED: Tue Jul 4 16:58:37 2023 +NAMESPACE: control-plane +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Multi Operator! +``` + +
+ +检查相关组件是否运行正常: + +```shell +kubectl get all -n +``` + +期望输出: + +```shell +$ kubectl get all -n control-plane +NAME READY STATUS RESTARTS AGE +pod/multi-operator-manager-758b65c869-bcnd7 1/1 Running 0 4s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/multi-operator-manager 1/1 1 1 4s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/multi-operator-manager-758b65c869 1 1 1 4s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +> 至此完成控制平面的安装。 + +
+ +## 数据平面安装 + +**注意:可以同时存在多个数据平面,如果您拥有多个数据平面,则只需切换至对应的上下文,并循环执行该小节。** + +**本小节以尾缀1代表数据平面1,其他数据平面可依次修改尾缀数字以区分不同数据平面** + +在开始之前,确保您已将 kubectl 的当前上下文切换到数据平面: + +```shell +kubectl config --kubeconfig use-context +``` + +期望输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context data-plane1 +Switched to context "data-plane1". +``` + +
+ +### 1.安装 mogdb-operator + +**注意**:mogdb-operator 组件是**必选的**; + +
+ +安装 CRD: + +**注意,在同一个 kubernetes 集群中,CRD 只需安装一次。** + +```shell +kubectl apply --server-side -k kustomize/mogdb-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/mogdb-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbclustertemplates.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbpodtemplates.mogdb.enmotech.io serverside-applied +``` + +
+ +创建 namespace: + +```shell +kubectl create namespace +``` + +期望输出: + +```shell +$ kubectl create namespace data-plane1 +namespace/data-plane1 created +``` + +
+ +安装 mogdb-operator,有关设置的详细信息说明请参考 [mogdb operator charts value](../references/charts/mogdb-operator): + +- 默认以**集群模式**安装 mogdb-operator: + +```shell +helm install enmotech/mogdb-operator -n [--set =...]#在不同数据平面应使用不同名字,可以加后缀数字来区分 +``` + +​ 期望输出: + +```shell +$ helm install manager1 helm/mogdb-operator -n data-plane1 +NAME: manager1 +LAST DEPLOYED: Tue Jul 4 17:14:17 2023 +NAMESPACE: data-plane1 +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Operator! +``` + +- 要以**命名空间模式**安装 mogdb-operator,请指定 `--set singleNamespace=true`: + +```shell +helm install enmotech/mogdb-operator -n --set singleNamespace=true [--set =...] +``` + +​ 期望输出: + +```shell +$ helm install manager1 helm/mogdb-operator --set singleNamespace=true -n data-plane1 +NAME: manager1 +LAST DEPLOYED: Tue Jul 4 17:14:17 2023 +NAMESPACE: data-plane1 +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Operator! +``` + +
+ +检查相关组件是否运行正常: + +```shell +kubectl get all -n +``` + +期望输出: + +```shell +$ kubectl get all -n data-plane1 +NAME READY STATUS RESTARTS AGE +pod/mogdb-operator-manager-68f7f7cb48-zbmfq 1/1 Running 0 47s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-operator-manager 1/1 1 1 47s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-operator-manager-68f7f7cb48 1 1 1 47s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +### 2.注册数据平面到控制平面 + +我们提供了注册到数据平面的脚本供您使用,其中--src相关的值与您使用的安装模式的context及namespace相关,请注意修改: + +```shell +./join-to-control-plane.sh \ +--output-dir ./build \ +--src-kubeconfig ~/.kube/config \ +--src-context data-plane1 \ +--src-namespace data-plane1 \ +--src-serviceaccount mogdb-operator-controller-manager \ +--dest-kubeconfig ~/.kube/config \ +--dest-context control-plane \ +--dest-namespace control-plane +``` + +其中各选项的含义如下: + +- --output-dir:脚本运行过程中生成文件的存放路径; +- --src-context:数据平面上下文,在本例中为 data-plane1; +- --src-kubeconfig:数据平面 kubeconfig 路径,在本例中为 ~/.kube/config; +- --src-namespace:数据平面所在命名空间,在本例中为 data-plane1; +- --src-serviceaccount:数据平面的 serviceaccount,用于控制控制平面对数据平面访问的权限,在本例中为 mogdb-operator-controller-manager; +- +- --dest-context:控制平面上下文,在本例中为 control-plane; +- --dest-kubeconfig:控制平面 kubeconfig 路径,在本例中为 ~/.kube/config; +- --dest-namespace:控制平面所在命名空间,在本例中为 control-plane; + +期望输出: + +```shell +$ ./join-to-control-plane.sh \ +--output-dir ./build \ +--src-kubeconfig ~/.kube/config \ +--src-context data-plane1 \ +--src-namespace data-plane1 \ +--src-serviceaccount mogdb-operator-controller-manager \ +--dest-kubeconfig ~/.kube/config \ +--dest-context control-plane \ +--dest-namespace control-plane + +Source cluster had localhost as the API server address; replacing with https://172.19.0.6:6443 +Creating KubeConfig at ./build/kubeconfig +Creating secret data-plane1 +Error from server (NotFound): secrets "data-plane1" not found +secret/data-plane1 created +Creating ClientConfig ./build/data-plane1.yaml +kubeclientconfig.mogdb.enmotech.io/data-plane1 created +``` + +
+ +### 3.安装multi-cluster + +```shell +helm install enmotech/multi-cluster -n --set enableControl=false [--set =...] +``` + +​ 期望输出: + +```shell +$ helm install multi-cluster helm/multi-cluster --set enableControl=false -n control-plane +NAME: multi-cluster +LAST DEPLOYED: Sat Jul 29 08:24:33 2023 +NAMESPACE: control-plane +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Multi Cluster! +``` + +
+ +> 至此完成数据平面的安装。 + +
+ +## 卸载 + +### 1.卸载数据平面组件 + +> 首先确保要卸载的数据平面上已无 mogdb 集群残留。 + +**卸载 multi-cluster** + +```shell +helm uninstall -n +``` + +期望输出: + +```shell +$ helm uninstall multi-cluster -n control-plane +release "multi-cluster" uninstalled +``` + +> 如果您拥有多个数据平面,则只需切换至对应的上下文,并循环执行该小节。 + +**切换到控制平面** + +解注册需要在控制平面进行,因此需要先切换到控制平面。 + +```shell +kubectl config --kubeconfig use-context +``` + +期望输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context control-plane +Switched to context "control-plane". +``` + +
+ +**解注册** + +```shell +kubectl delete kubeclientconfig.mogdb.enmotech.io/ -n +``` + +期望输出: + +```shell +$ kubectl delete kubeclientconfig.mogdb.enmotech.io/data-plane1 -n mogdb-operator-system +kubeclientconfig.mogdb.enmotech.io "data-plane1" deleted +``` + +
+ +**切换到数据平面** + +```shell +kubectl config --kubeconfig use-context +``` + +期望输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context data-plane1 +Switched to context "data-plane1". +``` + +
+ +**卸载 mogdb-operator** + +```shell +helm uninstall -n +``` + +期望输出: + +```shell +$ helm uninstall manager1 -n data-plane1 +release "manager1" uninstalled +``` + +
+ +**卸载 CRD** + +```shell +kubectl delete -k kustomize/mogdb-operator/bases/crd +kubectl delete -k kustomize/multi-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/mogdb-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io "mogdbclusters.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbclustertemplates.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbpodtemplates.mogdb.enmotech.io" deleted + +$ kubectl delete -k kustomize/multi-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io "kubeclientconfigs.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "multiclusters.mogdb.enmotech.io" deleted +``` + +
+ +**删除命名空间** + +```shell +kubectl delete namespace +``` + +期望输出: + +```shell +$ kubectl delete namespace data-plane1 +namespace "data-plane1" deleted +``` + +
+ +### 2.卸载控制平面组件 + +> 首先确保要卸载的控制平面上已无 mogdb 集群残留。 + +**切换到控制平面** + +```shell +kubectl config --kubeconfig use-context +``` + +期望输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context control-plane +Switched to context "control-plane". +``` + +
+ +**卸载 mogdb-ha** + +```shell +helm uninstall -n +``` + +期望输出: + +```shell +$ helm uninstall mogdb-ha -n mogdb-ha +release "mogdb-ha" uninstalled +``` + +
+ +**卸载 multi-operator** + +```shell +helm uninstall -n +``` + +期望输出: + +```shell +$ helm uninstall manager -n control-plane +release "manager" uninstalled +``` + +
+ +**卸载 CRD** + +```shell +kubectl delete -k kustomize/multi-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/multi-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io "kubeclientconfigs.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "multiclusters.mogdb.enmotech.io" deleted +``` + +
+ +**删除命名空间** + +```shell +kubectl delete namespace +``` + +期望输出: + +```shell +$ kubectl delete namespace mogdb-ha +namespace "mogdb-ha" deleted + +$ kubectl delete namespace control-plane +namespace "control-plane" deleted +``` diff --git a/product/zh/docs-mogdb-stack/v3.0/installation/multi-kustomize.md b/product/zh/docs-mogdb-stack/v3.0/installation/multi-kustomize.md new file mode 100644 index 0000000000000000000000000000000000000000..54f7e09d9d65e6c508178907204ef8b41f8ea796 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/installation/multi-kustomize.md @@ -0,0 +1,784 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: 使用 kustomize 安装(多集群模式) +summary: 使用 kustomize 安装(多集群模式) +--- + +# 使用 kustomize 安装(多集群模式) + +本节提供了使用 kustomize 安装和配置 mogdb-stack `多 kubernetes 集群模式`的说明。 + +
+ +## 术语 + +提前了解以下术语将有助于您阅读本文档。 + +- 控制平面:控制层, +- 数据平面:数据层,mogdb 真实存在的位置 +- 数据中心:每个数据平面被称为一个数据中心 + +注意:控制平面、数据平面、数据中心均为逻辑概念。实际上,控制平面和数据平面出现在同一 kubernetes 集群中是被允许的,多个数据平面也可以同时出现在一个 kubernetes 集群中。**在生产环境中我们推荐将控制平面、数据平面分开部署。** + +
+ +## 前置条件 + +- 已准备一个控制平面 +- 已准备至少一个数据平面 +- 各平面之间 kubernetes 网络已互通 +- 已安装 [kustomize](https://kustomize.io/) v3+:具体请参考 + +- 下载 mogdb-stack-examples 仓库 + +首先,在 GitHub 上 [fork mogdb-stack-examples](https://github.com/enmotech/mogdb-stack-examples/fork) 仓库: + + mogdb stack 的 kustomize 安装包。 + +之后,您可以通过类似如下的命令将仓库下载至本地: + +```shell +YOUR_GITHUB_UN="" +git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/mogdb-stack-examples.git" +cd mogdb-stack-examples +``` + +
+ +## 安装模式 + +在安装 mogdb-stack 中的 mogdb-operator 与 multi-operator 组件时,可以配置其管理整个 kubernetes 集群的 mogdb 集群,或仅允许其管理单个 kubernetes 命名空间中的 mogdb 集群。 + +在管理整个 kubernetes 集群的 mogdb 集群时,我们会创建 ClusterRole 与 ClusterRoleBinding。 + +但是当仅允许其管理单个 kubernetes 命名空间中的 mogdb 集群时,我们则会创建 Role 与 RoleBinding。 + +不论是集群模式还是命名空间模式,kustomize 都会自动帮助我们创建必须的资源。其中集群模式的 kustomization 文件位于各组件安装包的 `default` 文件夹中,命名空间模式的 kustomization 文件位于各组件安装包的 `singlenamespace` 文件夹中。 + +**因此,不论您选择哪种安装模式,都应该在自定义配置时修改对应文件夹中的内容,否则配置将不会生效。** + +
+ +## 配置 + +虽然默认的 kustomize 安装项目可以在大多数 kubernetes 环境中工作,但可能有必要根据您的特定需求进一步自定义 kustomize 项目。 + +例如,要自定义 stack 的镜像,可以修改位于 `kustomize/<具体组件>/install/default/kustomization.yaml` 文件中的 `images` 配置。 + +这里以基础组件 `mogdb-operator` 为例: + +```yaml +images: + - name: controller + newName: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-operator + newTag: 3.0.0 +``` + +
+ +请注意,kustomize 安装包还将默认为 mogdb-stack 创建一个/多个命名空间。要修改安装程序创建的命名空间的名称,应修改位于 `kustomize/<具体组件>/overlays/stable/kustomization.yaml` 文件中的 `namespace` 配置。 + +这里以基础组件 `mogdb-operator` 为例: + +```yaml +# Add namespace to all resources. +namespace: mogdb-operator-system +``` + +
+ +除此之外,您还可以使用 patches 等诸多 kustomize 提供的强大功能自定义您的 mogdb-stack,有关这些功能的详细信息请参考 [kustomize 官方文档](https://kubectl.docs.kubernetes.io/)。 + +
+ +## 控制平面安装 + +在根据您的特定需求完成每个组件的 kustomize 安装包自定义后,我们可以开始控制平面的安装。 + +**注意:只能同时存在一个控制平面。** + +在开始之前,确保您已将 kubectl 的当前上下文切换到控制平面: + +```shell +kubectl config --kubeconfig use-context +``` + +期望输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context control-plane +Switched to context "control-plane". +``` + +
+ +### 1.安装 mogdb-ha + +**注意**: + +- mogdb-ha 组件是**必选的**; +- 如果您要将其用于生产环境,确保您已准备了**高可用 etcd 集群**并在[配置](##配置)阶段完成了其相关配置。 + +
+ +创建 namespace: + +```shell +kubectl create namespace +``` + +期望输出: + +```shell +$ kubectl create namespace mogdb-ha +namespace/mogdb-ha created +``` + +
+ +安装 mogdb-ha 组件: + +```shell +kubectl apply --server-side -k kustomize/mogdb-ha/install +``` + +期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/mogdb-ha/install +namespace/mogdb-ha serverside-applied +serviceaccount/mogdb-ha serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-ha-role serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding serverside-applied +secret/mogdb-ha-huawei-registry serverside-applied +service/mogdb-ha serverside-applied +deployment.apps/mogdb-ha serverside-applied +``` + +
+ +检查相关组件是否运行正常: + +```shell +kubectl get all -n +``` + +期望输出: + +```shell +$ kubectl get all -n mogdb-ha +NAME READY STATUS RESTARTS AGE +pod/mogdb-ha-58fb655887-59q8z 2/2 Running 0 71s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-ha NodePort 10.96.7.215 6544:32544/TCP 71s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-ha 1/1 1 1 71s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-ha-58fb655887 1 1 1 71s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +### 2.安装控制平面 multi-operator + +**注意**: + +- multi-operator 组件是**必选的**; + +
+ +安装 CRD: + +**注意,在同一个 kubernetes 集群中,CRD 只需安装一次。** + +```shell +kubectl apply --server-side -k kustomize/multi-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/multi-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io/kubeclientconfigs.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/multiclusters.mogdb.enmotech.io serverside-applied +``` + +
+ +创建 namespace: + +```shell +kubectl create namespace +``` + +期望输出: + +```shell +$ kubectl create namespace control-plane +namespace/control-plane created +``` + +
+ +安装 multi-operator: + +- 要以**集群模式**安装 multi-operator,请使用位于 `default` 文件夹中的 kustomization 文件: + +```shell +kubectl apply --server-side -k kustomize/multi-operator/install-ctl-plane/default +``` + +​ 期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/multi-operator/install-ctl-plane/default +serviceaccount/mogdb-multi-serviceaccount serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-multi-leader-election-role serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-multi-manager-role serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-multi-leader-election-rolebinding serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-multi-manager-rolebinding serverside-applied +secret/mogdb-multi-multi-operator-huawei-registry serverside-applied +deployment.apps/mogdb-multi-manager serverside-applied +``` + +- 要以**命名空间模式**安装 multi-operator,请使用位于 `singlenamespace` 文件夹中的 kustomization 文件: + +```shell +kubectl apply --server-side -k kustomize/multi-operator/install-ctl-plane/singlenamespace +``` + +​ 期望输出 + +```shell +$ kubectl apply --server-side -k kustomize/multi-operator/install-ctl-plane/singlenamespace +serviceaccount/mogdb-multi-serviceaccount serverside-applied +role.rbac.authorization.k8s.io/mogdb-multi-leader-election-role serverside-applied +role.rbac.authorization.k8s.io/mogdb-multi-manager-role serverside-applied +rolebinding.rbac.authorization.k8s.io/mogdb-multi-leader-election-rolebinding serverside-applied +rolebinding.rbac.authorization.k8s.io/mogdb-multi-manager-rolebinding serverside-applied +secret/mogdb-multi-multi-operator-huawei-registry serverside-applied +deployment.apps/mogdb-multi-manager serverside-applied +``` + +
+ +检查相关组件是否运行正常: + +```shell +kubectl get all -n +``` + +期望输出: + +```shell +$ kubectl get all -n control-plane +NAME READY STATUS RESTARTS AGE +pod/mogdb-multi-manager-77587fd775-npf9d 1/1 Running 0 25s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-multi-manager 1/1 1 1 25s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-multi-manager-77587fd775 1 1 1 25s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +> 至此完成控制平面的安装。 + +
+ +## 数据平面安装 + +在根据您的特定需求完成每个组件的 kustomize 安装包自定义后,我们可以开始数据平面的安装。 + +**注意:可以同时存在多个数据平面,如果您拥有多个数据平面,则只需切换至对应的上下文,并循环执行该小节。** + +在开始之前,确保您已将 kubectl 的当前上下文切换到数据平面: + +```shell +kubectl config --kubeconfig use-context +``` + +期望输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context data-plane1 +Switched to context "data-plane1". +``` + +
+ +### 1.安装 mogdb-operator + +**注意**: + +- mogdb-operator 组件是**必选的**; + +
+ +安装 CRD: + +**注意,在同一个 kubernetes 集群中,CRD 只需安装一次。** + +```shell +kubectl apply --server-side -k kustomize/mogdb-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/mogdb-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbclustertemplates.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbpodtemplates.mogdb.enmotech.io serverside-applied +``` + +
+ +创建 namespace: + +```shell +kubectl create namespace +``` + +期望输出: + +```shell +$ kubectl create namespace data-plane1 +namespace/data-plane1 created +``` + +
+ +安装mogdb-operator: + +首先将以下几个文件的对应的值修改成和data-plane1相关: + +```shell +kustomize/mogdb-operator/install/singlenamespace/kustomization.yaml: +namespace:data-plane1 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/leader_election_role_binding.yaml: +value: mogdb-operator-system-leader-election-rolebinding-data-plane1 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/leader_election_role.yaml: +value: mogdb-operator-system-leader-election-role-data-plane1 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/manager_role_binding.yaml +value: mogdb-operator-system-manager-rolebinding-data-plane1 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/manager_role.yaml +value: mogdb-operator-system-manager-role-data-plane1 +``` + +
+ +安装 mogdb-operator: + +- 要以**集群模式**安装 mogdb-operator,请使用位于 `default` 文件夹中的 kustomization 文件: + +```shell +kubectl apply --server-side -k kustomize/mogdb-operator/install/default +``` + +​ 期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/mogdb-operator/install/default +serviceaccount/mogdb-operator-controller-manager serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-operator-leader-election-role serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding serverside-applied +configmap/mogdb-operator-global-config serverside-applied +configmap/mogdb-operator-rclone-config serverside-applied +secret/mogdb-operator-huawei-registry serverside-applied +secret/mogdb-operator-token serverside-applied +deployment.apps/mogdb-operator-manager serverside-applied +``` + +- 要以**命名空间模式**安装 mogdb-operator,请使用位于 `singlenamespace` 文件夹中的 kustomization 文件: + +```shell +kubectl apply --server-side -k kustomize/mogdb-operator/install/singlenamespace +``` + +​ 期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/mogdb-operator/install/default +serviceaccount/mogdb-operator-controller-manager serverside-applied +role.rbac.authorization.k8s.io/mogdb-operator-leader-election-role serverside-applied +role.rbac.authorization.k8s.io/mogdb-operator-manager-role serverside-applied +rolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding serverside-applied +rolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding serverside-applied +configmap/mogdb-operator-global-config serverside-applied +configmap/mogdb-operator-rclone-config serverside-applied +secret/mogdb-operator-huawei-registry serverside-applied +secret/mogdb-operator-token serverside-applied +deployment.apps/mogdb-operator-manager serverside-applied +``` + +
+ +检查相关组件是否运行正常: + +```shell +kubectl get all -n +``` + +期望输出: + +```shell +$ kubectl get all -n data-plane1 +NAME READY STATUS RESTARTS AGE +pod/mogdb-operator-manager-5b5c4bb8b8-z2l48 1/1 Running 0 32s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-operator-manager 1/1 1 1 32s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-operator-manager-5b5c4bb8b8 1 1 1 32s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +### 2.注册数据平面到控制平面 + +我们提供了注册到数据平面的脚本供您使用: + +```shell +./join-to-control-plane.sh \ +--output-dir ./build \ +--src-kubeconfig ~/.kube/config \ +--src-context data-plane1 \ +--src-namespace data-plane1 \ +--src-serviceaccount mogdb-operator-controller-manager \ +--dest-kubeconfig ~/.kube/config \ +--dest-context control-plane \ +--dest-namespace control-plane +``` + +其中各选项的含义如下: + +- --output-dir:脚本运行过程中生成文件的存放路径; +- --src-context:数据平面上下文,在本例中为 data-plane1; +- --src-kubeconfig:数据平面 kubeconfig 路径,在本例中为 ~/.kube/config; +- --src-namespace:数据平面所在命名空间,在本例中为 data-plane1; +- --src-serviceaccount:数据平面的 serviceaccount,用于控制控制平面对数据平面访问的权限,在本例中为 mogdb-operator-controller-manager; +- +- --dest-context:控制平面上下文,在本例中为 control-plane; +- --dest-kubeconfig:控制平面 kubeconfig 路径,在本例中为 ~/.kube/config; +- --dest-namespace:控制平面所在命名空间,在本例中为 control-plane; + +期望输出: + +```shell +% ./join-to-control-plane.sh \ +--output-dir ./build \ +--src-kubeconfig ~/.kube/config \ +--src-context data-plane1 \ +--src-namespace data-plane1 \ +--src-serviceaccount mogdb-operator-controller-manager \ +--dest-kubeconfig ~/.kube/config \ +--dest-context control-plane \ +--dest-namespace control-plane + +Source cluster had localhost as the API server address; replacing with https://172.19.0.6:6443 +Creating KubeConfig at ./build/kubeconfig +Creating secret data-plane1 +secrets "data-plane1" not found +secret/data-plane1 created +Creating ClientConfig ./build/data-plane1.yaml +kubeclientconfig.mogdb.enmotech.io/data-plane1 created +``` + +
+ +### 3.部署Multi Cluster + +```shell +kubectl apply --server-side -k kustomize/multi-cluster/install/default +``` + +期望输出: + +```shell +multicluster.mogdb.enmotech.io/multi-cluster created +``` + +查看Multi Cluster pod状态: + +```shell +kubectl get pods -A --selector='mogdb.enmotech.io/app=multi-operator' +``` + +查看结果: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane1 dc1-sts-259bm-0 2/2 Running 0 3h52m +data-plane1 dc1-sts-fxq24-0 2/2 Running 0 3h53m +data-plane2 dc2-sts-djsm2-0 2/2 Running 0 3h51m +data-plane2 dc2-sts-zbqxb-0 2/2 Running 0 3h51m +``` + +
+ +> 至此完成数据平面的安装。 + +
+ +## 卸载 + +### 1.删除多k8s集群的MogDB集群 + +```shell +kubectl delete -k kustomize/multi-cluster/install/default +``` + +期望输出: + +```text +mogdbcluster.mogdb.enmotech.io "mogdb-cluster" deleted +``` + +### 2.卸载数据平面组件 + +> 首先确保要卸载的数据平面上已无 mogdb 集群残留。 +> +> 如果您拥有多个数据平面,则只需切换至对应的上下文,并循环执行该小节。 + +**切换到控制平面** + +解注册需要在控制平面进行,因此需要先切换到控制平面。 + +```shell +kubectl config --kubeconfig use-context +``` + +期望输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context control-plane +Switched to context "control-plane". +``` + +
+ +**解注册** + +```shell +kubectl delete kubeclientconfig.mogdb.enmotech.io/ -n +``` + +期望输出: + +```shell +$ kubectl delete kubeclientconfig.mogdb.enmotech.io/data-plane1 -n mogdb-operator-system +kubeclientconfig.mogdb.enmotech.io "data-plane1" deleted +``` + +
+ +**切换到数据平面** + +```shell +kubectl config --kubeconfig use-context +``` + +期望输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context data-plane1 +Switched to context "data-plane1". +``` + +
+ +**卸载 multi-cluster** + +```shell +kubectl delete -k kustomize/multi-operator/install-ctl-plane/default +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/multi-operator/install-ctl-plane/default +serviceaccount/mogdb-multi-serviceaccount deleted +clusterrole.rbac.authorization.k8s.io/mogdb-multi-leader-election-role deleted +clusterrole.rbac.authorization.k8s.io/mogdb-multi-manager-role deleted +clusterrolebinding.rbac.authorization.k8s.io/mogdb-multi-leader-election-rolebinding deleted +clusterrolebinding.rbac.authorization.k8s.io/mogdb-multi-manager-rolebinding deleted +secret/mogdb-multi-multi-operator-huawei-registry deleted +deployment.apps/mogdb-multi-manager deleted +``` + +
+ +**卸载 mogdb-cluster** + +```shell +kubectl delete -k kustomize/mogdb-operator/install/default +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/mogdb-operator/install/default +namespace/mogdb-operator-system deleted +serviceaccount/mogdb-operator-controller-manager deleted +clusterrole.rbac.authorization.k8s.io/mogdb-operator-leader-election-role deleted +clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role deleted +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding deleted +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding deleted +configmap/mogdb-operator-global-config deleted +configmap/mogdb-operator-rclone-config deleted +secret/mogdb-operator-huawei-registry deleted +secret/mogdb-operator-token deleted +deployment.apps/mogdb-operator-manager deleted +``` + +
+ +**卸载 CRD** + +```shell +kubectl delete -k kustomize/mogdb-operator/bases/crd +kubectl delete -k kustomize/multi-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/mogdb-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io "mogdbclusters.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbclustertemplates.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbpodtemplates.mogdb.enmotech.io" deleted + +$ kubectl delete -k kustomize/multi-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io "kubeclientconfigs.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "multiclusters.mogdb.enmotech.io" deleted +``` + +
+ +**删除命名空间** + +```shell +kubectl delete namespace +``` + +期望输出: + +```shell +kubectl delete namespace mogdb-operator-system +namespace "mogdb-operator-system" deleted +``` + +
+ +### 3.卸载控制平面组件 + +> 首先确保要卸载的控制平面上已无 mogdb 集群残留。 + +**切换到控制平面** + +```shell +kubectl config --kubeconfig use-context +``` + +期望输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context control-plane +Switched to context "control-plane". +``` + +
+ +**卸载 mogdb-ha** + +```shell +kubectl delete -k kustomize/mogdb-ha/install +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/mogdb-ha/install +namespace/mogdb-ha deleted +serviceaccount/mogdb-ha deleted +clusterrole.rbac.authorization.k8s.io/mogdb-ha-role deleted +clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding deleted +secret/mogdb-ha-huawei-registry deleted +service/mogdb-ha deleted +deployment.apps/mogdb-ha deleted +``` + +
+ +**卸载 multi-cluster** + +```shell +kubectl delete -k kustomize/multi-operator/install-ctl-plane/default +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/multi-operator/install-ctl-plane/default +serviceaccount/mogdb-multi-serviceaccount deleted +clusterrole.rbac.authorization.k8s.io/mogdb-multi-leader-election-role deleted +clusterrole.rbac.authorization.k8s.io/mogdb-multi-manager-role deleted +clusterrolebinding.rbac.authorization.k8s.io/mogdb-multi-leader-election-rolebinding deleted +clusterrolebinding.rbac.authorization.k8s.io/mogdb-multi-manager-rolebinding deleted +secret/mogdb-multi-multi-operator-huawei-registry deleted +deployment.apps/mogdb-multi-manager deleted +``` + +
+ +**卸载 CRD** + +```shell +kubectl delete -k kustomize/multi-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/multi-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io "kubeclientconfigs.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "multiclusters.mogdb.enmotech.io" deleted +``` + +
+ +**删除命名空间** + +```shell +kubectl delete namespace +``` + +期望输出: + +```shell +kubectl delete namespace mogdb-ha +namespace "mogdb-ha" deleted + +kubectl delete namespace mogdb-operator-system +namespace "mogdb-operator-system" deleted +``` diff --git a/product/zh/docs-mogdb-stack/v3.0/installation/single-helm.md b/product/zh/docs-mogdb-stack/v3.0/installation/single-helm.md new file mode 100644 index 0000000000000000000000000000000000000000..173ebd9c5bcf73b0a132c78ec0967fb6b09d76fc --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/installation/single-helm.md @@ -0,0 +1,383 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: 使用 helm 安装(单集群模式) +summary: 使用 helm 安装(单集群模式) +--- + +# 使用 helm 安装(单集群模式) + +本节提供了使用 helm 安装和配置 mogdb-stack `单 kubernetes 集群模式`的说明。 + +
+ +## 前置条件 + +- 已安装 [helm](https://helm.sh),具体请参考 +- 添加 [enmotech helm 发布仓](https://github.com/enmotech/charts) + +```shell +helm repo add enmotech https://enmotech.github.io/charts +``` + +​ 期望输出: + +```shell +$ helm repo add enmotech https://enmotech.github.io/charts +"enmotech" has been added to your repositories + +$ helm search repo enmotech +NAME CHART VERSION APP VERSION DESCRIPTION +enmotech/mogha 3.0.0 3.0.0 Helm chart for deploying MogDB Ha on Kubernetes +enmotech/mogdb-monitor 3.0.0 3.0.0 A Helm chart for Kubernetes +enmotech/mogdb-cluster 3.0.0 3.0.0 Helm chart for deploying MogDB Cluster on Kubernetes +enmotech/multi-cluster 3.0.0 3.0.0 Helm chart for deploying MogDB Multi Cluster on Kubernetes +enmotech/mogdb-operator 3.0.0 3.0.0 Helm chart for deploying MogDB Operator on Kubernetes +enmotech/multi-operator 3.0.0 3.0.0 Helm chart for deploying MogDB Multi Operator on Kubernetes +``` + +
+ +## 安装模式 + +在安装 mogdb-stack 中的 mogdb-operator 与 multi-operator 组件时,可以配置其管理整个 kubernetes 集群的 mogdb 集群,或仅允许其管理单个 kubernetes 命名空间中的 mogdb 集群。 + +在管理整个 kubernetes 集群的 mogdb 集群时,我们会创建 ClusterRole 与 ClusterRoleBinding。 + +但是当仅允许其管理单个 kubernetes 命名空间中的 mogdb 集群时,我们则会创建 Role 与 RoleBinding。 + +不论是集群模式还是命名空间模式,helm 都会自动帮助我们创建必须的资源。 + +**默认情况下为集群模式,如果要使用命名空间模式,只需指定 `singleNamespace=true` 即可。** + +
+ +## 配置 + +虽然默认的 helm chart 可以在大多数 kubernetes 环境中工作,但可能有必要根据您的特定需求进一步自定义。 + +我们的 Helm charts 为您提供了丰富的可自定义选项,有关这些选项的具体信息,请参考[参考/helm-charts](../references/helm-charts)。 + +
+ +## 安装 + +### 1.安装 mogdb-ha + +**注意**: + +- mogdb-ha 组件是**可选的**。如果您要将 mogdb-stack 用于生产环境,我们推荐您安装该组件; +- 如果您要将其用于生产环境,确保您已准备了**高可用 etcd 集群**,我们会在在后续安装时传递相关信息。 + +
+ +创建 namespace: + +```shell +kubectl create namespace +``` + +期望输出: + +```shell +$ kubectl create namespace mogdb-ha +namespace/mogdb-ha created +``` + +
+ +安装 mogdb-ha 组件,有关设置的详细信息说明请参考 [mogdb ha charts value](../references/charts/mogdb-ha): + +- 默认以**集群模式**安装 mogdb-ha: + +```shell +helm install enmotech/mogdb-ha -n [--set =...] +``` + +​ 期望输出(在本例中,关闭了 debug 日志,使用简化版 etcd,并设置 ha 容器的内存大小为 1Gi): + +```shell +$ helm install mogdb-ha helm/mogdb-ha -n mogdb-ha \ + --set debug=false \ + --set withEtcd=true \ + --set ha.resources.limits.memory=1Gi \ + --set ha.resources.requests.memory=1Gi +NAME: mogdb-ha +LAST DEPLOYED: Tue Jul 4 13:58:13 2023 +NAMESPACE: mogdb-ha +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Ha! +``` + +
+ +- 要以**命名空间模式**安装 mogdb-ha,请指定 `--set singleNamespace=true`: + +```shell +helm install enmotech/mogdb-ha -n --set singleNamespace=true [--set =...] +``` + +​ 期望输出(在本例中,关闭了 debug 日志,使用简化版 etcd,并设置 ha 容器的内存大小为 1Gi): + +```shell +$ helm install mogdb-ha helm/mogdb-ha -n mogdb-ha \ + --set singleNamespace=true \ + --set debug=false \ + --set withEtcd=true \ + --set ha.resources.limits.memory=1Gi \ + --set ha.resources.requests.memory=1Gi +NAME: mogdb-ha +LAST DEPLOYED: Tue Jul 4 13:58:13 2023 +NAMESPACE: mogdb-ha +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Ha! +``` + +
+ +检查相关组件是否运行正常: + +```shell +kubectl get all -n +``` + +期望输出: + +```shell +$ kubectl get all -n mogdb-ha +NAME READY STATUS RESTARTS AGE +pod/mogdb-ha-58fb655887-59q8z 2/2 Running 0 71s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-ha NodePort 10.96.7.215 6544/TCP 71s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-ha 1/1 1 1 71s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-ha-58fb655887 1 1 1 71s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +### 2.安装 mogdb-operator + +**注意**:mogdb-operator 组件是**必选的**; + +
+ +安装 CRD: + +**注意,在同一个 kubernetes 集群中,CRD 只需安装一次。** + +```shell +kubectl apply --server-side -k xxx +``` + +期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/mogdb-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbclustertemplates.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbpodtemplates.mogdb.enmotech.io serverside-applied +``` + +
+ +创建 namespace: + +```shell +kubectl create namespace +``` + +期望输出: + +```shell +$ kubectl create namespace mogdb-operator-system +namespace/mogdb-operator-system created +``` + +
+ +安装 mogdb-operator,有关设置的详细信息说明请参考 [mogdb operator charts value](../references/charts/mogdb-operator): + +- 默认以**集群模式**安装 mogdb-operator: + +```shell +helm install enmotech/mogdb-operator -n [--set =...] +``` + +​ 期望输出: + +```shell +$ helm install manager helm/mogdb-operator -n mogdb-operator-system +NAME: manager +LAST DEPLOYED: Tue Jul 4 17:14:17 2023 +NAMESPACE: mogdb-operator-system +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Operator! +``` + +- 要以**命名空间模式**安装 mogdb-operator,请指定 `--set singleNamespace=true`: + +```shell +helm install enmotech/mogdb-operator -n --set singleNamespace=true [--set =...] +``` + +​ 期望输出: + +```shell +$ helm install manager helm/mogdb-operator --set singleNamespace=true -n mogdb-operator-system +NAME: manager +LAST DEPLOYED: Tue Jul 4 17:14:17 2023 +NAMESPACE: mogdb-operator-system +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Operator! +``` + +
+ +检查相关组件是否运行正常: + +```shell +kubectl get all -n +``` + +期望输出: + +```shell +$ kubectl get all -n mogdb-operator-system +NAME READY STATUS RESTARTS AGE +pod/mogdb-operator-manager-68f7f7cb48-zbmfq 1/1 Running 0 47s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-operator-manager 1/1 1 1 47s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-operator-manager-68f7f7cb48 1 1 1 47s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +### 3.安装 mogdb-cluster + +安装 mogdb-cluster,有关设置的详细信息说明请参考 [mogdb cluster charts value](../references/charts/mogdb-cluster): + +- 默认以**集群模式**安装 mogdb-cluster + +```shell +helm install enmotech/mogdb-cluster -n [--set =...] +``` + +​ 期望输出: + +```shell +$ helm install cluster helm/mogdb-cluster -n mogdb-operator-system +NAME: cluster +LAST DEPLOYED: Tue Jul 4 17:14:17 2023 +NAMESPACE: mogdb-operator-system +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Cluster! +``` + +
+ +## 卸载 + +> 首先确保要卸载的集群中上已无 mogdb 集群残留。 + +**卸载 cluster** + +```shell +helm uninstall -n +``` + +期望输出: + +```shell +$ helm uninstall cluster -n mogdb-operator-system +release "cluster" uninstalled +``` + +**卸载 mogdb-ha** + +```shell +helm uninstall -n +``` + +期望输出: + +```shell +$ helm uninstall mogdb-ha -n mogdb-ha +release "mogdb-ha" uninstalled +``` + +
+ +**卸载 mogdb-cluster** + +```shell +helm uninstall -n +``` + +期望输出: + +```shell +$ helm uninstall manager -n mogdb-operator-system +release "manager" uninstalled +``` + +
+ +**卸载 CRD** + +```shell +kubectl delete -k kustomize/mogdb-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/mogdb-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io "mogdbclusters.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbclustertemplates.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbpodtemplates.mogdb.enmotech.io" deleted +``` + +
+ +**删除命名空间** + +```shell +kubectl delete namespace +``` + +期望输出: + +```shell +kubectl delete namespace mogdb-ha +namespace "mogdb-ha" deleted + +kubectl delete namespace mogdb-operator-system +namespace "mogdb-operator-system" deleted +``` diff --git a/product/zh/docs-mogdb-stack/v3.0/installation/single-kustomize.md b/product/zh/docs-mogdb-stack/v3.0/installation/single-kustomize.md new file mode 100644 index 0000000000000000000000000000000000000000..604cd6477941166f0264b1425606d4b630547d71 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/installation/single-kustomize.md @@ -0,0 +1,386 @@ +--- +date: 2022-06-30 +author: houzhen.su +title: 使用 kustomize 安装(单集群模式) +summary: 使用 kustomize 安装(单集群模式) +--- + +# 使用 kustomize 安装(单集群模式) + +本节提供了使用 kustomize 安装和配置 mogdb-stack `单 kubernetes 集群模式`的说明。 + +
+ +## 前置条件 + +- 已安装 [kustomize](https://kustomize.io/) v3+:具体请参考 + +- 下载 mogdb-stack-examples 仓库 + +首先,在 GitHub 上 [fork mogdb-stack-examples](https://github.com/enmotech/mogdb-stack-examples/fork) 仓库: + + mogdb stack 的 kustomize 安装包。 + +之后,您可以通过类似如下的命令将仓库下载至本地: + +```shell +YOUR_GITHUB_UN="" +git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/mogdb-stack-examples.git" +cd mogdb-stack-examples +``` + +
+ +## 安装模式 + +在安装 mogdb-stack 中的 mogdb-operator 组件时,可以配置其管理整个 kubernetes 集群的 mogdb 集群,或仅允许其管理单个 kubernetes 命名空间中的 mogdb 集群。 + +在管理整个 kubernetes 集群的 mogdb 集群时,我们会创建 ClusterRole 与 ClusterRoleBinding。 + +但是当仅允许其管理单个 kubernetes 命名空间中的 mogdb 集群时,我们则会创建 Role 与 RoleBinding。 + +不论是集群模式还是命名空间模式,kustomize 都会自动帮助我们创建必须的资源。其中集群模式的 kustomization 文件位于各组件安装包的 `default` 文件夹中,命名空间模式的 kustomization 文件位于各组件安装包的 `singlenamespace` 文件夹中。 + +**因此,不论您选择哪种安装模式,都应该在自定义配置时修改对应文件夹中的内容,否则配置将不会生效。** + +
+ +## 配置 + +虽然默认的 kustomize 安装项目可以在大多数 kubernetes 环境中工作,但可能有必要根据您的特定需求进一步自定义 kustomize 项目。 + +例如,要自定义 stack 的镜像,可以修改位于 `kustomize/<具体组件>/install/default/kustomization.yaml` 文件中的 `images` 配置。 + +这里以基础组件 `mogdb-operator` 为例: + +```yaml +images: + - name: controller + newName: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-operator + newTag: 3.0.0 +``` + +
+ +请注意,kustomize 安装包还将默认为 mogdb-stack 创建一个/多个命名空间。要修改安装程序创建的命名空间的名称,应修改位于 `kustomize/<具体组件>/install/default/kustomization.yaml` 文件中的 `namespace` 配置。 + +这里以基础组件 `mogdb-operator` 为例: + +```yaml +# Add namespace to all resources. +namespace: mogdb-operator-system +``` + +
+ +除此之外,您还可以使用 patches 等诸多 kustomize 提供的强大功能自定义您的 mogdb-stack,有关这些功能的详细信息请参考 [kustomize 官方文档](https://kubectl.docs.kubernetes.io/)。 + +
+ +## 安装 + +在根据您的特定需求完成每个组件的 kustomize 安装包自定义后,我们可以开始安装。 + +### 1.安装 mogdb-ha + +**注意**: + +- mogdb-ha 组件是**可选的**。如果您要将 mogdb-stack 用于生产环境,我们推荐您安装该组件; +- 如果您要将其用于生产环境,确保您已准备了**高可用 etcd 集群**并在[配置](##配置)阶段完成了其相关配置。 + +
+ +安装 mogdb-ha 组件: + +```shell +kubectl apply --server-side -k kustomize/mogdb-ha/install +``` + +期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/mogdb-ha/install +namespace/mogdb-ha serverside-applied +serviceaccount/mogdb-ha serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-ha-role serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding serverside-applied +secret/mogdb-ha-huawei-registry serverside-applied +service/mogdb-ha serverside-applied +deployment.apps/mogdb-ha serverside-applied +``` + +
+ +检查相关组件是否运行正常: + +```shell +kubectl get all -n mogha +``` + +期望输出: + +```shell +$ kubectl get all -n mogha +NAME READY STATUS RESTARTS AGE +pod/mogdb-ha-58fb655887-59q8z 2/2 Running 0 71s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-ha NodePort 10.96.7.215 6544:32544/TCP 71s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-ha 1/1 1 1 71s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-ha-58fb655887 1 1 1 71s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +### 2.安装 mogdb-operator + +**注意**: + +- mogdb-operator 组件是**必选的**; + +
+ +安装 CRD: + +**注意,在同一个 kubernetes 集群中,CRD 只需安装一次。** + +```shell +kubectl apply --server-side -k kustomize/mogdb-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/mogdb-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbclustertemplates.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbpodtemplates.mogdb.enmotech.io serverside-applied +``` + +
+ +安装 mogdb-operator: + +- 要以**集群模式**安装 mogdb-operator,请使用位于 `default` 文件夹中的 kustomization 文件: + +```shell +kubectl apply --server-side -k kustomize/mogdb-operator/install/default +``` + +期望输出: + +```shell +$ kubectl apply --server-side -k kustomize/mogdb-operator/install/default +namespace/mogdb-operator-system serverside-applied +serviceaccount/mogdb-operator-controller-manager serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-operator-leader-election-role serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding serverside-applied +configmap/mogdb-operator-global-config serverside-applied +configmap/mogdb-operator-rclone-config serverside-applied +secret/mogdb-operator-huawei-registry serverside-applied +secret/mogdb-operator-token serverside-applied +deployment.apps/mogdb-operator-manager serverside-applied +``` + +- 要以**命名空间模式**安装 mogdb-operator,请使用位于 `singlenamespace` 文件夹中的 kustomization 文件: + +```shell +kubectl apply --server-side -k kustomize/mogdb-operator/install/singlenamespace +``` + +期望输出 + +```shell +$ kubectl apply --server-side -k kustomize/mogdb-operator/install/default +namespace/mogdb-operator-system serverside-applied +serviceaccount/mogdb-operator-controller-manager serverside-applied +role.rbac.authorization.k8s.io/mogdb-operator-leader-election-role serverside-applied +role.rbac.authorization.k8s.io/mogdb-operator-manager-role serverside-applied +rolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding serverside-applied +rolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding serverside-applied +configmap/mogdb-operator-global-config serverside-applied +configmap/mogdb-operator-rclone-config serverside-applied +secret/mogdb-operator-huawei-registry serverside-applied +secret/mogdb-operator-token serverside-applied +deployment.apps/mogdb-operator-manager serverside-applied +``` + +
+ +检查相关组件是否运行正常: + +```shell +kubectl get all -n mogdb-operator-system +``` + +期望输出: + +```shell +$ kubectl get all -n mogdb-operator-system +NAME READY STATUS RESTARTS AGE +pod/mogdb-operator-manager-5b5c4bb8b8-z2l48 1/1 Running 0 32s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-operator-manager 1/1 1 1 32s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-operator-manager-5b5c4bb8b8 1 1 1 32s +``` + +当 pod 处于 running 状态时,继续下一步。 + +### 部署MogDB集群 + +```shell +kubectl apply --server-side -k kustomize/mogdb-cluster/install/default +``` + +期望输出: + +```shell +mogdbcluster.mogdb.enmotech.io/mogdb-cluster serverside-applied +``` + +查看相关组件: + +```shell +kubectl get all -n mogdb-operator-system +``` + +期望输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/mogdb-cluster-sts-4bvbg-0 2/2 Running 0 2m15s +pod/mogdb-cluster-sts-rmssp-0 2/2 Running 0 97s +pod/mogdb-operator-manager-74c955bdd-6pwkr 1/1 Running 0 2m45s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-cluster-svc-headless ClusterIP None 26000/TCP,9187/TCP 2m15s +service/mogdb-cluster-svc-master NodePort 10.96.225.229 26000:30416/TCP 2m15s +service/mogdb-cluster-svc-replicas NodePort 10.96.48.193 26000:32493/TCP 2m15s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-operator-manager 1/1 1 1 29m + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-operator-manager-74c955bdd 1 1 1 2m45s + +NAME READY AGE +statefulset.apps/mogdb-cluster-sts-4bvbg 1/1 2m15s +statefulset.apps/mogdb-cluster-sts-rmssp 1/1 97s +``` + +等待所有pod都处于running状态,单集群模式MogDB Cluster就安装好了,可以进行下一步,连接到MogDB集群。 +
+ +> 至此安装完成。 + +
+ +## 卸载 + +**卸载 单集群模式MogDB集群** + +```shell +kubectl delete mogdbcluster mogdb-cluster -n mogdb-operator-system +``` + +或 + +```shell +kubectl delete -k kustomize/mogdb-cluster/install/default +``` + +期望输出: + +```text +mogdbcluster.mogdb.enmotech.io "mogdb-cluster" deleted +``` + +**卸载 mogdb-ha** + +```shell +kubectl delete -k kustomize/mogdb-ha/install +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/mogdb-ha/install +namespace/mogdb-ha deleted +serviceaccount/mogdb-ha deleted +clusterrole.rbac.authorization.k8s.io/mogdb-ha-role deleted +clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding deleted +secret/mogdb-ha-huawei-registry deleted +service/mogdb-ha deleted +deployment.apps/mogdb-ha deleted +``` + +
+ +**卸载 mogdb-cluster** + +```shell +kubectl delete -k kustomize/mogdb-operator/install/default +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/mogdb-operator/install/default +namespace/mogdb-operator-system deleted +serviceaccount/mogdb-operator-controller-manager deleted +clusterrole.rbac.authorization.k8s.io/mogdb-operator-leader-election-role deleted +clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role deleted +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding deleted +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding deleted +configmap/mogdb-operator-global-config deleted +configmap/mogdb-operator-rclone-config deleted +secret/mogdb-operator-huawei-registry deleted +secret/mogdb-operator-token deleted +deployment.apps/mogdb-operator-manager deleted +``` + +
+ +**卸载 CRD** + +```shell +kubectl delete -k kustomize/mogdb-operator/bases/crd +``` + +期望输出: + +```shell +$ kubectl delete -k kustomize/mogdb-operator/bases/crd +customresourcedefinition.apiextensions.k8s.io "mogdbclusters.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbclustertemplates.mogdb.enmotech.io" deleted +customresourcedefinition.apiextensions.k8s.io "mogdbpodtemplates.mogdb.enmotech.io" deleted +``` + +
+ +**删除命名空间** + +```shell +kubectl delete namespace +``` + +期望输出: + +```shell +$ kubectl delete namespace mogdb-ha +namespace "mogdb-ha" deleted + +$ kubectl delete namespace mogdb-operator-system +namespace "mogdb-operator-system" deleted +``` diff --git a/product/zh/docs-mogdb-stack/v3.0/overview.md b/product/zh/docs-mogdb-stack/v3.0/overview.md new file mode 100644 index 0000000000000000000000000000000000000000..3991a58c078ade39032d3513f3e6a79b191f5dd7 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/overview.md @@ -0,0 +1,49 @@ +--- +title: MogDB Stack 简介 +summary: MogDB Stack 简介 +author: Ji Yabin +date: 2021-06-16 +--- + +# MogDB Stack 简介 + +MogDB Stack是Kubernetes上的MogDB集群自动运维系统,提供包括部署、高可用、扩缩容、监控、备份恢复的MogDB全生命周期管理。借助MogDB Stack,MogDB可以无缝运行在公有云或私有部署的Kubernetes集群上。 + +
+ +## MogDB Stack特性 + +- **简单便捷的自动部署/回收** + + 以Kubernetes作为原生的容器编排系统,以扩展资源的方式,轻松便捷地创建整套MogDB集群,并且根据用户的期望任意扩缩容。 + +- **稳定可靠的备份恢复能力** + + 支持基于SQL的备份方式,并且存储在远端分布式存储中,多副本保证备份的可靠性,指定point-in-time的恢复方式,恢复到指定的时间点。 + +- **企业级的高可用性** + + 自动故障探测、切换,并自动化的拉取数据快照恢复故障节点或重新调度新节点,实现系统的自愈能力,保证用户期望的副本数。 + +- **完善可靠的监控能力** + + 基于Prometheus实现多维度的统一监控,囊括了系统层、容器层、数据库层的完整的监控指标。 + +- **精细化的资源管控** + + 针对CPU、内存、存储等资源的限额,保证容器层的独立性,不会互相干扰,支持容器的亲和性、反亲和性调度。 + +
+ +## 系统架构 + +![deploy-arch](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v1.0.0/overview-arch.png) + +
+ +## 操作系统与平台支持 + +MogDB Stack 目前支持在如下操作系统和平台架构下运行: + +1. Linux x86_64 +2. Linux arm64 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/quick-start.md b/product/zh/docs-mogdb-stack/v3.0/quick-start.md new file mode 100644 index 0000000000000000000000000000000000000000..b5c54e81baf11c90039f9adf2d14636612e9d8d2 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/quick-start.md @@ -0,0 +1,1007 @@ +--- +title: 快速上手 +summary: 快速上手 +author: Wang Dong +date: 2023-06-20 +--- + +# 快速上手 + +本文介绍了如何创建一个简单的 Kubernetes 集群, 以单集群模式和多集群模式部署 MogDB Stack。 + +> 本文中的部署说明仅用于测试目的,不要直接用于生产环境。如果要在生产环境部署,请参阅部署 > 部署 MogDB Stack 集群章节。 + +基本步骤如下: + +[1. 创建Kubernetes测试集群](#创建kubernetes测试集群) + +[2. 单集群模式部署 MogDB Stack](#单集群模式部署MogDBStack) + +[3. 多集群模式部署 MogDB Stack](#多集群模式部署MogDBStack) + +[4. 连接MogDB集群](#连接mogdb集群) + +[5. 销毁MogDB集群](#销毁mogdb集群) + +
+ +## 创建Kubernetes测试集群 + +本节介绍了两种创建 Kubernetes 测试集群的方法,可用于测试 MogDB Operator 管理的 MogDB 集群。 + +- [使用 kind](#使用kind创建Kubernetes集群)创建在 Docker 中运行的 Kubernetes + +- [使用 minikube](#使用minikube创建Kubernetes集群)创建在虚拟机中运行的 Kubernetes + +
+ +### 使用 kind 创建 Kubernetes 集群 + +目前比较通用的方式是使用 [kind](https://kind.sigs.k8s.io/) 部署本地测试 Kubernetes 集群。kind 适用于使用 Docker 容器作为集群节点运行本地 Kubernetes 集群。请参阅 [Docker Hub](https://hub.docker.com/r/kindest/node/tags) 以查看可用 tags。默认使用当前 kind 支持的最新版本。 + +部署前,请确保满足以下要求: + +- docker:版本 >= 18.09 + +- kubectl:版本 >= 1.18.1 + +- kindest/node:版本 >= 1.18.19 (1.18.19以下只会有amd64镜像,并且1.19以下的镜像在 cgroup v2中可能安装失败) + +- 若使用 Linux, net.ipv4.ip_forward 需要被设置为 1 + +使用脚本通过kind安装k8s集群: + +在GitHub上fork [MogDB Stack examples](https://github.com/enmotech/mogdb-stack-examples)仓库: + + + +fork仓库之后,您可以通过类似如下的命令下载至本地: + +```shell +YOUR_GITHUB_UN="" +git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/mogdb-stack-examples.git" +#还需要安装yq和增加脚本权限 +cd mogdb-stack-examples +chmod +x ./setup-kind-multicluster.sh +wget https://github.com/mikefarah/yq/releases/download/v4.16.2/yq_linux_amd64 -O yq +chmod +x yq +mv yq /usr/local/bin/ +bash ./setup-kind-multicluster.sh -o +``` + +期望输出: + +```shell +Unable to find image 'registry:2' locally +2: Pulling from library/registry +31e352740f53: Pull complete +7f9bcf943fa5: Pull complete +3c98a1678a82: Pull complete +51f7a5bb21d4: Pull complete +3f044f23c427: Pull complete +Digest: sha256:9977826e0d1d0eccc7af97017ae41f2dbe13f2c61e4c886ec28f0fdd8c4078aa +Status: Downloaded newer image for registry:2 +36576b59d66ceb554002ab1ee91ccbc8e87de9e4806cb532cab51f466311feed +Deleting existing clusters... +Deleting cluster 1 out of 1 +Deleting cluster "mogdb-stack-0" ... + +Creating 1 clusters... +Creating cluster 1 out of 1 +Creating cluster "mogdb-stack-0" ... + ✓ Ensuring node image (kindest/node:v1.25.3) 🖼 + ✓ Preparing nodes 📦 📦 + ✓ Writing configuration 📜 + ✓ Starting control-plane 🕹️ + ✓ Installing CNI 🔌 + ✓ Installing StorageClass 💾 + ✓ Joining worker nodes 🚜 +Set kubectl context to "kind-mogdb-stack-0" +You can now use your cluster with: + +kubectl cluster-info --context kind-mogdb-stack-0 + +Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂 + +Generating ./build/kind-kubeconfig +Switched to context "kind-mogdb-stack-0". +``` + +检查集群是否创建成功: + +```shell +kubectl cluster-info --context kind-mogdb-stack-0 +``` + +期望输出: + +```shell +Kubernetes control plane is running at https://127.0.0.1:36841 +KubeDNS is running at https://127.0.0.1:36841/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy + +To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. +``` + +Kubernetes 集群部署完成,现在就可以开始部署 MogDB Operator 了! + +
+ +### 使用 minikube 创建 Kubernetes 集群 + +minikube 可以在虚拟机中创建一个 Kubernetes 集群,可在 macOS, Linux 和 Windows 上运行。 + +部署前,请确保满足以下要求: + +- minikube:版本 1.18.1+ + +- minikube 需要安装一个兼容的 hypervisor,详情见官方安装教程。 + +- kubectl: 版本 >= 1.18.1 + +安装完 minikube 后,可以执行下面命令启动一个 Kubernetes 集群: + +```shell +minikube start +``` + +如果一切运行正常,会看到类似下面的输出,根据操作系统和使用的 hypervisor 会有些许差异。 + +```shell +😄 minikube v1.10.1 on Darwin 10.15.4 +✨ Automatically selected the hyperkit driver. Other choices: docker, vmwarefusion +💾 Downloading driver docker-machine-driver-hyperkit: + > docker-machine-driver-hyperkit.sha256: 65 B / 65 B [---] 100.00% ? p/s 0s + > docker-machine-driver-hyperkit: 10.90 MiB / 10.90 MiB 100.00% 1.76 MiB p +🔑 The 'hyperkit' driver requires elevated permissions. The following commands will be executed: + + $ sudo chown root:wheel /Users/user/.minikube/bin/docker-machine-driver-hyperkit + $ sudo chmod u+s /Users/user/.minikube/bin/docker-machine-driver-hyperkit + + +💿 Downloading VM boot image ... + > minikube-v1.10.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s + > minikube-v1.10.0.iso: 174.99 MiB / 174.99 MiB [] 100.00% 6.63 MiB p/s 27s +👍 Starting control plane node minikube in cluster minikube +💾 Downloading Kubernetes v1.18.2 preload ... + > preloaded-images-k8s-v3-v1.18.2-docker-overlay2-amd64.tar.lz4: 525.43 MiB +🔥 Creating hyperkit VM (CPUs=2, Memory=4000MB, Disk=20000MB) ... +🐳 Preparing Kubernetes v1.18.2 on Docker 19.03.8 ... +🔎 Verifying Kubernetes components... +🌟 Enabled addons: default-storageclass, storage-provisioner +🏄 Done! kubectl is now configured to use "minikube" +``` + +对于中国大陆用户,可以使用国内 gcr.io mirror 仓库,例如 registry.cn-hangzhou.aliyuncs.com/google_containers。 + +```shell +minikube start --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers +``` + +或者给 Docker 配置 HTTP/HTTPS 代理。 + +将下面命令中的 127.0.0.1:1086 替换为您自己的 HTTP/HTTPS 代理地址: + +```shell +minikube start --docker-env https_proxy=http://127.0.0.1:1086 \ + --docker-env http_proxy=http://127.0.0.1:1086 +``` + +> **注意:**
+> 由于 minikube(默认)通过虚拟机运行,127.0.0.1 指向虚拟机本身,所以在有些情况下可能需要将代理修改为您的主机的实际 IP。 + +参考 minikube setup 查看配置虚拟机和 Kubernetes 集群的更多选项。 + +你可以使用 minikube 的子命令 kubectl 来进行集群操作。要使 kubectl 命令生效,你需要在 shell 配置文件中添加以下别名设置命令,或者在打开一个新的 shell 后执行以下别名设置命令。 + +```shell +alias kubectl='minikube kubectl --' +``` + +执行以下命令检查集群状态,并确保可以通过 kubectl 访问集群: + +```shell +kubectl cluster-info +``` + +期望输出: + +```shell +Kubernetes master is running at https://192.168.64.2:8443 +KubeDNS is running at https://192.168.64.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy + +To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. +``` + +现在就可以开始部署 MogDB Operator 了! + +测试完成后,执行下面命令来销毁集群: + +```shell +minikube delete +``` + +
+ +## 单集群模式部署MogDB Stack + +
+ +### 部署MogDB Operator + +开始之前,确保以下要求已满足: + +- 可以使用 kubectl 访问的 Kubernetes 集群 +- kubectl >= 1.21 + +**步骤1: 下载样例** + +在GitHub上fork [MogDB Stack examples](https://github.com/enmotech/mogdb-stack-examples)仓库: + + + +fork仓库之后,您可以通过类似如下的命令下载至本地: + +```shell +YOUR_GITHUB_UN="" +git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/mogdb-stack-examples.git" +cd mogdb-stack-examples +``` + +
+ +**步骤2: 安装 mogdb-ha 组件** + +```shell +kubectl create ns mogdb-ha +kubectl apply --server-side -k kustomize/mogdb-ha/install +``` + +期望输出: + +```shell +namespace/mogdb-ha serverside-applied +serviceaccount/mogdb-ha serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-ha-role serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding serverside-applied +secret/mogdb-ha-huawei-registry serverside-applied +service/mogdb-ha serverside-applied +deployment.apps/mogdb-ha serverside-applied +``` + +检查相关组件是否运行正常: + +```shell +kubectl get all -n mogdb-ha +``` + +期望输出: + +```shell +$ kubectl get all -n mogdb-ha +NAME READY STATUS RESTARTS AGE +pod/mogdb-ha-58fb655887-59q8z 2/2 Running 0 71s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-ha NodePort 10.96.7.215 6544:32544/TCP 71s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-ha 1/1 1 1 71s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-ha-58fb655887 1 1 1 71s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +**步骤3: 安装 mogdb operator** + +首先安装 CRD: + +```shell +kubectl apply --server-side -k kustomize/mogdb-operator/bases/crd +``` + +期望输出: + +```shell +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbclustertemplates.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbpodtemplates.mogdb.enmotech.io serverside-applied +``` + +
+ +安装 mogdb-operator: + +```shell +kubectl create ns mogdb-operator-system +kubectl apply --server-side -k kustomize/mogdb-operator/install/default +``` + +期望输出: + +```shell +namespace/mogdb-operator-system serverside-applied +serviceaccount/mogdb-operator-controller-manager serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-operator-leader-election-role serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding serverside-applied +configmap/mogdb-operator-global-config serverside-applied +configmap/mogdb-operator-rclone-config serverside-applied +secret/mogdb-operator-huawei-registry serverside-applied +secret/mogdb-operator-token serverside-applied +deployment.apps/mogdb-operator-manager serverside-applied +``` + +检查相关组件是否运行正常: + +```shell +kubectl get all -n mogdb-operator-system +``` + +期望输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/mogdb-operator-manager-74c955bdd-6pwkr 1/1 Running 0 32s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-operator-manager 1/1 1 1 32s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-operator-manager-74c955bdd 1 1 1 32s +``` + +operator现在已经安装成功了! + +
+ +### 部署MogDB集群 + +```shell +kubectl apply --server-side -k kustomize/mogdb-cluster/install/default +``` + +期望输出: + +```shell +mogdbcluster.mogdb.enmotech.io/mogdb-cluster serverside-applied +``` + +查看相关组件: + +```shell +kubectl get all -n mogdb-operator-system +``` + +期望输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/mogdb-cluster-sts-4bvbg-0 3/3 Running 0 2m15s +pod/mogdb-cluster-sts-rmssp-0 3/3 Running 0 97s +pod/mogdb-operator-manager-74c955bdd-6pwkr 1/1 Running 0 2m45s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-cluster-svc-headless ClusterIP None 26000/TCP,9187/TCP 2m15s +service/mogdb-cluster-svc-master NodePort 10.96.225.229 26000:30416/TCP 2m15s +service/mogdb-cluster-svc-replicas NodePort 10.96.48.193 26000:32493/TCP 2m15s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-operator-manager 1/1 1 1 29m + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-operator-manager-74c955bdd 1 1 1 2m45s + +NAME READY AGE +statefulset.apps/mogdb-cluster-sts-4bvbg 1/1 2m15s +statefulset.apps/mogdb-cluster-sts-rmssp 1/1 97s +``` + +等待所有pod都处于running状态,单集群模式MogDB Cluster就安装好了,可以进行下一步,连接到MogDB集群。 + +
+ +## 多集群模式部署MogDB Stack + +
+ +开始之前,确保以下要求已满足: + +- 可以使用 kubectl 访问的 Kubernetes 集群 +- kubectl >= 1.21 + +
+ +**步骤1: 下载样例** + +在GitHub上fork [MogDB Stack examples](https://github.com/enmotech/mogdb-stack-examples)仓库: + + + +fork仓库之后,您可以通过类似如下的命令下载至本地: + +```shell +YOUR_GITHUB_UN="" +git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/mogdb-stack-examples.git" +cd mogdb-stack-examples +``` + +
+ +**步骤2: 模拟多个k8s集群环境** + +```shell +kubectl config set-context control-plane --namespace=control-plane --cluster=kind-mogdb-stack-0 --user=kind-mogdb-stack-0 +kubectl config set-context data-plane1 --namespace=data-plane1 --cluster=kind-mogdb-stack-0 --user=kind-mogdb-stack-0 +kubectl config set-context data-plane2 --namespace=data-plane2 --cluster=kind-mogdb-stack-0 --user=kind-mogdb-stack-0 +``` + +期望输出: + +```shell +Context "control-plane" created. +Context "data-plane1" created. +Context "data-plane2" created. +``` + +
+ +**步骤3: 安装控制平面** + +切换上下文到控制平面: + +```shell +kubectl config use-context control-plane +``` + +期望输出: + +```shell +Switched to context "control-plane". +``` + +
+ +1、安装mogdb-ha组件: + +```shell +kubectl create ns mogdb-ha +kubectl apply --server-side -k kustomize/mogdb-ha/install +``` + +期望输出: + +```shell +namespace/mogdb-ha serverside-applied +serviceaccount/mogdb-ha serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-ha-role serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding serverside-applied +secret/mogdb-ha-huawei-registry serverside-applied +service/mogdb-ha serverside-applied +deployment.apps/mogdb-ha serverside-applied +``` + +检查相关组件是否运行正常: + +```shell +kubectl get all -n mogdb-ha +``` + +期望输出: + +```shell +$ kubectl get all -n mogdb-ha +NAME READY STATUS RESTARTS AGE +pod/mogdb-ha-58fb655887-59q8z 2/2 Running 0 71s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-ha NodePort 10.96.7.215 6544:32544/TCP 71s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-ha 1/1 1 1 71s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-ha-58fb655887 1 1 1 71s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +2、安装 multi-operator: + +安装 CRD: + +```shell +kubectl apply --server-side -k kustomize/multi-operator/bases/crd +``` + +期望输出: + +```shell +customresourcedefinition.apiextensions.k8s.io/kubeclientconfigs.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/multiclusters.mogdb.enmotech.io serverside-applied +``` + +安装multi-operator: + +```shell +kubectl create ns control-plane +kubectl apply --server-side -k kustomize/multi-operator/install-ctl-plane/default/ +``` + +期望输出: + +```shell +namespace/control-plane serverside-applied +customresourcedefinition.apiextensions.k8s.io/kubeclientconfigs.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/multiclusters.mogdb.enmotech.io serverside-applied +serviceaccount/mogdb-multi-serviceaccount serverside-applied +role.rbac.authorization.k8s.io/mogdb-multi-leader-election-role serverside-applied +clusterrole.rbac.authorization.k8s.io/control-plane-multi serverside-applied +rolebinding.rbac.authorization.k8s.io/mogdb-multi-leader-election-rolebinding serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/control-plane-multi serverside-applied +configmap/mogdb-multi-manager-config serverside-applied +secret/mogdb-multi-multi-operator-huawei-registry serverside-applied +deployment.apps/mogdb-multi-manager serverside-applied +``` + +检查相关组件是否运行正常: + +```shell +kubectl get all -n control-plane +``` + +期望输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/mogdb-multi-manager-b79757f75-v25cp 1/1 Running 0 25s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-multi-manager 1/1 1 1 25s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-multi-manager-b79757f75 1 1 1 25s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +**步骤4: 安装数据平面**: + +### 1、安装数据平面1 + +切换上下文到数据平面1: + +```shell +kubectl config use-context data-plane1 +``` + +期望输出: + +```shell +Switched to context "data-plane1". +``` + +安装 mogdb-operator CRD: + +```shell +kubectl apply --server-side -k kustomize/mogdb-operator/bases/crd +``` + +期望输出: + +```shell +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbclustertemplates.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbpodtemplates.mogdb.enmotech.io serverside-applied +``` + +
+ +安装mogdb-operator: +首先将以下几个文件的对应的值修改成和data-plane1相关: + +```shell +kustomize/mogdb-operator/install/singlenamespace/kustomization.yaml: +namespace:data-plane1 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/leader_election_role_binding.yaml: +value: mogdb-operator-system-leader-election-rolebinding-data-plane1 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/leader_election_role.yaml: +value: mogdb-operator-system-leader-election-role-data-plane1 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/manager_role_binding.yaml +value: mogdb-operator-system-manager-rolebinding-data-plane1 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/manager_role.yaml +value: mogdb-operator-system-manager-role-data-plane1 +``` + +```shell +kubectl create ns data-plane1 +kubectl apply --server-side -k kustomize/mogdb-operator/install/singlenamespace/ +``` + +期望输出: + +```shell +namespace/data-plane1 serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbclustertemplates.mogdb.enmotech.io serverside-applied +customresourcedefinition.apiextensions.k8s.io/mogdbpodtemplates.mogdb.enmotech.io serverside-applied +serviceaccount/mogdb-operator-controller-manager serverside-applied +role.rbac.authorization.k8s.io/mogdb-operator-leader-election-role serverside-applied +clusterrole.rbac.authorization.k8s.io/data-plane1-single serverside-applied +rolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/data-plane1-single serverside-applied +configmap/mogdb-operator-global-config serverside-applied +configmap/mogdb-operator-manager-config serverside-applied +configmap/mogdb-operator-rclone-config serverside-applied +secret/mogdb-operator-huawei-registry serverside-applied +secret/mogdb-operator-token serverside-applied +deployment.apps/mogdb-operator-manager serverside-applied +``` + +检查相关组件是否运行正常: + +```shell +kubectl get all -n data-plane1 +``` + +期望输出: + +```shell +$ kubectl get all -n data-plane1 +NAME READY STATUS RESTARTS AGE +pod/mogdb-operator-manager-76bfdc9b76-wmmhq 1/1 Running 0 32s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-operator-manager 1/1 1 1 32s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-operator-manager-76bfdc9b76 1 1 1 32s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +### 2、安装数据平面2 + +切换上下文到数据平面2: + +```shell +kubectl config use-context data-plane2 +``` + +期望输出: + +```shell +Switched to context "data-plane2". +``` + +
+ +安装mogdb-operator: +首先将以下几个文件的对应的值修改成和data-plane1相关: + +```shell +kustomize/mogdb-operator/install/singlenamespace/kustomization.yaml: +namespace:data-plane2 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/leader_election_role_binding.yaml: +value: mogdb-operator-system-leader-election-rolebinding-data-plane2 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/leader_election_role.yaml: +value: mogdb-operator-system-leader-election-role-data-plane2 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/manager_role_binding.yaml +value: mogdb-operator-system-manager-rolebinding-data-plane2 + +kustomize/mogdb-operator/install/singlenamespace/patches/rbac/manager_role.yaml +value: mogdb-operator-system-manager-role-data-plane2 +``` + +```shell +kubectl create ns data-plane2 +kubectl apply --server-side -k kustomize/mogdb-operator/install/singlenamespace/ +``` + +期望输出: + +```shell +Switched to context "data-plane2". +namespace/data-plane2 serverside-applied +serviceaccount/mogdb-operator-controller-manager serverside-applied +role.rbac.authorization.k8s.io/mogdb-operator-leader-election-role serverside-applied +clusterrole.rbac.authorization.k8s.io/data-plane2-single serverside-applied +rolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/data-plane2-single serverside-applied +configmap/mogdb-operator-global-config serverside-applied +configmap/mogdb-operator-manager-config serverside-applied +configmap/mogdb-operator-rclone-config serverside-applied +secret/mogdb-operator-huawei-registry serverside-applied +secret/mogdb-operator-token serverside-applied +deployment.apps/mogdb-operator-manager serverside-applied +Apply failed with 3 conflicts: conflicts with "kube-apiserver" using apiextensions.k8s.io/v1: +- .status.conditions +- .status.acceptedNames.kind +- .status.acceptedNames.plural +Please review the fields above--they currently have other managers. Here +are the ways you can resolve this warning: +* If you intend to manage all of these fields, please re-run the apply + command with the `--force-conflicts` flag. +* If you do not intend to manage all of the fields, please edit your + manifest to remove references to the fields that should keep their + current managers. +* You may co-own fields by updating your manifest to match the existing + value; in this case, you'll become the manager if the other manager(s) + stop managing the field (remove it from their configuration). +See https://kubernetes.io/docs/reference/using-api/server-side-apply/#conflicts +Apply failed with 3 conflicts: conflicts with "kube-apiserver" using apiextensions.k8s.io/v1: +- .status.conditions +- .status.acceptedNames.kind +- .status.acceptedNames.plural +Please review the fields above--they currently have other managers. Here +are the ways you can resolve this warning: +* If you intend to manage all of these fields, please re-run the apply + command with the `--force-conflicts` flag. +* If you do not intend to manage all of the fields, please edit your + manifest to remove references to the fields that should keep their + current managers. +* You may co-own fields by updating your manifest to match the existing + value; in this case, you'll become the manager if the other manager(s) + stop managing the field (remove it from their configuration). +See https://kubernetes.io/docs/reference/using-api/server-side-apply/#conflicts +Apply failed with 3 conflicts: conflicts with "kube-apiserver" using apiextensions.k8s.io/v1: +- .status.conditions +- .status.acceptedNames.kind +- .status.acceptedNames.plural +Please review the fields above--they currently have other managers. Here +are the ways you can resolve this warning: +* If you intend to manage all of these fields, please re-run the apply + command with the `--force-conflicts` flag. +* If you do not intend to manage all of the fields, please edit your + manifest to remove references to the fields that should keep their + current managers. +* You may co-own fields by updating your manifest to match the existing + value; in this case, you'll become the manager if the other manager(s) + stop managing the field (remove it from their configuration). +See https://kubernetes.io/docs/reference/using-api/server-side-apply/#conflicts +``` + +检查相关组件是否运行正常: + +```shell +kubectl get all -n data-plane2 +``` + +期望输出: + +```shell +$ kubectl get all -n data-plane2 +NAME READY STATUS RESTARTS AGE +pod/mogdb-operator-manager-86584fb878-89m42 1/1 Running 0 32s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/mogdb-operator-manager 1/1 1 1 32s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/mogdb-operator-manager-86584fb878 1 1 1 32s +``` + +当 pod 处于 running 状态时,继续下一步。 + +
+ +**步骤5: 注册数据平面到控制平面** + +将数据平面1加入控制平面: + +```shell +bash ./join-to-control-plane.sh --src-namespace data-plane1 --src-serviceaccount mogdb-operator-controller-manager --src-context data-plane1 --src-kubeconfig ~/.kube/config --dest-context control-plane --dest-kubeconfig ~/.kube/config --dest-namespace control-plane +``` + +期望结果: + +```shell +Source cluster had localhost as the API server address; replacing with https://172.19.0.2:6443 +Creating KubeConfig at /tmp/tmp.dvw8bjOgVh/kubeconfig +Creating secret data-plane1 +Error from server (NotFound): secrets "data-plane1" not found +secret/data-plane1 created +Creating ClientConfig /tmp/tmp.dvw8bjOgVh/data-plane1.yaml +kubeclientconfig.mogdb.enmotech.io/data-plane1 created +``` + +将数据平面2加入控制平面: + +```shell +bash ./join-to-control-plane.sh --src-namespace data-plane2 --src-serviceaccount mogdb-operator-controller-manager --src-context data-plane2 --src-kubeconfig ~/.kube/config --dest-context control-plane --dest-kubeconfig ~/.kube/config --dest-namespace control-plane +``` + +期望结果: + +```shell +Source cluster had localhost as the API server address; replacing with https://172.19.0.2:6443 +Creating KubeConfig at /tmp/tmp.jANezLSUZK/kubeconfig +Creating secret data-plane2 +Error from server (NotFound): secrets "data-plane2" not found +secret/data-plane2 created +Creating ClientConfig /tmp/tmp.jANezLSUZK/data-plane2.yaml +kubeclientconfig.mogdb.enmotech.io/data-plane2 created +``` + +这个时候多集群的 Multi Operator 已经部署好了,可以部署 Multi Cluster 啦! + +
+ +**步骤6: 部署Multi Cluster** + +```shel +kubectl apply --server-side -k kustomize/multi-cluster/install/default +``` + +期望输出: + +```shell +multicluster.mogdb.enmotech.io/multi-cluster created +``` + +查看Multi Cluster pod状态: + +```shell +kubectl get pods -A --selector='mogdb.enmotech.io/app=multi-operator' +``` + +查看结果: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane1 dc1-sts-259bm-0 2/2 Running 0 3h52m +data-plane1 dc1-sts-fxq24-0 2/2 Running 0 3h53m +data-plane2 dc2-sts-djsm2-0 2/2 Running 0 3h51m +data-plane2 dc2-sts-zbqxb-0 2/2 Running 0 3h51m +``` + +
+ +## 连接MogDB集群 + +### 安装gsql命令行工具 + +要连接到MogDB集群,您需要在使用kubectl的主机上安装MogDB客户端工具[gsql](../../docs-mogdb/v3.0/quick-start/mogdb-access/use-cli-to-access-mogdb/gsql.md#安装gsql客户端)安装与物理机匹配的命令行工具。 + +
+ +### 查看MogDB服务端口 + +首先,将端口从本地主机转发到 Kubernetes 中的 MogDB Service。 我们先获取 mogdb-operator-system 命名空间中的服务列表: + +```shell +kubectl get svc -n mogdb-operator-system +``` + +期望输出: + +```text +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +mogdb-cluster-svc-headless ClusterIP None 26000/TCP,9187/TCP 107m +mogdb-cluster-svc-master NodePort 10.96.225.229 26000:30013/TCP 107m +mogdb-cluster-svc-replicas NodePort 10.96.48.193 26000:30012/TCP 107m +``` + +输出结果显示了,k8s集群内部通过26000端口,集群外部通过30013端口访问实际的MogDB集群。 + +
+ +### 连接集群 + +在连接之前,需要修改默认用户的密码。可以通过kubectl命令连接到容器,修改密码。 + +```shell +kubectl exec -it mogdb-cluster-xxxxx -c mogdb -n mogdb-operator-system -- /bin/bash +gosu omm gsql -dpostgres +``` + +```sql +ALTER USER mogdb WITH PASSWORD 'new_password'; +``` + +修改新密码后,ctrl+z退出数据库,exit退出容器,再通过主机的gsql进行连接。 + +```shell +gsql -h 10.1.115.245 -p 5432 -U mogdb -W +``` + +期望输出: + +```shell +gsql ((MogDB 3.1.0 build aef997f9) compiled at 2022-11-24 00:09:16 commit 0 last mr ) +Non-SSL connection (SSL connection is recommended when requiring high-security) +Type "help" for help. + +MogDB=# +``` + +以下是一些可以用来验证集群功能的命令。 + +- 查看MogDB版本 + +```sql +MogDB=#select version(); + version +--------------------------------------------------------------------------------------------------------------------------------------------------- +(MogDB 3.1.0 build aef997f9) compiled at 2022-11-24 00:09:16 commit 0 last mr on aarch64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit +(1 row) +``` + +- 创建t1表 + +```sql +MogDB=#create table t1(id int); +CREATE TABLE +``` + +- 插入数据 + +```sql +MogDB=#insert into t1(id) values(1),(2),(3); +INSERT 0 3 +``` + +- 查看数据 + +```sql +MogDB=#select * from t1; + id +---- + 1 + 2 + 3 +(3 rows) +``` + +
+ +## 销毁MogDB集群 + +完成测试后,您可能希望销毁MogDB集群。 + +### 删除单k8s集群的MogDB集群 + +```shell +kubectl delete mogdbcluster mogdb-cluster -n mogdb-operator-system +``` + +或 + +```shell +kubectl delete -k kustomize/mogdb-cluster/install/default +``` + +期望输出: + +```text +mogdbcluster.mogdb.enmotech.io "mogdb-cluster" deleted +``` + +### 删除多k8s集群的MogDB集群 + +```shell +kubectl delete -k kustomize/multi-cluster/install/default +``` + +期望输出: + +```text +mogdbcluster.mogdb.enmotech.io "multi-cluster" deleted +``` \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/references/charts/mogdb-cluster.md b/product/zh/docs-mogdb-stack/v3.0/references/charts/mogdb-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..24b23e5a443dee4b19bd361fb0acd8b84007d445 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/charts/mogdb-cluster.md @@ -0,0 +1,67 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: helm charts mogdb-cluster values +summary: helm charts mogdb-cluster values +--- + +# helm charts mogdb-cluster values + +## .Values + +| 名称 | 类型 | 描述 | 默认值 | +| ------- | ------ | ------------------ | ------ | +| replica | int | mogdb 副本数 | 2 | +| backup | object | mogdb 备份相关配置 | nil | +| restore | object | mogdb 恢复相关配置 | nil | + +
+ +## .Values.ha + +> ha 相关配置。 + +| 名称 | 类型 | 描述 | 默认值 | +| ----------------------- | -------- | ----------------------------------------------- | ----------------------------------------------- | +| url | string | mogdb ha 组件的访问路径 | | +| scope | string | mogdb ha 的 scope | default | + +
+ +## .Values.mogdb + +> mogdb 容器的相关配置。 + +| 名称 | 类型 | 描述 | 默认值 | +| ------------------------------- | ------ | -------------------------------------------------- | ------- | +| mogdb.resources.limits.cpu | string | mogdb 容器的 cpu 限制,是容器使用资源的最高限制 | 500m | +| mogdb.resources.limits.memory | string | mogdb 容器的 memory 限制,是容器使用资源的最高限制 | 1Gi | +| mogdb.resources.requests.cpu | string | mogdb 容器的 cpu 请求,是容器能够启动的最低限制 | 500m | +| mogdb.resources.requests.memory | string | mogdb 容器的 memory 请求,是容器能够启动的最低限制 | 1Gi | +| mogdb.volume.storageClass | string | mogdb pod 所使用的 kubernetes 存储类型 | default | +| mogdb.volume.dataVolumeSize | string | mogdb 容器挂载的数据卷的大小 | 1Gi | +| mogdb.volume.backupVolumeSize | string | mogdb 容器挂载的备份数据卷的大小 | 1Gi | + +
+ +## .Values.service + +> mogdb 暴露服务相关配置。 + +| 名称 | 类型 | 描述 | 默认值 | +| ---------------- | ---- | ------------ | ------ | +| service.readPort | int | mogdb 读端口 | 30012 | +| service.readPort | int | mogdb 写端口 | 30013 | + +
+ +## .Values.images + +> mogdb pod 使用镜像相关配置。 + +| 名称 | 类型 | 描述 | 默认值 | +| ---------------------- | ------ | ------------------ | ------------------------------------------------------------ | +| images.imagePullPolicy | string | 容器的镜像拉取策略 | IfNotPresent | +| images.initImage | string | init 镜像 | swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb:3.0.4 | +| images.mogdbImage | string | mogdb 镜像 | swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb:3.0.4 | +| images.exporterImage | strin | exporter 镜像 | swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-exporter:3.0.3 | diff --git a/product/zh/docs-mogdb-stack/v3.0/references/charts/mogdb-ha.md b/product/zh/docs-mogdb-stack/v3.0/references/charts/mogdb-ha.md new file mode 100644 index 0000000000000000000000000000000000000000..13a742fe388a277463924cae779a898e9cd439b8 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/charts/mogdb-ha.md @@ -0,0 +1,71 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: helm charts mogdb-ha values +summary: helm charts mogdb-ha values +--- + +# helm charts mogdb-ha values + +## .Values + +| 名称 | 类型 | 描述 | 默认值 | +| ----------------------- | -------- | ----------------------------------------------- | ------ | +| debug | bool | 是否开启 debug | false | +| withEtcd | bool | 是否一并安装 etcd | false | +| singleNamespace | bool | 是否以单集群模式运行 | false | +| imagePullSecrets | []string | 定义 ha 拉取镜像的 secret | | +| imagePullSecretNames | []string | 定义 ha 拉取镜像的 secret name | | +| failover | bool | 启用/禁用故障转移开关 | true | +| apiPort | int | ha 服务的端口号 | 6544 | +| apiTimeout | int | ha 服务的超时时间,单位:秒 | 60 | +| dbProbePeriod | int | ha 探测单个 mogdb 节点的周期,单位:秒 | 5 | +| dbProbeFailureThreshold | int | 探测阈值,当超出阈值时 ha 会判定 mogdb 发生故障 | 3 | +| buildInterval | duration | ha 执行 mogdb build 的最小时间间隔 | 30s | +| observePeriod | duration | ha 探测整个 mogdb 集群的周期,单位:秒 | 5s | +| failoverThreshold | duration | ha 的 mogdb failover 阈值 | 30s | +| needRepairThreshold | duration | ha need repair continue 阈值 | 30s | + +
+ +## .Values.ha + +> ha 容器的相关配置。 + +| 名称 | 类型 | 描述 | 默认值 | +| ---------------------------- | ------ | --------------------------------------------------- | -------------- | +| ha.image | string | ha 容器的镜像 | mogdb-ha:3.0.0 | +| ha.imagePullPolicy | string | ha 容器的镜像拉取策略 | IfNotPresent | +| ha.resources.limits.cpu | string | ha 容器的 cpu 限制,是 ha 容器使用资源的最高限制 | 500m | +| ha.resources.limits.memory | string | ha 容器的 memory 限制,是 ha 容器使用资源的最高限制 | 500Mi | +| ha.resources.requests.cpu | string | ha 容器的 cpu 请求,是 ha 容器能够启动的最低限制 | 500m | +| ha.resources.requests.memory | string | ha 容器的 memory 请求,是 ha 容器能够启动的最低限制 | 500Mi | + +
+ +## .Values.etcd + +> etcd 容器的相关配置。仅在 withEtcd=true 时生效。 + +| 名称 | 类型 | 描述 | 默认值 | +| ------------------------------ | ------ | ----------------------------------------------------- | ------------ | +| etcd.image | string | etcd 容器的镜像 | etcd:3.5.0-0 | +| etcd.imagePullPolicy | string | etcd 容器的镜像拉取策略 | IfNotPresent | +| etcd.resources.limits.cpu | string | etcd 容器的 cpu 限制,是 ha 容器使用资源的最高限制 | 500m | +| etcd.resources.limits.memory | string | etcd 容器的 memory 限制,是 ha 容器使用资源的最高限制 | 500Mi | +| etcd.resources.requests.cpu | string | etcd 容器的 cpu 请求,是 ha 容器能够启动的最低限制 | 500m | +| etcd.resources.requests.memory | string | etcd 容器的 memory 请求,是 ha 容器能够启动的最低限制 | 500Mi | + +
+ +## .Values.etcdConfig + +> ha 连接 etcd 的相关信息。当 withEtcd=false 时,需要事先准备高可用 etcd 集群。 + +| 名称 | 类型 | 描述 | 默认值 | +| ---------------------- | ----------------- | ------------------------------ | -------------- | +| etcdConfig.key | string | etcd 存储前缀 | mogha | +| etcdConfig.username | string | 连接 etcd 的用户名 | "" | +| etcdConfig.password | string | 连接 etcd 的用户密码 | "" | +| etcdConfig.endpoints | string | 连接 etcd 的地址 | 127.0.0.1:2379 | +| etcdConfig.dialTimeout | int | 连接 etcd 的超时时间,单位:秒 | 5 | diff --git a/product/zh/docs-mogdb-stack/v3.0/references/charts/mogdb-operator.md b/product/zh/docs-mogdb-stack/v3.0/references/charts/mogdb-operator.md new file mode 100644 index 0000000000000000000000000000000000000000..7b245df526289f502c465682ea8bb58061c7e24c --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/charts/mogdb-operator.md @@ -0,0 +1,79 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: helm charts mogdb-operator values +summary: helm charts mogdb-operator values +--- + +# helm charts mogdb-operator values + +## .Values + +| 名称 | 类型 | 描述 | 默认值 | +| ----------------------- | -------- | ------------------------------ | ------ | +| debug | bool | 是否开启 debug | false | +| withCRD | bool | 是否一并安装 CRD | false | +| singleNamespace | bool | 是否以单集群模式运行 | false | +| enablePrometheusMonitor | bool | 是否开启普罗米修斯监控接口 | true | +| imagePullSecrets | []string | 定义 ha 拉取镜像的 secret | | +| imagePullSecretNames | []string | 定义 ha 拉取镜像的 secret name | | + +
+ +## .Values.operator + +> mogdb-operator 容器的相关配置。 + +| 名称 | 类型 | 描述 | 默认值 | +| ---------------------------------- | ------ | ----------------------------------------------------- | -------------------- | +| operator.image | string | operator 容器的镜像 | mogdb-operator:3.0.0 | +| operator.imagePullPolicy | string | operator 容器的镜像拉取策略 | IfNotPresent | +| operator.resources.limits.cpu | string | operator 容器的 cpu 限制,是容器使用资源的最高限制 | 500m | +| operator.resources.limits.memory | string | operator 容器的 memory 限制,是容器使用资源的最高限制 | 500Mi | +| operator.resources.requests.cpu | string | operator 容器的 cpu 请求,是容器能够启动的最低限制 | 500m | +| operator.resources.requests.memory | string | operator 容器的 memory 请求,是容器能够启动的最低限制 | 500Mi | + +
+ +## .Values.container + +> mogdb-operator 处理 mogdbcluster 时的相关配置。 + +| 名称 | 类型 | 描述 | 默认值 | +| -------------------------------------------------- | ------ | ------------------------------------------------------------ | ------------ | +| etcd.imagePullPolicy | string | 创建 mogdb 容器时的默认镜像拉取策略 | IfNotPresent | +| container.resources.limits.cpu | string | 创建 mogdb 容器时的默认 cpu 限制,是容器使用资源的最高限制 | 1 | +| container.resources.limits.memory | string | 创建 mogdb 容器时的默认 memory 限制,是容器使用资源的最高限制 | 4Gi | +| container.resources.requests.cpu | string | 创建 mogdb 容器时的默认 cpu 请求,是容器能够启动的最低限制 | 1 | +| container.resources.requests.memory | string | 创建 mogdb 容器时的默认 memory 请求,是容器能够启动的最低限制 | 4Gi | +| | | | | +| container.jobResources.limits.cpu | string | 创建 job 容器时的默认 cpu 限制,是容器使用资源的最高限制 | 1 | +| container.jobResources.limits.memory | string | 创建 job 容器时的默认 memory 限制,是容器使用资源的最高限制 | 4Gi | +| container.jobResources.requests.cpu | string | 创建 job 容器时的默认 cpu 请求,是容器能够启动的最低限制 | 1 | +| container.jobResources.requests.memory | string | 创建 job 容器时的默认 memory 请求,是容器能够启动的最低限制 | 4Gi | +| container.metricsExporterResources.limits.cpu | string | 创建 exporter 容器时的默认 cpu 限制,是容器使用资源的最高限制 | 500m | +| container.metricsExporterResources.limits.memory | string | 创建 exporter 容器时的默认 memory 限制,是容器使用资源的最高限制 | 500Mi | +| container.metricsExporterResources.requests.cpu | string | 创建 exporter 容器时的默认 cpu 请求,是容器能够启动的最低限制 | 500m | +| container.metricsExporterResources.requests.memory | string | 创建 exporter 容器时的默认 memory 请求,是容器能够启动的最低限制 | 500Mi | + +
+ +## .Values.rclone + +> mogdb-operator 执行备份恢复时所需的 rclone 配置。 + +| 名称 | 类型 | 描述 | 默认值 | +| -------------------- | ------ | ---------------- | --------------------- | +| rclone.s3.provider | string | s3 提供者 | Minio | +| rclone.s3.endpoint | string | s3 的链接地址 | | +| rclone.s3.access_key | string | s3 的 access key | root | +| rclone.s3.secret_key | string | s3 的 secret key | root | + +
+ +## .Values.license + +| 名称 | 类型 | 描述 | 默认值 | +| ----------------- | ------ | ------------- | ------ | +| license.licValue | string | mogdb license | | +| license.encodeStd | string | mogdb license | | diff --git a/product/zh/docs-mogdb-stack/v3.0/references/charts/multi-cluster.md b/product/zh/docs-mogdb-stack/v3.0/references/charts/multi-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..57e0426e9a8d05eb878b1bca62c6bf60059ec843 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/charts/multi-cluster.md @@ -0,0 +1,68 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: helm charts multi-cluster values +summary: helm charts multi-cluster values +--- + +# helm charts multi-cluster values + +## .Values + +| 名称 | 类型 | 描述 | 默认值 | +| ------- | ------ | ------------------ | ------ | +| backup | object | mogdb 备份相关配置 | nil | +| restore | object | mogdb 恢复相关配置 | nil | + +
+ +## .Values.templates + +> mogdb 容器的配置模板,被所有的数据中心所使用,同时可被具体的数据中心配置所覆盖。 + +| 名称 | 类型 | 描述 | 默认值 | +| ----------------------------------------- | ------ | -------------------------------------------------- | ------------------------------------------------------------ | +| templates.replica | int | mogdb 副本数 | 2 | +| templates.ha.url | string | mogdb ha 组件的访问路径 | | +| templates.ha.scope | string | mogdb ha 的 scope | default | +| templates.mogdb.resources.limits.cpu | string | mogdb 容器的 cpu 限制,是容器使用资源的最高限制 | 500m | +| templates.mogdb.resources.limits.memory | string | mogdb 容器的 memory 限制,是容器使用资源的最高限制 | 1Gi | +| templates.mogdb.resources.requests.cpu | string | mogdb 容器的 cpu 请求,是容器能够启动的最低限制 | 500m | +| templates.mogdb.resources.requests.memory | string | mogdb 容器的 memory 请求,是容器能够启动的最低限制 | 1Gi | +| templates.mogdb.volume.storageClass | string | mogdb pod 所使用的 kubernetes 存储类型 | default | +| templates.mogdb.volume.dataVolumeSize | string | mogdb 容器挂载的数据卷的大小 | 1Gi | +| templates.mogdb.volume.backupVolumeSize | string | mogdb 容器挂载的备份数据卷的大小 | 1Gi | +| templates.images.imagePullPolicy | string | 容器的镜像拉取策略 | IfNotPresent | +| templates.images.initImage | string | init 镜像 | swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-init:3.1.0 | +| templates.images.mogdbImage | string | mogdb 镜像 | swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb:3.1.0 | +| templates.images.sidecarImage | string | sidecar 镜像 | swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-agent:3.0.0 | + +
+ +## .Values.primaryDC + +> mogdb 主数据中心配置。 + +| 名称 | 类型 | 描述 | 默认值 | +| --------------- | ------ | ---------------------------------------- | --------------------- | +| name | string | 主数据中心名称 | dc0 | +| region | string | 主数据中心区域 | dc0 | +| namespace | string | 主数据中心位于 kubernetes 中的命名空间 | mogdb-operator-system | +| kubeContextName | string | 主数据中心 kubernetes 的连接配置定位 | data-plane0 | +| spec | object | 主数据中心配置说明,与 template 结构一致 | nil | + +
+ +## .Values.standbyDCs + +> mogdb 备份数据中心配置,可以传递多个。 + +| 名称 | 类型 | 描述 | 默认值 | +| --------------- | ------ | ---------------------------------------- | --------------------- | +| name | string | 备份数据中心名称 | dc0 | +| region | string | 备份数据中心区域 | dc0 | +| namespace | string | 备份数据中心位于 kubernetes 中的命名空间 | mogdb-operator-system | +| kubeContextName | string | 备份数据中心 kubernetes 的连接配置定位 | data-plane0 | +| spec | object | 主数据中心配置说明,与 template 结构一致 | nil | + +
diff --git a/product/zh/docs-mogdb-stack/v3.0/references/charts/multi-operator.md b/product/zh/docs-mogdb-stack/v3.0/references/charts/multi-operator.md new file mode 100644 index 0000000000000000000000000000000000000000..400f249f949c4335c9c474248850a680249a415f --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/charts/multi-operator.md @@ -0,0 +1,36 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: helm charts multi-operator values +summary: helm charts multi-operator values +--- + +# helm charts multi-operator values + +## .Values + +| 名称 | 类型 | 描述 | 默认值 | +| ----------------------- | -------- | ------------------------------ | ------ | +| withCRD | bool | 是否一并安装 CRD | false | +| singleNamespace | bool | 是否以单集群模式运行 | false | +| enableControl | bool | 是否为控制平面 | true | +| enablePrometheusMonitor | bool | 是否开启普罗米修斯监控接口 | true | +| imagePullSecrets | []string | 定义 ha 拉取镜像的 secret | | +| imagePullSecretNames | []string | 定义 ha 拉取镜像的 secret name | | + +
+ +## .Values.operator + +> mogdb-operator 容器的相关配置。 + +| 名称 | 类型 | 描述 | 默认值 | +| ---------------------------------- | ------ | ----------------------------------------------------- | -------------------- | +| operator.image | string | operator 容器的镜像 | multi-operator:3.0.0 | +| operator.imagePullPolicy | string | operator 容器的镜像拉取策略 | IfNotPresent | +| operator.resources.limits.cpu | string | operator 容器的 cpu 限制,是容器使用资源的最高限制 | 500m | +| operator.resources.limits.memory | string | operator 容器的 memory 限制,是容器使用资源的最高限制 | 500Mi | +| operator.resources.requests.cpu | string | operator 容器的 cpu 请求,是容器能够启动的最低限制 | 500m | +| operator.resources.requests.memory | string | operator 容器的 memory 请求,是容器能够启动的最低限制 | 500Mi | + +
diff --git a/product/zh/docs-mogdb-stack/v3.0/references/client/multictl.md b/product/zh/docs-mogdb-stack/v3.0/references/client/multictl.md new file mode 100644 index 0000000000000000000000000000000000000000..84a2205b459d3f097ecfa65dd7fd28fe3e63d2da --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/client/multictl.md @@ -0,0 +1,354 @@ +--- +date: 2023-10-12 +author: andong.zhu +title: MogDB multictl client +summary: MogDB multictl client +--- + +# multictl 介绍 + +multictl 是一个命令行工具,主要是通过命令行进行多集群的信息查询及主备切换。其包括三大类基础命令,分别是 list,get 和 switch,其中,list 的功能是展示多集群的信息, get 的功能是获取诸如 pod,svc,pv,pvc,sts 等资源的信息,switch 的功能是主备切换。 + +下面是一些全局参数,可以在任意一个指令中增加参数: +| 参数 | 说明 | +| ---- | ---- | +| --as string | Username to impersonate for the operation. User could be a regular user or a service account in a namespace. +| --as-group stringArray | Group to impersonate for the operation, this flag can be repeated to specify multiple groups. +| --as-uid string | UID to impersonate for the operation. +| --cache-dir string | Default cache directory (default "/root/.kube/cache") +| --certificate-authority string | Path to a cert file for the certificate authority +| --client-certificate string | Path to a client certificate file for TLS +| --client-key string | Path to a client key file for TLS +| --context string | The name of the kubeconfig context to use +| --disable-compression | If true, opt-out of response compression for all requests to the server +| --insecure-skip-tls-verify | If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure +| --kubeconfig string | Path to the kubeconfig file to use for CLI requests. +| -n, --namespace string | If present, the namespace scope for this CLI request +| --request-timeout string | The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") +| -s, --server string | The address and port of the Kubernetes API server +| --tls-server-name string | Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used +| --token string | Bearer token for authentication to the API server +| --user string | The name of the kubeconfig user to use + +## list + +通过以下指令获取集群信息: + +```shell +multictl list -n mogdb-operator-system +``` + +可以得到以下结果 + +```shell ++---------------+-------------------------------+ +| NAME | CREATE TIMESTAMP | ++---------------+-------------------------------+ +| multi-cluster | 2023-10-12 09:05:23 +0000 UTC | ++---------------+-------------------------------+ +``` + +
+ +## get + +get 参数如下: + +| 参数 | 说明 | +| ---- | ---- | +| -c, --cluster string | The cluster name (default "cls") +| -h, --help | help for get +| -o, --output string | Output format + +
+ +### get pod + +使用以下指令获取 pod 信息: + +```shell +multictl get pod -c multi-cluster -n mogdb-operator-system +``` + +可以得到以下结果: + +```shell ++--------+-------------+-----------------+---------+-------+---------+---------+-------------------------------+ +| REGION | NAMESPACE | NAME | ROLE | READY | STATUS | RESTART | CREATE TIMESTAMP | ++--------+-------------+-----------------+---------+-------+---------+---------+-------------------------------+ +| dc1 | data-plane1 | dc1-sts-77kjj-0 | standby | 2/2 | Running | 0 | 2023-10-12 09:06:03 +0000 UTC | +| dc1 | data-plane1 | dc1-sts-hf2wd-0 | standby | 2/2 | Running | 0 | 2023-10-12 09:05:30 +0000 UTC | +| dc2 | data-plane2 | dc2-sts-m5l5f-0 | standby | 2/2 | Running | 0 | 2023-10-12 09:06:09 +0000 UTC | +| dc2 | data-plane2 | dc2-sts-wdxlk-0 | primary | 2/2 | Running | 0 | 2023-10-12 09:06:14 +0000 UTC | ++--------+-------------+-----------------+---------+-------+---------+---------+-------------------------------+ +``` + +
+ +### get svc + +使用以下指令获取 svc 信息: + +```shell +multictl get svc -c multi-cluster -n mogdb-operator-system +``` + +可以得到以下结果 + +```shell ++--------+-------------+------------------+-----------+---------------+-------------+--------------------+-------------------------------+ +| REGION | NAMESPACE | NAME | TYPE | CLUSTER-IP | EXTERNAL-IP | PORT(S) | CREATE TIMESTAMP | ++--------+-------------+------------------+-----------+---------------+-------------+--------------------+-------------------------------+ +| dc1 | data-plane1 | dc1-svc-headless | ClusterIP | None | | 26000/TCP,9187/TCP | 2023-10-12 17:05:29 +0800 CST | +| dc1 | data-plane1 | dc1-svc-master | NodePort | 10.96.247.134 | | 26000:30013/TCP | 2023-10-12 17:05:29 +0800 CST | +| dc1 | data-plane1 | dc1-svc-replicas | NodePort | 10.96.141.34 | | 26000:30012/TCP | 2023-10-12 17:05:29 +0800 CST | +| dc2 | data-plane2 | dc2-svc-headless | ClusterIP | None | | 26000/TCP,9187/TCP | 2023-10-12 17:06:08 +0800 CST | +| dc2 | data-plane2 | dc2-svc-master | NodePort | 10.96.128.123 | | 26000:30015/TCP | 2023-10-12 17:06:08 +0800 CST | +| dc2 | data-plane2 | dc2-svc-replicas | NodePort | 10.96.101.46 | | 26000:30014/TCP | 2023-10-12 17:06:08 +0800 CST | ++--------+-------------+------------------+-----------+---------------+-------------+--------------------+-------------------------------+ +``` + +
+ +### get sts + +使用以下指令获取 sts 信息: + +```shell +multictl get sts -c multi-cluster -n mogdb-operator-system +``` + +可以得到以下结果 + +```shell ++--------+-------------+---------------+---------+-------+-------------------------------+ +| REGION | NAMESPACE | NAME | ROLE | READY | CREATE TIMESTAMP | ++--------+-------------+---------------+---------+-------+-------------------------------+ +| dc1 | data-plane1 | dc1-sts-77kjj | standby | 1/1 | 2023-10-12 17:06:03 +0800 CST | +| dc1 | data-plane1 | dc1-sts-hf2wd | standby | 1/1 | 2023-10-12 17:05:30 +0800 CST | +| dc2 | data-plane2 | dc2-sts-m5l5f | standby | 1/1 | 2023-10-12 17:06:09 +0800 CST | +| dc2 | data-plane2 | dc2-sts-wdxlk | primary | 1/1 | 2023-10-12 17:06:14 +0800 CST | ++--------+-------------+---------------+---------+-------+-------------------------------+ +``` + +
+ +## switch + +switch 的参数如下: + +| 参数 | 说明 | +| ---- | ---- | +| -c, --cluster string | The cluster name (default "cls") | +| -h, --help | help for switch | +| -i, --instance string | The instance name for switch | +| -r, --region string | The region name for switch | + +
+ +其中 -c 参数是必须的,需要集群的名字,集群的名字可以通过以下指令获得: + +```shell +kubectl get multicluster -A +``` + +
+ +### switch -r + +参数 -r 提供了将 MogDB 主节点切换到不同数据中心的功能,首先我们通过以下指令查看多集群有哪些节点: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/name=mogdb" +``` + +可以得到类似以下结果: + +```shell +data-plane1 dc1-sts-77kjj-0 2/2 Running 0 112m +data-plane1 dc1-sts-hf2wd-0 2/2 Running 0 112m +data-plane2 dc2-sts-m5l5f-0 2/2 Running 0 112m +data-plane2 dc2-sts-wdxlk-0 2/2 Running 0 112m +``` + +可以看到目前有两个中心并分别存在两个 MogDB 的节点,通过以下指令获取主节点: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/role=primary" +``` + +可以得到类似以下结果: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane1 dc1-sts-77kjj-0 2/2 Running 0 112m +``` + +可以看到目前的主节点处于 data-plane1 中心,使用以下客户端命令进行主节点切换,将主节点切换到 data-plane2 中心: + +```shell +multictl switch -c multi-cluster -n mogdb-operator-system -r dc2 +``` + +此时查看主节点信息: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/role=primary" +``` + +可以看到主节点顺利的从 data-plane1 中心切换到了 data-plane2 中心: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane2 dc2-sts-wdxlk-0 2/2 Running 0 112m +``` + +
+ +### switch -i + +参数 -i 提供了将 MogDB 主节点切换到不同节点的功能,可以是同数据中心,也可以是不同的数据中心,首先我们通过以下指令查看多集群有哪些节点: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/name=mogdb" +``` + +可以得到类似以下结果: + +```shell +data-plane1 dc1-sts-77kjj-0 2/2 Running 0 112m +data-plane1 dc1-sts-hf2wd-0 2/2 Running 0 112m +data-plane2 dc2-sts-m5l5f-0 2/2 Running 0 112m +data-plane2 dc2-sts-wdxlk-0 2/2 Running 0 112m +``` + +可以看到目前有两个中心并分别存在两个 MogDB 的节点,通过以下指令获取主节点: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/role=primary" +``` + +可以得到类似以下结果: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane2 dc2-sts-wdxlk-0 2/2 Running 0 112m +``` + +-i 需要提供 statefulset的名字,即 pod 的名字去掉 -0 +可以看到目前的主节点为 dc2-sts-wdxlk-0,使用以下客户端命令进行主节点切换,将主节点切换到其他节点: + +```shell +multictl switch -c multi-cluster -n mogdb-operator-system -i dc1-sts-hf2wd +``` + +此时查看主节点信息: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/role=primary" +``` + +可以看到主节点顺利的切换到了 data-plane1 中心的节点 dc1-sts-hf2wd-0: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane1 dc1-sts-hf2wd-0 2/2 Running 0 113m +``` + +再次通过以下指令查看多集群有哪些节点: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/name=mogdb" +``` + +可以得到类似以下结果: + +```shell +data-plane1 dc1-sts-77kjj-0 2/2 Running 0 113m +data-plane1 dc1-sts-hf2wd-0 2/2 Running 0 113m +data-plane2 dc2-sts-m5l5f-0 2/2 Running 0 113m +data-plane2 dc2-sts-wdxlk-0 2/2 Running 0 113m +``` + +
+ +最后可以通过 exec 指令获取主备信息: + +```shell +kubectl exec -it -n data-plane1 dc1-sts-hf2wd-0 -- gosu omm gs_ctl query -D /var/lib/mogdb/data/" +``` + +可以看到主备信息如下: + +```shell + HA state: + local_role : Primary + static_connections : 3 + db_state : Normal + detail_information : Normal + + Senders info: + sender_pid : 4136 + local_role : Primary + peer_role : Standby + peer_state : Normal + state : Streaming + sender_sent_location : 0/700CF38 + sender_write_location : 0/700CF38 + sender_flush_location : 0/700CF38 + sender_replay_location : 0/700CF38 + receiver_received_location : 0/700CF38 + receiver_write_location : 0/700CF38 + receiver_flush_location : 0/700CF38 + receiver_replay_location : 0/700CF38 + sync_percent : 100% + sync_state : Quorum + sync_priority : 1 + sync_most_available : On + channel : 10.244.1.9:26001-->10.244.1.7:45532 + + sender_pid : 4135 + local_role : Primary + peer_role : Standby + peer_state : Normal + state : Streaming + sender_sent_location : 0/700CF38 + sender_write_location : 0/700CF38 + sender_flush_location : 0/700CF38 + sender_replay_location : 0/700CF38 + receiver_received_location : 0/700CF38 + receiver_write_location : 0/700CF38 + receiver_flush_location : 0/700CF38 + receiver_replay_location : 0/700CF38 + sync_percent : 100% + sync_state : Quorum + sync_priority : 1 + sync_most_available : On + channel : 10.244.1.9:26001-->10.244.1.8:33418 + + sender_pid : 4137 + local_role : Primary + peer_role : Standby + peer_state : Normal + state : Streaming + sender_sent_location : 0/700CF38 + sender_write_location : 0/700CF38 + sender_flush_location : 0/700CF38 + sender_replay_location : 0/700CF38 + receiver_received_location : 0/700CF38 + receiver_write_location : 0/700CF38 + receiver_flush_location : 0/700CF38 + receiver_replay_location : 0/700CF38 + sync_percent : 100% + sync_state : Quorum + sync_priority : 1 + sync_most_available : On + channel : 10.244.1.9:26001-->10.244.1.6:43494 + + Receiver info: +No information +``` + +此节点的 HA state:local_role 为 Primary 则证明主备切换成功 + +
\ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/references/helm-charts b/product/zh/docs-mogdb-stack/v3.0/references/helm-charts new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/product/zh/docs-mogdb-stack/v3.0/references/server/crd/kubeclientconfigs.md b/product/zh/docs-mogdb-stack/v3.0/references/server/crd/kubeclientconfigs.md new file mode 100644 index 0000000000000000000000000000000000000000..00e07cd3b960102f6ce5883b60be089e2cb7b484 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/server/crd/kubeclientconfigs.md @@ -0,0 +1,32 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: CRD kubeclientconfig +summary: CRD kubeclientconfig +--- + +# CRD kubeclientconfig + +## kubeClientConfig + +> KubeClientConfig 是 multi-operator 所需的 CRD。 +> +> 它定义了控制平面连接数据平面所需的 KubeClient 配置,以便控制平面控制数据平面。 + +| 名称 | 类型 | 描述 | 必选项 | +| ---------- | ------ | -------------------------------- | ------ | +| kind | string | KubeClientConfig | true | +| apiVersion | string | mogdb.enmotech.io/v1 | true | +| metadata | object | 相关字段参考 Kubernetes API 文档 | true | +| spec | object | 定义 KubeClientConfig 期望的状态 | true | + +
+ +## KubeClientConfig.spec + +> 定义 KubeClientConfig 期望的状态。 + +| 名称 | 类型 | 描述 | 必选项 | +| ---------------- | ------- | --------------------------------------- | ------ | +| ContextName | string | 子集群的标识 | false | +| KubeConfigSecret | object | 连接子集群所需 kubeconfig 所在的 secret | true | diff --git a/product/zh/docs-mogdb-stack/v3.0/references/server/crd/mogdbclusters.md b/product/zh/docs-mogdb-stack/v3.0/references/server/crd/mogdbclusters.md new file mode 100644 index 0000000000000000000000000000000000000000..93e38ad126f9d00fcdd3ca2d2e898e725bab5db5 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/server/crd/mogdbclusters.md @@ -0,0 +1,311 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: CRD kubeclientconfig +summary: CRD kubeclientconfig +--- + +# CRD mogdbcluster + +## mogdbCluster + +> MogdbCluster 是 mogdb-operator 所需的 CRD。它描述了一个 mogdb 集群的期望状态。 + +| 名称 | 类型 | 描述 | 必选项 | +| ---------- | ------ | -------------------------------- | ------ | +| kind | string | MogdbPodTemplate | true | +| apiVersion | string | mogdb.enmotech.io/v1 | true | +| metadata | object | 相关字段参考 Kubernetes API 文档 | true | +| spec | object | 定义 mogdbCluster 期望的状态 | false | +| status | object | 定义 mogdbCluster 观测到的状态 | false | + +
+ +## mogdbCluster.spec + +> 定义 mogdbCluster 期望的状态。 + +| 名称 | 类型 | 描述 | 必选项 | +| --------------- | ------ | ------------------------------------------------------------ | ------ | +| paused | bool | 是否暂停 opeartor 介入 | false | +| stopped | bool | 是否关闭集群 | false | +| ha | object | Ha 组件相关配置 | true | +| replicas | int | 期望的 mogdb 副本数 | true | +| readPort | int | mogdb service 只读端口 | true | +| writePort | int | mogdb service 读写端口 | true | +| podSpec | object | mogdb pod 期望的状态 | false | +| volumeSpec | object | 额外的自定义 vloumes,挂载到 mogdb pod | false | +| postgresConf | object | mogdb 配置文件配置项 | false | +| backup | object | 备份配置 | false | +| restore | object | 备份恢复配置 | false | +| dataSource | object | 备份恢复数据源 | false | +| rcloneConfigMap | string | rclone 配置文件的名字 | false | +| templates | object | 用于定位并使用各类模板 | false | +| useTemplates | object | 用于定位并使用 [mogdbClusterTemplate](mogdbclustertemplates.md) | false | + +
+ +## mogdbCluster.spec.ha + +> Ha 组件相关配置。 + +| 名称 | 类型 | 描述 | 必选项 | +| ----- | ------ | -------- | ------ | +| uRL | string | ha URL | true | +| scope | string | ha scope | false | + +
+ +## mogdbCluster.spec.podSpec + +| 名称 | 类型 | 描述 | 必选项 | +| ------------------ | ----------------- | ---------------------------- | ------ | +| labels | map[string]string | 自定义 label | false | +| annotations | map[string]string | 自定义 annotation | false | +| nodeSelector | map[string]string | 自定义 节点选择器 | false | +| mogdbVersion | string | mogdb 数据库的版本 | false | +| gaussPort | int | mogdb 端口 | false | +| image | string | mogdb 镜像 | false | +| initImage | string | mogdb init 镜像 | false | +| sidecarImage | string | sidecar 镜像 | false | +| sidecarHaImage | string | ha sidecar 镜像 | false | +| exporterImage | string | exporter 镜像 | false | +| imagePullPolicy | string | 镜像拉取策略 | false | +| priorityClassName | string | 优先级类名设置 | false | +| serviceAccountName | string | 服务账户名称 | false | +| resources | object | 资源限额 | false | +| sidecarResources | object | sidecar 容器资源限额 | false | +| affinity | object | 亲和性设置 | false | +| tolerations | []object | 容忍性设置 | false | +| volumeSpec | object | mogdb data volume 配置 | false | +| backupVolumeSpec | object | mogdb backup volume 类型配置 | false | +| volumes | []object | 额外的 volume 设置 | false | +| volumeMounts | []object | 额外的 volume 挂载设置 | false | +| containers | []object | 额外的容器设置 | false | +| initContainers | []object | 额外的初始化容器设置 | false | +| imagePullSecrets | []string | 额外的镜像拉取秘钥 | false | + +
+ +## MogdbCluster.spec.podSpec.volumeSpec + +> mogdb pod volume 类型配置,与 [mogdbCluster.spec.volumeSpec](#mogdbCluster.spec.volumeSpec) 保持一致。 + +
+ +## mogdbCluster.spec.volumeSpec + +> 额外的自定义 vloumes,挂载到 mogdb pod。 + +| 名称 | 类型 | 描述 | 必选项 | +| --------------------- | ------ | ---------------- | ------ | +| emptyDir | object | emptyDir类型的卷 | false | +| hostPath | object | hostPath类型的卷 | false | +| persistentVolumeClaim | object | pvc卷声明 | false | + +
+ +## mogdbCluster.spec.backup + +> 备份配置。 + +| 名称 | 类型 | 描述 | 必选项 | +| ------ | ------ | -------------- | ------ | +| image | string | 备份镜像 | false | +| auto | object | 自动周期性备份 | false | +| manual | object | 手动单次的备份 | false | + +
+ +## mogdbCluster.spec.backup.auto + +> 自动周期性备份。 + +| 名称 | 类型 | 描述 | 必选项 | +| -------------------------- | ------ | ------------------------------ | ------ | +| name | string | 备份名称 | false | +| suspend | bool | 是否暂停备份 | false | +| backupType | string | 备份类型(dumpall/basebackup) | false | +| backupSchedules | object | 备份策略 | false | +| backupFileHistoryLimit | int | 保留历史自大数量 | false | +| failedJobsHistoryLimit | int | 失败的 job 保留数量 | false | +| successfulJobsHistoryLimit | int | 成功的 job 保留数量 | false | +| storageProvider | object | 存储配置 | false | + +
+ +## MogdbCluster.spec.backup.auto.storageProvider + +> 存储配置。 + +| 名称 | 类型 | 描述 | 必选项 | +| ------------- | ------ | ----------- | ------ | +| rcloneStorage | object | rclone 配置 | false | + +
+ +## MogdbCluster.spec.backup.auto.storageProvider.rcloneStorage + +> rclone 存储配置。 + +| 名称 | 类型 | 描述 | 必选项 | +| --------- | ------ | ---- | ------ | +| name | string | 名字 | true | +| directory | string | 路径 | true | + +
+ +## mogdbCluster.spec.backup.manual + +> 手动单次的备份。 + +| 名称 | 类型 | 描述 | 必选项 | +| --------------- | ------ | ------------------------------ | ------ | +| id | string | 备份名称 | false | +| backupType | string | 备份类型(dumpall/basebackup) | false | +| storageProvider | object | 存储配置 | false | + +
+ +## MogdbCluster.spec.backup.manual.storageProvider + +> 存储配置。与 [MogdbCluster.spec.Backup.auto.storageProvider](#MogdbCluster.spec.Backup.auto.storageProvider) 保持一致。 + +
+ +## mogdbCluster.spec.restore + +> 备份恢复配置。 + +| 名称 | 类型 | 描述 | 必选项 | +| ---------- | ------ | -------------- | ------ | +| image | string | 镜像 | false | +| restoreId | string | 恢复标识ID | false | +| dataSource | object | 备份恢复数据源 | false | + +
+ +## mogdbCluster.spec.restore.dataSource + +> 备份恢复数据源,与 [mogdbCluster.spec.DataSource](mogdbCluster.spec.DataSource) 保持一致。 + +
+ +## mogdbCluster.spec.dataSource + +> 备份恢复数据源。 + +| 名称 | 类型 | 描述 | 必选项 | +| --------------- | ------ | ------------------------------ | ------ | +| type | string | 恢复类型(time/object) | true | +| target | string | 恢复对象 | true | +| clusterName | string | 目标集群名称 | true | +| backupType | string | 备份类型(dumpall/basebackup) | false | +| storageProvider | object | 存储配置 | false | + +
+ +## MogdbCluster.spec.dataSource.storageProvider + +> 存储配置。与 [MogdbCluster.spec.Backup.auto.storageProvider](#MogdbCluster.spec.Backup.auto.storageProvider) 保持一致。 + +## mogdbCluster.status + +| 名称 | 类型 | 描述 | 必选项 | +| --------------- | -------- | ------------------- | ------ | +| readyNodes | integer | 处于ready节点的个数 | true | +| conditions | []object | 集群状况 | true | +| nodes | []object | 节点状况 | true | +| RestoreStatus | object | 恢复状况 | true | +| BackupStatus | object | 备份状况 | true | +| StartupInstance | string | 开始实现 | true | +| FirstInstance | string | 第一次实现 | true | +| HaService | string | ha服务 | true | + +
+ +## mogdbCluster.status.conditions + +| 名称 | 类型 | 描述 | 必选项 | +| ------------------ | ------ | -------------- | ------ | +| type | string | 状况类型 | true | +| status | string | 状况的状态 | true | +| lastTransitionTime | time | 状况发生的时间 | true | +| reason | string | 状况的原因 | true | +| message | string | 状况信息 | true | + +
+ +## mogdbCluster.status.RestoreStatus + +| 名称 | 类型 | 描述 | 必选项 | +| -------------- | ------- | ------------ | ------ | +| id | string | 恢复ID | true | +| finished | bool | 是否已经结束 | true | +| startTime | time | 开始时间 | true | +| completionTime | time | 完成时间 | true | +| active | integer | 进行中数量 | true | +| succeeded | integer | 成功数量 | true | +| Failed | integer | 失败数量 | true | + +
+ +## mogdbCluster.status.BackupStatus + +| 名称 | 类型 | 描述 | 必选项 | +| ---------------- | -------- | -------- | ------ | +| ManualBackups | []object | 手动备份 | true | +| ScheduledBackups | []object | 自动备份 | true | + +
+ +## mogdbCluster.status.BackupStatus.ManualBackups + +| 名称 | 类型 | 描述 | 必选项 | +| -------------- | ------- | ------------ | ------ | +| name | string | 备份名称 | true | +| backupType | string | 备份类型 | true | +| backupLevel | string | 备份级别 | true | +| backupFile | string | 备份文件 | true | +| startTime | time | 开始时间 | true | +| completionTime | time | 结束时间动 | true | +| active | integer | 进行中数量 | true | +| succeeded | integer | 成功数量 | true | +| failed | integer | 失败数量 | true | +| finished | bool | 是否已经结束 | true | + +
+ +## mogdbCluster.status.BackupStatus.ScheduledBackups + +| 名称 | 类型 | 描述 | 必选项 | +| -------------- | ------- | ------------ | ------ | +| name | string | 备份名称 | true | +| backupType | string | 备份类型 | true | +| backupLevel | string | 备份级别 | true | +| backupFile | string | 备份文件 | true | +| startTime | time | 开始时间 | true | +| completionTime | time | 结束时间动 | true | +| active | integer | 进行中数量 | true | +| succeeded | integer | 成功数量 | true | +| failed | integer | 失败数量 | true | +| finished | bool | 是否已经结束 | true | + +
+ +## mogdbCluster.status.nodes + +| 名称 | 类型 | 描述 | 必选项 | +| ---------- | -------- | ------------------ | ------ | +| name | string | 集群节点状态的名称 | true | +| conditions | []object | 节点状况集合 | true | + +
+ +## mogdbCluster.status.nodes.conditions + +| 名称 | 类型 | 描述 | 必选项 | +| ------------------ | ------ | -------------- | ------ | +| type | string | 状况类型 | true | +| status | string | 状况的状态 | true | +| lastTransitionTime | time | 状况发生的时间 | true | diff --git a/product/zh/docs-mogdb-stack/v3.0/references/server/crd/mogdbclustertemplates.md b/product/zh/docs-mogdb-stack/v3.0/references/server/crd/mogdbclustertemplates.md new file mode 100644 index 0000000000000000000000000000000000000000..d0b2852ab432558b8f32866319607dd1cb606af8 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/server/crd/mogdbclustertemplates.md @@ -0,0 +1,32 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: CRD mogdbclustertemplate +summary: CRD mogdbclustertemplate +--- + +# CRD mogdbclustertemplate + +## mogdbClusterTemplate + +> mogdbClusterTemplate 是 mogdb-operator 所需的 CRD。它描述了一个 mogdb 集群的期望状态,但仅用作模板。 + +| 名称 | 类型 | 描述 | 必选项 | +| ---------- | ------ | -------------------------------- | ------ | +| kind | string | MogdbPodTemplate | true | +| apiVersion | string | mogdb.enmotech.io/v1 | true | +| metadata | object | 相关字段参考 Kubernetes API 文档 | true | +| spec | object | 定义 mogdbCluster 期望的状态 | false | +| status | object | 定义 mogdbCluster 观测到的状态 | false | + +
+ +## mogdbClusterTemplate.spec + +> 定义 mogdbCluster 期望的状态。与 [mogdbCluster.spec](mogdbclusters.md#mogdbCluster.spec) 保持一致。 + +
+ +## mogdbPodTemplate.status + +> 定义 mogdb pod 观测到的状态。与 [mogdbCluster.status](mogdbclusters.md#mogdbCluster.status) 保持一致。 diff --git a/product/zh/docs-mogdb-stack/v3.0/references/server/crd/mogdbpodtemplates.md b/product/zh/docs-mogdb-stack/v3.0/references/server/crd/mogdbpodtemplates.md new file mode 100644 index 0000000000000000000000000000000000000000..5720451e53322a170c9fe76df745b98f47b8b1a8 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/server/crd/mogdbpodtemplates.md @@ -0,0 +1,32 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: CRD mogdbpodtemplate +summary: CRD mogdbpodtemplate +--- + +# CRD mogdbpodtemplate + +## mogdbPodTemplate + +> mogdbPodTemplate 是 mogdb-operator 所需的 CRD。它描述了一个 mogdb 节点的期望状态,但仅用作模板。 + +| 名称 | 类型 | 描述 | 必选项 | +| ---------- | ------ | -------------------------------- | ------ | +| kind | string | MogdbPodTemplate | true | +| apiVersion | string | mogdb.enmotech.io/v1 | true | +| metadata | object | 相关字段参考 Kubernetes API 文档 | true | +| spec | object | 定义 mogdb pod 期望的状态 | false | +| status | object | 定义 mogdb pod 观测到的状态 | false | + +
+ +## mogdbPodTemplate.spec + +> 定义 mogdb pod 期望的状态。与 [kubernetes pod.spec](https://kubernetes.io/docs/concepts/workloads/pods/) 保持一致。 + +
+ +## mogdbPodTemplate.status + +> 定义 mogdb pod 观测到的状态。与 [kubernetes pod.spec](https://kubernetes.io/docs/concepts/workloads/pods/) 保持一致。 diff --git a/product/zh/docs-mogdb-stack/v3.0/references/server/crd/multiclusters.md b/product/zh/docs-mogdb-stack/v3.0/references/server/crd/multiclusters.md new file mode 100644 index 0000000000000000000000000000000000000000..899665806174e5fdd200c8ef750c79742ff33b64 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/server/crd/multiclusters.md @@ -0,0 +1,134 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: CRD kubeclientconfig +summary: CRD kubeclientconfig +--- + +# CRD multicluster + +## multiCluster + +> MultiCluster 是 multi-operator 所需的 CRD。 +> +> 它描述了部署一个跨 kubernetes 集群的 mogdb 集群的期望状态。 + +| 名称 | 类型 | 描述 | 必选项 | +| ---------- | ------ | -------------------------------- | ------ | +| kind | string | MultiCluster | true | +| apiVersion | string | mogdb.enmotech.io/v1 | true | +| metadata | object | 相关字段参考 Kubernetes API 文档 | true | +| spec | object | 定义 multiCluster 期望的状态 | false | +| status | object | 定义 multiCluster 观测到的状态 | false | + +
+ +## multiCluster.spec + +> MogdbClusterSpec 定义 multiCluster 期望的状态。 + +| 名称 | 类型 | 描述 | 必选项 | +| ------------------- | -------- | ------------------------------------------------------------ | ------ | +| template | object | 模板,描述 mogdb 的期望状态 | false | +| dataCenters | []object | 数据中心列表,描述 mogdb 在每个数据中心的期望状态 | true | +| secretsProvider | string | [保留 暂未使用] secret 提供方 | false | +| externalDatacenters | []string | [保留 暂未使用] 额外的数据中心 | false | +| superuserSecretRef | object | [保留 暂未使用] mogdb node 的超级用户,便于 operator 管理 mogdb 集群 | false | + +
+ +## multiCluster.spec.template + +> 模板,描述 mogdb 的期望状态。与 [mogdbCluster.spec](mogdbclusters.md#mogdbCluster.spec) 保持一致。 + +
+ +## multiCluster.spec.dataCenters + +> 数据中心列表,描述 mogdb 在每个数据中心的期望状态。 + +| 名称 | 类型 | 描述 | 必选项 | +| -------------- | ------ | --------------------------------------- | ------ | +| dataCenterMeta | object | 数据中心元数据 | true | +| dataCenterRole | string | 数据中心角色(primary/standby/cascade) | true | +| dataCenterSpec | object | 数据中心中 mogdb 的期望状态 | false | + +
+ +## multiCluster.spec.dataCenters.DataCenterMeta + +> 数据中心元数据。 + +| 名称 | 类型 | 描述 | 必选项 | +| --------------- | ------ | ------------------------------------------------------------ | ------ | +| name | string | 数据中心名称 | false | +| namespace | string | 数据中心命名空间 | false | +| region | string | 数据中心区域 | false | +| kubeContextName | string | 指向 [kubeclientconfigs](kubeclientconfigs.md),定位数据平面 | true | + +
+ +## multiCluster.spec.dataCenterSpec + +> 模板,描述 mogdb 的期望状态。与 [mogdbCluster.spec](mogdbclusters.md#mogdbCluster.spec) 保持一致。 + +
+ +## multiCluster.status + +> 定义 MultiCluster 观测到的状态。 + +| 名称 | 类型 | 描述 | 必选项 | +| --------------------- | -------- | ---------------------------------------- | ------ | +| status | string | 集群整体状态 | true | +| readyDCs | int32 | 处于 ready 状态的数据中心个数 | true | +| reconciledDCs | int32 | 正在 reconcile 中的数据中心个数 | true | +| conditions | []object | 集群状态列表,描述集群的状态 | true | +| dataCenters | []object | 数据中心状态列表,描述每个数据中心的状态 | true | +| primaryDataCenterMeta | object | 主数据中心的元数据信息 | true + +
+ +## multiCluster.status.conditions + +> 集群状态列表,描述集群的状态。 + +| 名称 | 类型 | 描述 | 必选项 | +| ------------------ | ------ | -------------- | ------ | +| type | string | 状况类型 | true | +| status | string | 状况的状态 | true | +| reason | string | 状况的原因 | true | +| message | string | 状况的信息 | true | +| lastTransitionTime | time | 状况发生的时间 | true | + +
+ +## multiCluster.status.dataCenters + +> 数据中心状态列表,描述每个数据中心的状态。 + +| 名称 | 类型 | 描述 | 必选项 | +| ------------------ | ------ | -------------------- | ------ | +| dataCenterMeta | object | 数据中心的元数据信息 | true | +| mogdbClusterStatus | object | 数据中心的状态信息 | true | +| primary | bool | 数据中心是否为主 | true | +| decommission | bool | 数据中心是否退役 | true | +| processing | bool | 数据中心是否在处理中 | true | + +
+ +## multiCluster.status.primaryDataCenterMeta + +> 主数据中心的元数据信息。与 [multiCluster.spec.dataCenters.DataCenterMeta](#multiCluster.spec.dataCenters.DataCenterMeta) 保持一致。 + +
+ +## multiCluster.status.dataCenters.dataCenterMeta + +> 数据中心的元数据信息。与 [multiCluster.spec.dataCenters.DataCenterMeta](#multiCluster.spec.dataCenters.DataCenterMeta) 保持一致。 + +
+ +## multiCluster.status.dataCenters.mogdbClusterStatus + +> 数据中心的 mogdb 状态。与 [mogdbCluster.status](mogdbclusters.md#mogdbcluster.status) 保持一致。 diff --git a/product/zh/docs-mogdb-stack/v3.0/references/server/sample/mogdbcluster-sample.md b/product/zh/docs-mogdb-stack/v3.0/references/server/sample/mogdbcluster-sample.md new file mode 100644 index 0000000000000000000000000000000000000000..b3c0e2ae3aa8ae7ca1c682ae5f9a00c160867178 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/server/sample/mogdbcluster-sample.md @@ -0,0 +1,59 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: MogDB Cluster CR 样例 +summary: MogDB Cluster CR 样例 +--- + +# MogDB Cluster CR 样例 + +如果您希望通过原生的 kubectl 命令创建一个 MogDB Cluster CR,可以通过编写简单的 yaml 文件,提交到 k8s。 + +下面是一个 mogdb cluster 样例,分别制定了数据卷、日志卷、备份卷以及基本的镜像配置,还有副本数等: + +```yaml +apiVersion: mogdb.enmotech.io/v1 +kind: MogdbCluster +metadata: + name: mogdb + namespace: mogdb-operator-system + labels: + name: mogdb + mogdb.enmotech.io/cluster: mogdb +spec: + replicas: 2 + readPort: 30012 + writePort: 30013 + ha: + scope: default + url: http://mogdb-ha.mogdb-ha.svc.cluster.local:6544 + podSpec: + volumeSpec: + persistentVolumeClaim: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: default + backupVolumeSpec: + persistentVolumeClaim: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: default + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb:3.1.0 + initImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-init:3.1.0 + sidecarImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-agent:3.0.0 + exporterImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-exporter:3.0.3 + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi +``` diff --git a/product/zh/docs-mogdb-stack/v3.0/references/server/sample/multicluster-sample.md b/product/zh/docs-mogdb-stack/v3.0/references/server/sample/multicluster-sample.md new file mode 100644 index 0000000000000000000000000000000000000000..0c5a31385ff1e8ddf2955fb4678c7e99a09182d5 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/references/server/sample/multicluster-sample.md @@ -0,0 +1,84 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: Multi Cluster CR 样例 +summary: Multi Cluster CR 样例 +--- + +# Multi Cluster CR 样例 + +如果您希望通过原生的 kubectl 命令创建一个 Multi Cluster CR,可以通过编写简单的 yaml 文件,提交到 k8s。 + +下面是一个两地三中心的 multi cluster 样例: + +```yaml +apiVersion: mogdb.enmotech.io/v1 +kind: MultiCluster +metadata: + name: mogdb + namespace: mogdb-operator-system + labels: + name: mogdb + mogdb.enmotech.io/cluster: mogdb +spec: + dataCenters: + - dataCenterRole: primary + name: dc0 + region: region0 + namespace: mogdb-operator-system + kubeContextName: data-plane0 + dataCenterSpec: + replicas: 2 + - dataCenterRole: standby0 + name: dc1 + region: region0 + namespace: mogdb-operator-system + kubeContextName: data-plane1 + dataCenterSpec: + replicas: 2 + - dataCenterRole: standby1 + name: dc2 + region: region1 + namespace: mogdb-operator-system + kubeContextName: data-plane2 + dataCenterSpec: + replicas: 2 + template: + replicas: 2 + readPort: 30012 + writePort: 30013 + ha: + scope: default + url: http://mogdb-ha.mogdb-ha.svc.cluster.local:6544 + podSpec: + volumeSpec: + persistentVolumeClaim: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: default + backupVolumeSpec: + persistentVolumeClaim: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: default + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb:3.1.0 + initImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-init:3.1.0 + sidecarImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-agent:3.0.0 + exporterImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-exporter:3.0.3 + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi +``` + +上述配置,分别制定了数据卷、日志卷、备份卷以及基本的镜像配置,还有副本数等,提交到系统将会创建一个MogDB 集群。 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/release.md b/product/zh/docs-mogdb-stack/v3.0/release.md new file mode 100644 index 0000000000000000000000000000000000000000..513be53cc99df8813ccb89fe7c0b413acf33169f --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/release.md @@ -0,0 +1,50 @@ +--- +title: 发布记录 +summary: 发布记录 +author: Wang Dong +date: 2023-06-30 +--- + +# 发布记录 + +## v3.0.0 + +发布日期:2023年6月30日 + +本次发布 MogDB stack v3.0.0 + +MogDB Stack Examples + ++ [mogdb-stack-examples](https://github.com/enmotech/mogdb-stack-examples) + +## v2.0.0 + +发布日期:2022年12月30日 + +本次发布 mgo客户端 v2.0.0 和 MogDB stack v2.0.0 + +mgo 客户端 + ++ [mgo_linux_x86_64](https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mgo_linux_x86_64) ++ [mgo_linux_arm64](https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mgo_linux_arm64) ++ [mgo_darwin_x86_64](https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mgo_darwin_x86_64) ++ [mgo_darwin_arm64](https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/mgo_darwin_arm64) + +MogDB Stack Examples + ++ [mogdb-stack-examples](https://github.com/enmotech/mogdb-stack-examples) + +## v1.0.0 + +发布日期:2022年6月30日 + +本次发布 mgo客户端 v1.0.0 和 MogDB operator v1.0.0 + +[MogDB operator](https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mogdb-operator-examples.tar) + +mgo 客户端 + ++ [mgo_linux_x86_64](https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mgo_linux_x86_64) ++ [mgo_linux_arm64](https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mgo_linux_arm64) ++ [mgo_darwin_x86_64](https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mgo_darwin_x86_64) ++ [mgo_darwin_arm64](https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mgo_darwin_arm64) \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/toc.md b/product/zh/docs-mogdb-stack/v3.0/toc.md new file mode 100644 index 0000000000000000000000000000000000000000..daeba5977978ae45368a01da845630ef11e09edd --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/toc.md @@ -0,0 +1,53 @@ + + + +# 文档 + +## MogDB Stack 文档目录 + ++ [关于 MogDB Stack](overview.md) ++ [快速上手](quick-start.md) ++ 软件安装 + + [helm(单集群模式)](installation/single-helm.md) + + [helm(多集群模式)](installation/multi-helm.md) + + [kustomize(单集群模式)](installation/single-kustomize.md) + + [kustomize(多集群模式)](installation/multi-kustomize.md) ++ 使用手册 + + 单机房 mogdb 集群 + + [开始](tutorial/single-cluster/getting-started.md) + + [创建与删除](tutorial/single-cluster/create-mogdb-cluster.md) + + [扩容与缩容](tutorial/single-cluster/scale-up-and-down.md) + + [备份与恢复](tutorial/single-cluster/backup-and-restore.md) + + [连接到 mogdb](tutorial/single-cluster/connect-to-mogdb.md) + + [定制您的单机房 mogdb 集群](tutorial/single-cluster/customize-mogdb-cluster.md) + + 多机房 mogdb 集群 + + [开始](tutorial/multi-cluster/getting-started.md) + + [创建与删除](tutorial/multi-cluster/create-mogdb-cluster.md) + + [扩容与缩容](tutorial/multi-cluster/resize-mogdb-cluster.md) + + [备份、恢复与克隆](tutorial/multi-cluster/backup-and-restore.md) + + [高可用](tutorial/multi-cluster/high availability.md) + + [连接到 mogdb](tutorial/multi-cluster/connect-to-mogdb.md) + + [定制您的多机房 mogdb 集群](tutorial/multi-cluster/customize-mogdb-cluster.md) ++ 架构 + + ++ 参考 + + 客户端 + + [multictl](references/client/multictl.md) + + helm charts + + [mogdb-ha](references/charts/mogdb-ha.md) + + [mogdb-operator](references/charts/mogdb-operator.md) + + [multi-operator](references/charts/multi-operator.md) + + [mogdb-cluster](references/charts/mogdb-cluster.md) + + [multi-cluster](references/charts/multi-cluster.md) + + 服务端 + + CRD 参考 + + [multiclusters](references/server/crd/multiclusters.md) + + [kubeclientconfigs](references/server/crd/kubeclientconfigs.md) + + [mogdbclusters](references/server/crd/mogdbclusters.md) + + [mogdbclustertemplates](references/server/crd/mogdbclustertemplates.md) + + [mogdbpodtemplates](references/server/crd/mogdbpodtemplates.md) + + CR 样例参考 + + [mogdbcluster 参考](references/server/sample/mogdbcluster-sample.md) + + [multicluster 参考](references/server/sample/multicluster-sample.md) ++ [FAQ](faq.md) ++ [发布记录](release.md) \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/backup-and-restore.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/backup-and-restore.md new file mode 100644 index 0000000000000000000000000000000000000000..a159ef55e07c69e0913f09e1beb91c73a7b6624c --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/backup-and-restore.md @@ -0,0 +1,376 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: 备份、恢复与克隆 +summary: 备份、恢复与克隆 +--- + +# 备份、恢复与克隆 + +本文档介绍如何对 Kubernetes 上的 MogDB 集群进行数据备份和数据恢复。 + +数据备份是 MogDB 集群的一个重要部分,我们可以执行数据库生命周期中可能发生的许多常见和高级操作: + +- 执行一次性/临时备份 +- 设置自动备份计划和保留策略 +- 执行“时间点恢复” +- 将数据克隆到新实例 + +以及更多。 + +## 设置存储库 + +我们在安装 mogdb-operator 时候已经对备份存储库配置做了初始化,我们可以通过以下命令观察它的配置信息: + +登录主数据中心: + +```shell +kubectl config --kubeconfig use-context +``` + +查看备份存储库配置: + +```shell +kubectl edit configmap mogdb-operator-rclone-config -n +``` + +预期输出: + +```shell +$ kubectl config --kubeconfig ~/.kube/config use-context kind-mogdb-stack-0 +Switched to context "kind-mogdb-stack-0". + +$ kubectl edit configmap mogdb-operator-rclone-config -n mogdb-operator-system +apiVersion: v1 +kind: ConfigMap +metadata: + name: mogdb-operator-rclone-config +data: + rclone.conf: | + [s3-remote] + type=s3 + provider=minio + endpoint=http://172.18.236.214:9000 + access_key_id=edeykTZsa9eZ1DSEsD21 + secret_access_key=8JTe5SQbdrpKGA912EmR0XDgHFqsKTBUX6gm600J +``` + +备份存储通信后端采用 rclone,有关 rclone 配置文件的相关信息,请参考[Documentation (rclone.org)](https://rclone.org/docs/#config-config-file)。 + +
+ +## 备份管理 + +MogDB 集群的备份配置位于 **spec.backup** 自定义资源部分,有关备份配置的详细说明,请参考[备份](../../references/server/crd/mogdbclusters.md#mogdbCluster.spec.backup)。 + +### 1.管理备份计划 + +operator 对于 MogDB 集群设置备份计划,他将不断的将备份内容存储在备份存储库中。 + +对于备份类型, 提供 **full-全量备份**,**incremental-增量备份**的方式帮助您从空间管理和优化策略上做出抉择。并且接受一个 [cron 格式](https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax)的字符串用于设置备份计划。其中全量备份通过 **spec.backup.auto.backupSchedules.full** 字段配置,增量备份通过 **spec.backup.auto.backupSchedules.incremental** 字段配置。 + +假设我们的备份策略是每周日凌晨 1 点进行全量备份。按照以下规范内容配置: + +```yaml +spec: + backup: + auto: + name: "auto" + backupSchedules: + full: "0 1 * * 0" + storageProvider: + rcloneStorage: + name: s3-remote + directory: backup + backupType: basebackup + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/remote-client:3.0.0 +``` + +为了管理计划备份,operator 将创建多个 Kubernetes CronJobs,这些作业将在指定时间段执行备份。备份将使用您指定的配置。 + +确保定期进行备份对于维护 MogDB 集群的健康状况非常重要。但是,您不需要保留所有备份:这可能会导致您耗尽空间!因此,设置备份保留策略也很重要。 + +
+ +### 2.管理备份保留 + +您可以设置多种类型备份保留: + ++ **spec.backup.auto.backupFileHistoryLimit**:备份文件保留数量限制 + ++ **spec.backup.auto.failedJobsHistoryLimit**:失败备份任务数量限制 + ++ **spec.backup.auto.successfulJobsHistoryLimit**:成功备份任务数量限制 + +让我们看一个备份计划中备份文件保留最多 7 个的示例: + +```yaml +spec: + backup: + auto: + name: "auto" + backupSchedules: + full: "0 1 * * 0" + storageProvider: + rcloneStorage: + name: s3-remote + directory: backup + backupType: basebackup + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/remote-client:3.0.0 + successfulJobsHistoryLimit: 7 +``` + +
+ +### 3.进行临时备份 + +有时您可能需要进行一次性备份,例如在重大应用程序更改或更新之前。 + +为了防止一个备份的反复提交我们需要一个 id 标识此次备份任务。**spec.backup.manual.id** 将满足这样的配置,您可以使用一个不重复的随机字符串填充它。 + +在 helm 中,只需修改 values 文件中的 对应数据中心描述的 .backup 内容即可。此处将 values 文件修改如下: + +```yaml +... +backup: + manual: + id: "001" + backupType: dumpall + storageProvider: + rcloneStorage: + name: s3-remote + directory: backup + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/remote-client:3.0.0 +``` + + 我们来尝试一次性备份吧!运行以下命令: + + ```shell + helm upgrade mogdb-stack/multi-cluster -n [-f ] [--set =...] + ``` + + 期望输出: + + ```shell + $ helm upgrade multi-mogdb helm/multi-cluster -n control-plane -f helm/multi-cluster/values.yaml + Release "multi-mogdb" has been upgraded. Happy Helming! + NAME: multi-mogdb + LAST DEPLOYED: Tue Jul 18 23:14:01 2023 + NAMESPACE: control-plane + STATUS: deployed + REVISION: 5 + TEST SUITE: None + NOTES: + Thank you for deploying MogDB Multi Cluster! + ``` + +此时,切换只主数据中心并观察 pods 内容: + +```shell +$ kubectl get pods +NAME READY STATUS RESTARTS AGE +mogdb-cluster-backup-xlhgf-wbm2s 1/1 Running 0 4s +mogdb-cluster-sts-f5zqj-0 2/2 Running 0 176m +mogdb-cluster-sts-z6kz6-0 2/2 Running 0 165m +mogdb-operator-controller-manager-86d4cfd876-gg986 1/1 Running 0 3h5m +``` + +您会发现一个关于 backup 的 pod 已经启动了,等待这个 pod 状态为 completed。这次一次性备份就完成了! + +
+ +### 4.进行周期性备份 + +有时您可能需要进行周期性备份,以保障数据不被丢失。 + +本例设置备份周期为十分钟,备份所使用的 rclone 配置为 s3-remote。 + +在 helm 中,只需修改 values 文件中的 对应数据中心描述的 .backup 内容即可。此处将 values 文件修改如下: + +```yaml +... +backup: + auto: + name: "auto" + backupSchedules: + full: "*/10 * * * *" + storageProvider: + rcloneStorage: + name: s3-remote + directory: backup + backupType: basebackup + backupFileHistoryLimit: 7 + failedJobsHistoryLimit: 7 + successfulJobsHistoryLimit: 7 + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/remote-client:3.0.0 +``` + +随后执行更新操作: + +```shell +helm upgrade mogdb-stack/multi-cluster -n [-f ] [--set =...] +``` + +期望输出: + +```shell +$ helm upgrade multi-mogdb helm/multi-cluster -n control-plane -f helm/multi-cluster/values.yaml +Release "multi-mogdb" has been upgraded. Happy Helming! +NAME: multi-mogdb +LAST DEPLOYED: Tue Jul 18 23:14:01 2023 +NAMESPACE: control-plane +STATUS: deployed +REVISION: 5 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Multi Cluster! +``` + +此时,切换只主数据中心并观察内容: + +```shell +# 检查主数据中心 +$ kubectl config --kubeconfig ~/.kube/config use-context kind-mogdb-stack-0 +$ kubectl get all -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=dc0" +NAME READY STATUS RESTARTS AGE +pod/dc0-auto-full-28161560-qjnwr 0/1 Completed 0 5m37s + +NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE +cronjob.batch/dc0-auto-full */10 * * * * False 0 78s + +NAME COMPLETIONS DURATION AGE +job.batch/dc0-auto-full-28161560 1/1 5m23s 31m +``` + +您会发现一个关于 backup 的 cronjob 已经启动了,且创建了第一次备份任务,等待该任务状态为 completed。第一次备份就完成了!与此同时,cronjob 仍会根据周期配置定期执行备份任务。 + +
+ +## 从备份中恢复 + +从备份中恢复时需要在描述文件中指定 restore 相关内容。 + +在 helm 中,只需修改 values 文件中的 对应数据中心描述的 .restore 内容即可。有关恢复配置的详细说明,请参考[恢复](../../references/server/crd/mogdbclusters.md#mogdbCluster.spec.restore)。 + +由于从备份中恢复为创建新集群,因此需要定制新的 values 文件,示例的 values 文件如下: + +```yaml +primaryDC: + name: dc0-backup + namespace: data-plane0 + region: "dc0" + kubeContextName: "data-plane0" + spec: + replica: 2 + readPort: 30012 + writePort: 30013 + mogdb: + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi + volume: + dataVolumeSize: 2Gi + backupVolumeSize: 2Gi + storageClass: default + + +templates: + replica: 2 + service: + readPort: 30012 + writePort: 30013 + mogdb: + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi + volume: + dataVolumeSize: 1Gi + backupVolumeSize: 1Gi + storageClass: default + ha: + url: http://mogdb-ha.mogdb-ha.svc.cluster.local:6544 + images: + imagePullPolicy: IfNotPresent + mogdbImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb:3.0.4 + initImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb:3.0.4 + exporterImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-exporter:3.0.3 + +restore: + restoreId: "001" + dataSource: + type: "object" + backupType: basebackup + clusterName: dc0 + storageProvider: + rcloneStorage: + name: s3-remote + directory: backup + target: basebackup-2023-07-18-15-25-11.tar.gz + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/remote-client:3.0.0 +``` + +> 注意: +> +> 恢复数据源需与备份配置保持一致,其中 target 为位于备份存储上的目标文件。 +> +> 备份数据源中的 clusterName,为老集群中 primaryDC 的名字,而非 multicluster 的名字。 +> +> 新集群与老集群所在位置需一致。即 primaryDC.namespace 与 primaryDC.kubeContextName 需要保持一致。 + +随后执行创建操作: + +```shell +helm install mogdb-stack/multi-cluster -n [-f ] [--set =...] +``` + +期望输出: + +```shell +$ helm install multi-mogdb-backup helm/multi-cluster -n control-plane -f helm/multi-cluster/values.yaml +NAME: multi-mogdb-backup +LAST DEPLOYED: Tue Jul 18 23:49:23 2023 +NAMESPACE: control-plane +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Multi Cluster! +``` + +以下命令将检查恢复出的 MogDB 集群是否正常运行: + +```shell +kubectl config --kubeconfig use-context \ +&& kubectl get all -n --selector="mogdb.enmotech.io/multi-cluster-name=" +``` + +预期输出: + +```shell +# 检查主数据中心 +$ kubectl config --kubeconfig ~/.kube/config use-context kind-mogdb-stack-0 +$ kubectl get all -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=dc0-backup" +NAME READY STATUS RESTARTS AGE +pod/dc0-backup-sts-rctcq-0 2/2 Running 0 3m43s +pod/dc0-backup-sts-9c4z7-0 2/2 Running 0 54s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/dc0-backup-svc-master NodePort 10.96.80.185 26000:30011/TCP 3m43s +service/dc0-backup-svc-replicas NodePort 10.96.35.250 26000:30010/TCP 3m43s +``` + +等待所有 Pod 资源处于 Running 状态,意味着集群恢复成功。 + +
+ +## 克隆集群 + +克隆集群与从备份中恢复过程相同,请参考[从备份中恢复](#从备份中恢复)。 diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/connect-to-mogdb.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/connect-to-mogdb.md new file mode 100644 index 0000000000000000000000000000000000000000..629c6e350a1c9d599b34e114d96a1638dc51481a --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/connect-to-mogdb.md @@ -0,0 +1,102 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: 连接 mogdb 集群 +summary: 连接 mogdb 集群 +--- + +# 连接 MogDB 集群 + +## 创建用户 + +在连接之前,需要创建用于连接数据库的用户。可以通过 kubectl 命令连接到主节点所在容器。 + +> **注意**:数据库内置用户 `mogdb` 用于 operator 管理集群使用,请**不要**修改该用户的相关内容。 + +```shell +# 切换到主节点所在机房 +kubectl config --kubeconfig use-context + +# 进入数据库所在节点 +kubectl exec -it pod/mogdb-cluster-sts-jxtqn-0 -c mogdb -n mogdb-operator-system -- /bin/bash + +# 连接数据库 +gosu omm gsql -dpostgres +``` + +创建用户: + +```sql +create user "" with login password "" ; +``` + +期望输出: + +```shell +# 切换到主节点所在机房 +$ kubectl config --kubeconfig ~/.kube/config use-context kind-mogdb-stack-1 +Switched to context "kind-mogdb-stack-1". + +$ kubectl exec -it pod/dc0-sts-82lgq-0 -c mogdb -n mogdb-operator-system -- /bin/bash + +root@dc0-sts-82lgq-0:/# gosu omm gsql -dpostgres + +gsql ((MogDB 3.0.4 build cc068866) compiled at 2023-03-03 17:46:59 commit 0 last mr ) +Non-SSL connection (SSL connection is recommended when requiring high-security) +Type "help" for help. + +MogDB=# create user test with login password "P@55w0rd!" ; +CREATE ROLE +``` + +之后您可根据需求对用户进行授权。 + +
+ +## 连接到 MogDB + +### 1.安装 gsql 客户端 + +相关内容请参考 [gsql | MogDB Docs](https://docs.mogdb.io/zh/mogdb/v3.1/gsql)。 + +### 2.连接到 MogDB 集群 + +默认情况下,MogDB Operator 将创建两个服务, 一个负载到主节点,一个负载到从节点。 + +首先获取所有可用服务的列表: + +```shell +kubectl get svc -n --selector="mogdb.enmotech.io/cluster=" +``` + +预期输出: + +```shell +$ kubectl get svc -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=dc0" +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/dc0-svc-master NodePort 10.96.58.154 26000:30013/TCP 10m +service/dc0-svc-replicas NodePort 10.96.17.44 26000:30012/TCP 10m +``` + +可以看到,主节点 service 开放端口为 30013,从节点 service 开放端口为 30012。您可以使用以下命令连接到数据库: + +```shell +gsql -h 127.0.0.1 -p 30013 -d postgres -U -W +``` + +期望输出: + +```shell +$ gsql -h 127.0.0.1 -p 30013 -d postgres -U test -W P@55w0rd! +gsql ((MogDB 3.0.4 build cc068866) compiled at 2023-03-03 17:46:59 commit 0 last mr ) +Non-SSL connection (SSL connection is recommended when requiring high-security) +Type "help" for help. + +MogDB=> +``` + +
+ +### 3.在 Kubernetes 集群之外 + +默认情况下,MogDB Operator 创建的服务类型为 NodePort,可将 service 端口和主机端口映射起来。只需要连接 "Host:Port" 即可。 diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/create-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/create-mogdb-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..f789572e8665e4a0a3e6b68b5d4a6699260fee8f --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/create-mogdb-cluster.md @@ -0,0 +1,229 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: 创建 mogdb 集群 +summary: 创建 mogdb 集群 +--- + +# 创建多机房 MogDB 集群 + +在开始本章前,请确保您已正确依据[开始](getting-started.md)完成 MogDB Stack 的安装与配置。 + +**注意:确保多个机房之前的 kubernetes 网络互通,否则部署无法成功。** + +
+ +## 术语 + +提前了解以下术语将有助于您阅读本文档。 + +- 数据平面:数据层,mogdb 真实存在的位置; +- 数据中心:每个数据平面被称为一个数据中心; +- 控制平面:控制层,用于控制 mogdb 在多个数据中心上的分配逻辑; + +注意:控制平面、数据平面、数据中心均为逻辑概念。实际上,控制平面和数据平面出现在同一 kubernetes 集群中是被允许的,多个数据平面也可以同时出现在一个 kubernetes 集群中。**在生产环境中我们推荐将控制平面、数据平面分开部署。** + +
+ +## 前置条件 + +- 已安装 [helm](https://helm.sh),具体请参考 +- 添加 [enmotech helm 发布仓](https://github.com/enmotech/charts) + +```shell +helm repo add mogdb-stack https://enmotech.github.io/charts +``` + +​ 期望输出: + +```shell +$ helm repo add mogdb-stack https://enmotech.github.io/charts +"mogdb-stack" has been added to your repositories + +$ helm search repo enmotech +NAME CHART VERSION APP VERSION DESCRIPTION +mogdb-stack/mogha 3.0.0 3.0.0 Helm chart for deploying MogDB Ha on Kubernetes +mogdb-stack/mogdb-monitor 3.0.0 3.0.0 A Helm chart for Kubernetes +mogdb-stack/mogdb-cluster 3.0.0 3.0.0 Helm chart for deploying MogDB Cluster on Kubernetes +mogdb-stack/multi-cluster 3.0.0 3.0.0 Helm chart for deploying MogDB Multi Cluster on Kubernetes +mogdb-stack/mogdb-operator 3.0.0 3.0.0 Helm chart for deploying MogDB Operator on Kubernetes +mogdb-stack/multi-operator 3.0.0 3.0.0 Helm chart for deploying MogDB Multi Operator on Kubernetes +``` + +
+ +## 部署多机房 MogDB 集群 + +> 由于多机房 mogdb 的 helm values 文件较为复杂。 +> +> 我们建议您下载 helm values 文件并直接修改。而不是使用 --set 传递参数。 + +```shell +wget https://raw.githubusercontent.com/enmotech/mogdb-stack-examples/main/helm/multi-cluster/values.yaml +``` + +在本例中将其修改如下,有关设置的详细信息说明请参考 [mogdb multi cluster charts value](../../references/charts/multi-cluster.md): + +其中主数据中心设置为 kind-mogdb-stack-0 集群,部署在 mogdb-operator-system 命名空间; + +设置一个备份数据中心,在 kind-mogdb-stack-1 集群,部署在 mogdb-operator-system 命名空间; + +```yaml +primaryDC: + name: dc0 + region: "dc0" + namespace: mogdb-operator-system + kubeContextName: "kind-mogdb-stack-0" + spec: + replica: 2 + readPort: 30012 + writePort: 30013 + mogdb: + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 1 + memory: 1Gi + volume: + dataVolumeSize: 2Gi + backupVolumeSize: 2Gi + storageClass: default + +standbyDCs: + - name: dc1 + region: "dc1" + namespace: mogdb-operator-system + kubeContextName: "kind-mogdb-stack-1" + spec: + replica: 2 + readPort: 30014 + writePort: 30015 + mogdb: + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi + volume: + dataVolumeSize: 1Gi + backupVolumeSize: 1Gi + storageClass: default + + +templates: + replica: 2 + service: + readPort: 30012 + writePort: 30013 + mogdb: + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi + volume: + dataVolumeSize: 1Gi + backupVolumeSize: 1Gi + storageClass: default + ha: + url: http://mogdb-ha.mogdb-ha.svc.cluster.local:6544 + images: + imagePullPolicy: IfNotPresent + mogdbImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb:3.1.0 + initImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-init:3.1.0 + sidecarImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-agent:dev.001 + exporterImage: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-exporter:3.0.3 + +backup: {} +restore: {} +``` + +随后部署多机房 mogdb 集群: + +```shell +helm install mogdb-stack/multi-cluster -n [-f ] [--set =...] +``` + +期望输出: + +```shell +$ helm install multi-mogdb helm/multi-cluster -n control-plane -f values.yaml +NAME: multi-mogdb +LAST DEPLOYED: Tue Jul 18 11:56:46 2023 +NAMESPACE: control-plane +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Multi Cluster! +``` + +
+ +## 检查安装 + +以下命令将检查 MogDB 节点是否正确运行: + +```shell +kubectl config --kubeconfig use-context \ +&& kubectl get all -n --selector="mogdb.enmotech.io/multi-cluster-name=" +``` + +预期输出: + +```shell +# 检查主数据中心 +$ kubectl config --kubeconfig ~/.kube/config use-context kind-mogdb-stack-1 +$ kubectl get all -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=dc0" +NAME READY STATUS RESTARTS AGE +pod/dc0-sts-82lgq-0 3/3 Running 0 10m +pod/dc0-sts-vrgqh-0 3/3 Running 0 5m10s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/dc0-svc-master NodePort 10.96.58.154 26000:30013/TCP 10m +service/dc0-svc-replicas NodePort 10.96.17.44 26000:30012/TCP 10m + +NAME READY AGE +statefulset.apps/dc0-sts-82lgq 1/1 10m +statefulset.apps/dc0-sts-vrgqh 1/1 5m10s + +# 检查副本数据中心 +$ kubectl config --kubeconfig ~/.kube/config use-context kind-mogdb-stack-2 +$ kubectl get all -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=dc1" +NAME READY STATUS RESTARTS AGE +pod/dc1-sts-tvgc2-0 3/3 Running 0 58s +pod/dc1-sts-vx4zt-0 3/3 Running 0 6m41s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/dc1-svc-master NodePort 10.96.242.192 26000:30015/TCP 6m42s +service/dc1-svc-replicas NodePort 10.96.43.104 26000:30014/TCP 6m42s + +NAME READY AGE +statefulset.apps/dc1-sts-tvgc2 1/1 58s +statefulset.apps/dc1-sts-vx4zt 1/1 6m41s +``` + +等待所有 Pod 资源处于 Running 状态,意味着集群创建成功。 + +
+ +## 卸载集群 + +以下命令将卸载集群: + +```shell +helm uninstall -n +``` + +期望输出: + +```shell +$ helm uninstall multi-mogdb -n mogdb-operator-system +release "multi-mogdb" uninstalled +``` diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/customize-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/customize-mogdb-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..a13a3a3c5a1dd297fb2666aa453defd63739db5a --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/customize-mogdb-cluster.md @@ -0,0 +1,96 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: 定制您的多机房 MogDB 集群 +summary: 定制您的多机房 MogDB 集群 +--- + +# 定制您的多机房 MogDB 集群 + +我们提供了两种方式供您创建 MogDB 集群。包括使用 helm,或者使用 manifest。请按需选择。 + +如若需要高度自定义多机房 mogdb 集群,我们建议您编写 multi-cluster manifest,绕过 helm 的限制。 + +
+ +## 使用 helm + +helm 安装集群自定义 MogDB 集群的配置有很多种。 您可以在 [multi cluster values](../../references/charts/multi-cluster.md) 中了解所有这些选项。 + +
+ +### 1.定义存储 + +MogDB 定义了存储目录可用配置。 + +数据库有各种不同的大小,而且这些大小肯定会随着时间而改变。因此能够指定要存储 MogDB 数据的 PVC 大小是很有帮助的。 + +
+ +**定义 MogDB 数据目录** + +helm 依据 values 值允许您使用 `--set mogdb.volume.dataVolumeSize=` 标志选择 `MogDB 数据目录`的大小。PVC 大小应该使用标准的 Kubernetes 资源单元,例如 128Mi。 + +以下命令将创建一个具有 20Gi 大小目录的 MogDB 集群: + +```shell +helm install mogdb-stack/mogdb-cluster -n --set mogdb.volume.dataVolumeSize=20Gi +``` + +并且还可以使用 `--set mogdb.volume.storageClass=` 的标志来配置自定义存储类 + +
+ +### 2.定义内存/CPU + +数据库具有不同的 CPU 和内存要求,这通常取决于工作集中的数据量(即主动访问的数据)。Kubernetes 为 Pod 提供了几种管理 CPU 和内存资源的方法: + ++ Limits:该字段定义了 pod 所能使用资源的最大限额; ++ Requests:该字段定义了 pod 需要使用资源的最小限额,会影响 pod 的调度; + +一般的,我们可以理解为 pod 所使用的资源介于 [requests, limits] 的区间中。 + +**注意:如果 pod 使用的内存超出了 limits 限制,kubernetes 将尝试终止任何导致超出限制的进程。因此内存限制可能会影响 MogDB 的可用性,我们建议谨慎使用它们。** + +下面介绍如何自定义可用于 MogDB 节点的 CPU 和内存资源。自定义 CPU 和内存确实会为您的 MogDB 集群添加更多资源,但要充分利用额外资源,您将需要自定义 MogDB 配置并调整参数 shared_buffers 等。 + +**为 MogDB 定制内存/CPU** + +helm 依据 values 提供了几个标志来帮助管理 MogDB 实例的资源: + ++ mogdb.resources.limits.cpu:指定 MogDB 实例的 CPU 限制 ++ mogdb.resources.requests.cpu:指定 MogDB 实例的 CPU 请求 ++ mogdb.resources.limits.memory: 指定 MogDB 实例的内存限制 ++ mogdb.resources.requests.memory:指定 MogDB 实例的内存请求 + +以下命令将创建一个 CPU 请求为 1.0,CPU 限制为 2.0,内存请求为 1Gi,内存限制为 2Gi 的 MogDB 集群: + +```shell +helm install mogdb-stack/mogdb-cluster/ -n \ +--set mogdb.resources.limits.cpu=2.0 --set mogdb.resources.limits.memory=2Gi \ +--set mogdb.resources.requests.cpu=1.0 --set mogdb.resources.requests.memory=1Gi +``` + +
+ +### 3.创建高可用性 MogDB 集群 + +高可用性允许您部署具有冗余的 MogDB 集群,即使您的主实例发生停机事件,您的应用程序也可以访问它们。MogDB 集群使用 Kubernetes 附带的分布式共识存储系统,因此可用性与 Kubernetes 集群的可用性相关联。 + +要创建具有一个副节点的高可用性 MogDB 集群,您可以运行以下命令: + +```shell +helm install mogdb-stack/mogdb-cluster/ -n --set replica=2 +``` + +
+ +## 编写您的 manifest + +有关 multi-cluster CRD 的说明,请参考 [multiclusters](../../references/server/crd/multiclusters.md)。 + +同时我们为您提供了 multi-cluster 的 manifest 样例,请参考 [multicluster 参考](../../references/server/sample/multicluster-sample.md)。 + +通过参照 CRD 字段说明,对 manifest 对应字段进行修改,即可完成对 MogDB 集群的高度定制。 + +
diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/getting-started.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/getting-started.md new file mode 100644 index 0000000000000000000000000000000000000000..7586cbff5a6209b7af7f9bf025005c73a86d29e6 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/getting-started.md @@ -0,0 +1,12 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: 开始 +summary: 开始 +--- + +# 开始 + +**注意:在本章中,除特别说明,所有命令均在控制平面进行。** + +如果您尚未安装多 kubernetes 集群模式 MogDB Stack,请参考[软件安装](../../installation/multi-helm.md)部分。 diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/high-availability.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/high-availability.md new file mode 100644 index 0000000000000000000000000000000000000000..4bb272a2ee244f599bb838e09bf7559504317137 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/high-availability.md @@ -0,0 +1,278 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: 高可用 +summary: 高可用 +--- + +# 高可用 + +## 概述 + +高可用是 MogDB Stack 体系中的一个功能组件,以哨兵模式运行,并实时监测 MogDB 集群的运行状态,当监测到集群出现故障时,触发修复逻辑。 + +发生切换的场景包括: + +- 机架掉电 +- 主库网络不可达 +- 数据库发生故障宕机 +- 数据库磁盘故障或者某些硬件故障 + +在安装阶段我们已经部署了高可用组件。注意:HA 自身使用 dcs 保证高可用,当前仅支持 etcd,如果要将此用于生产环境,确认您安装高可用组件时使用了自定义的 etcd 集群,而非采取简易安装模式。 + +![ha](assets/ha.png) + +
+ +## 使用高可用组件 + +MogDB 集群通过 .spec.ha 描述高可用组件配置。 + +其中 .spec.ha.scope 应为为集群名称,.spec.ha.url 应为高可用组件的访问路径。 + +```yaml +... +sepc: + ha: + url: + scope: +... +``` + +在 helm 中,只需修改 values 文件中的 对应数据中心描述的 .templates.ha 内容即可。本例中 values 文件如下: + +```yaml +templates: + ha: + url: http://mogdb-ha.mogdb-ha.svc.cluster.local:6544 +... +``` + +
+ +## 测试高可用组件 + +### 测试1:删除 service + +在[连接到 MogDB 集群](conntect-to-mogdb.md)中,我们观察到 operator 创建的服务,例如: + +```shell +kubectl get svc -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=mogdb-cluster" +``` + +产生类似以下内容: + +```text +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-cluster-svc-master NodePort 10.96.105.230 26000:30013/TCP 20m +service/mogdb-cluster-svc-replicas NodePort 10.96.153.226 26000:30012/TCP 20m +``` + +在[连接到 MogDB 集群](connect-to-mogdb.md)中,我们使用应用程序连接到 mogdb-cluster-svc-master 服务。尝试删除这个服务: + +```shell +kubectl delete svc mogdb-cluster-svc-master -n mogdb-operator-system +``` + +这看起来可能会造成停机场景,再次运行查看服务的命令: + +```shell +kubectl get svc -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=mogdb-cluster" +``` + +得到类似以下的内容: + +```text +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-cluster-svc-master NodePort 10.96.88.238 26000:30013/TCP 3s +service/mogdb-cluster-svc-replicas NodePort 10.96.153.226 26000:30012/TCP 20m +``` + +operator 检测到主服务已被删除并且重新创建了它!连接 mogdb 的应用程序有可能没注意到此次事件的发生。 + +
+ +### 测试2:删除单集群主节点 + +StatefulSets 是一个 Kubernetes 对象,它提供了有用的机制来管理与有状态应用程序(例如数据库)交互的 Pod。它们提供了管理 Pod 的稳定机制,以帮助确保可以以可预测的方式检索数据。 + +如果我们删除代表 MogDB 主节点的 Pod 会发生什么?首先,我们通过以下命令查询主节点: + +```shell +kubectl get pods -n mogdb-operator-system --selector="mogdb.enmotech.io/role=primary" +``` + +得到类似以下结果: + +```text +NAME READY STATUS RESTARTS AGE +mogdb-cluster-sts-z6kz6-0 2/2 Running 0 27m24s +``` + +删除这个 pod: + +```shell +kubectl delete pods mogdb-cluster-sts-z6kz6-0 -n mogdb-operator-system +``` + +此时查看主节点信息: + +```shell +kubectl get pods -n mogdb-operator-system --selector="mogdb.enmotech.io/role=primary" +``` + +发现主节点已经切换到另外一个 pod 上: + +```text +NAME READY STATUS RESTARTS AGE +mogdb-cluster-sts-f5zqj-0 2/2 Running 0 27m35s +``` + +查看所有节点: + +```shell +kubectl get pod -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=mogdb-cluster" +``` + +预期结果: + +```text +NAME READY STATUS RESTARTS AGE +pod/mogdb-cluster-sts-f5zqj-0 2/2 Running 0 27m42s +pod/mogdb-cluster-sts-z6kz6-0 2/2 Running 0 11s +``` + +可以看到,在主节点 down 掉之后,不仅发生了主备切换,并且对删除了的节点进行了恢复,重新加入了集群。 + +我们可以进入节点直接连接到 MogDB 实例并执行以下命令来验证他们的主备关系: + +```shell +select pg_is_in_recovery(); +``` + +如果返回结果为 **f**,则 MogDB 实例是主库;如果返回结果为 **t**,则 MogDB 实例是备库; + +
+ +### 测试3:删除多集群主节点 + +在多个 MogDB 集群存在于多个中心的环境中时,主节点的 pod 被删除时依然可以进行主备切换,切换不局限于单中心,还可以跨中心切换。 + +首先我们通过以下指令查看多集群有哪些节点: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/name=mogdb" +``` + +可以得到类似以下结果: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane1 dc1-sts-9dj5c-0 2/2 Running 0 4h25m +data-plane1 dc1-sts-tmwxh-0 2/2 Running 0 4h25m +data-plane2 dc2-sts-qhw2n-0 2/2 Running 0 4h25m +data-plane2 dc2-sts-wcf5w-0 2/2 Running 1 (4h24m ago) 4h24m + +``` + +可以看到目前有两个中心并分别存在两个 MogDB 的节点,通过以下指令获取主节点: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/role=primary" +``` + +可以得到类似以下结果: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane1 dc1-sts-9dj5c-0 2/2 Running 0 4h25m +``` + +删除这个 pod: + +```shell +kubectl delete pod -n data-plane1 dc1-sts-9dj5c-0" +``` + +此时查看主节点信息: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/role=primary" +``` + +经过一小段时间后,发现主节点已经切换到另外一个中心的 pod 上: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane2 dc2-sts-wcf5w-0 2/2 Running 0 4h28m +``` + +查看所有节点: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/name=mogdb" +``` + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane1 dc1-sts-9dj5c-0 2/2 Running 0 1m50s +data-plane1 dc1-sts-tmwxh-0 2/2 Running 0 4h29m +data-plane2 dc2-sts-qhw2n-0 2/2 Running 0 4h29m +data-plane2 dc2-sts-wcf5w-0 2/2 Running 0 4h28m + +``` + +
+ +### 测试4:使用命令行工具切换多集群主节点 + +除了主节点的 pod 被删除会发生主节点切换外,还可以通过命令行工具 [multictl](../../references/client/multictl.md) 主动进行切换。 + +首先查看所有节点: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/name=mogdb" +``` + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane1 dc1-sts-9dj5c-0 2/2 Running 0 1m50s +data-plane1 dc1-sts-tmwxh-0 2/2 Running 0 4h29m +data-plane2 dc2-sts-qhw2n-0 2/2 Running 0 4h29m +data-plane2 dc2-sts-wcf5w-0 2/2 Running 0 4h28m + +``` + +此时查看主节点信息: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/role=primary" +``` + +主节点经过上一步的测试处于另 data-plane2 中心的 pod 上: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane2 dc2-sts-wcf5w-0 2/2 Running 0 4h28m +``` + +使用以下客户端命令进行主节点切换,将主节点切换到 data-plane1 中心: + +```shell +multictl switch -c multi-cluster -n mogdb-operator-system -r dc1 +``` + +此时查看主节点信息: + +```shell +kubectl get pods -A --selector="mogdb.enmotech.io/role=primary" +``` + +可以看到这次的主节点和之前的都不同,且顺利的从 data-plane2 中心手动切换到了 data-plane1 中心: + +```shell +NAMESPACE NAME READY STATUS RESTARTS AGE +data-plane1 dc1-sts-tmwxh-0 2/2 Running 0 4h30m +``` + +
\ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/resize-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/resize-mogdb-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..4838836f84cec858f9a0b00905337a8f945b7a36 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/multi-cluster/resize-mogdb-cluster.md @@ -0,0 +1,237 @@ +--- +date: 2023-06-30 +author: houzhen.su +title: 扩容与缩容 +summary: 扩容与缩容 +--- + +# 扩容与缩容 + +## 垂直扩缩容 + +当您需要对数据库进行垂直扩缩容时,需要修改 mogdb 集群描述文件,并执行更新操作。 + +> 注意:垂直扩缩容会导致数据库节点重启。 +> +> 注意:当前版本仅支持 CPU / 内存 扩容,不支持磁盘扩容。 + +在 helm 中,只需修改 values 文件中的 对应数据中心描述的 .spec.mogdb.resources 内容即可。此处以扩容主数据中心为例,将 values 文件修改如下: + +```yaml +primaryDC: +... + spec: +... + mogdb: + resources: + limits: + cpu: 2 + memory: 2Gi + requests: + cpu: 2 + memory: 2Gi +... +``` + +随后执行更新操作: + +```shell +helm upgrade mogdb-stack/multi-cluster -n [-f ] [--set =...] +``` + +期望输出: + +```shell +$ helm upgrade multi-mogdb helm/multi-cluster -n control-plane -f helm/multi-cluster/values.yaml +Release "multi-mogdb" has been upgraded. Happy Helming! +NAME: multi-mogdb +LAST DEPLOYED: Tue Jul 18 14:18:46 2023 +NAMESPACE: control-plane +STATUS: deployed +REVISION: 2 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Multi Cluster! +``` + +以下命令将检查 MogDB 节点是否正确运行: + +```shell +kubectl config --kubeconfig use-context \ +&& kubectl get all -n --selector="mogdb.enmotech.io/multi-cluster-name=" +``` + +预期输出: + +```shell +# 检查主数据中心 +$ kubectl config --kubeconfig ~/.kube/config use-context kind-mogdb-stack-0 +$ kubectl get all -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=dc0" +NAME READY STATUS RESTARTS AGE +pod/dc0-sts-82lgq-0 3/3 Running 0 10m +pod/dc0-sts-vrgqh-0 3/3 Running 0 5m10s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/dc0-svc-master NodePort 10.96.58.154 26000:30013/TCP 10m +service/dc0-svc-replicas NodePort 10.96.17.44 26000:30012/TCP 10m + +NAME READY AGE +statefulset.apps/dc0-sts-82lgq 1/1 10m +statefulset.apps/dc0-sts-vrgqh 1/1 5m10s +``` + +等待所有 Pod 资源重启并处于 Running 状态,意味着扩缩容成功。 + +
+ +## 水平扩缩容 + +### 1.增加/减少副本 + +当您需要对数据库进行增加/减少副本时,需要修改 mogdb 集群描述文件,并执行更新操作。 + +在 helm 中,只需修改 values 文件中的 对应数据中心描述的 .spec.replica 内容即可。此处以第一备份数据中心为例,将 values 文件修改如下: + +```yaml +standbyDCs: + - name: dc1 +... + spec: + replica: 3 +... +``` + +随后执行更新操作: + +```shell +helm upgrade mogdb-stack/multi-cluster -n [-f ] [--set =...] +``` + +期望输出: + +```shell +$ helm upgrade multi-mogdb helm/multi-cluster -n control-plane -f helm/multi-cluster/values.yaml +Release "multi-mogdb" has been upgraded. Happy Helming! +NAME: multi-mogdb +LAST DEPLOYED: Tue Jul 18 15:25:47 2023 +NAMESPACE: control-plane +STATUS: deployed +REVISION: 3 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Multi Cluster! +``` + +以下命令将检查 MogDB 节点是否正确运行: + +```shell +kubectl config --kubeconfig use-context \ +&& kubectl get all -n --selector="mogdb.enmotech.io/multi-cluster-name=" +``` + +预期输出: + +```shell +# 检查主数据中心 +$ kubectl config --kubeconfig ~/.kube/config use-context kind-mogdb-stack-1 +$ kubectl get all -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=dc1" +NAME READY STATUS RESTARTS AGE +pod/dc1-sts-k54h2-0 2/2 Running 0 110m +pod/dc1-sts-mstmj-0 2/2 Running 0 55s +pod/dc1-sts-xvczp-0 2/2 Running 0 111m + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/dc0-svc-master NodePort 10.96.58.154 26000:30013/TCP 10m +service/dc0-svc-replicas NodePort 10.96.17.44 26000:30012/TCP 10m + +NAME READY AGE +statefulset.apps/dc0-sts-82lgq 1/1 10m +statefulset.apps/dc0-sts-vrgqh 1/1 5m10s +``` + +可以看到新增副本 pod/dc1-sts-mstmj-0,等待所有 Pod 资源处于 Running 状态,意味着扩缩容成功。 + +
+ +### 2.增加数据中心 + +> **注意:由于减少数据中心有重大风险,mogdb 当前不支持减少数据中心。** + +当您需要对数据库进行增加数据中心时,需要修改 mogdb 集群描述文件,并执行更新操作。 + +在 helm 中,只需在 values 文件中的增加/减少对应的数据中心描述内容即可。此处以增加备份数据中心为例,将 values 文件修改如下: + +```yaml +standbyDCs: + - name: dc1 +... + - name: dc2 + namespace: data-plane2 + region: "dc2" + kubeContextName: "data-plane2" + spec: + replica: 2 + readPort: 30016 + writePort: 30017 + mogdb: + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 500m + memory: 1Gi + volume: + dataVolumeSize: 1Gi + backupVolumeSize: 1Gi + storageClass: default +``` + +随后执行更新操作: + +```shell +helm upgrade mogdb-stack/multi-cluster -n [-f ] [--set =...] +``` + +期望输出: + +```shell +$ helm upgrade multi-mogdb helm/multi-cluster -n control-plane -f helm/multi-cluster/values.yaml +Release "multi-mogdb" has been upgraded. Happy Helming! +NAME: multi-mogdb +LAST DEPLOYED: Tue Jul 18 15:30:46 2023 +NAMESPACE: control-plane +STATUS: deployed +REVISION: 5 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Multi Cluster! +``` + +以下命令将检查 MogDB 节点是否正确运行: + +```shell +kubectl config --kubeconfig use-context \ +&& kubectl get all -n --selector="mogdb.enmotech.io/multi-cluster-name=" +``` + +预期输出: + +```shell +# 检查主数据中心 +$ kubectl config --kubeconfig ~/.kube/config use-context kind-mogdb-stack-2 +$ kubectl get all -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=dc2" +NAME READY STATUS RESTARTS AGE +pod/dc2-sts-juyxc-0 2/2 Running 0 55s +pod/dc2-sts-ftghx-0 2/2 Running 0 55s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/dc0-svc-master NodePort 10.96.58.154 26000:30017/TCP 55s +service/dc0-svc-replicas NodePort 10.96.17.44 26000:30016/TCP 55s + +NAME READY AGE +statefulset.apps/dc0-sts-82lgq 1/1 55s +statefulset.apps/dc0-sts-vrgqh 1/1 55s +``` + +可以看到新的数据中心已经创建出了两个 mogdb 副本节点,等待所有 Pod 资源处于 Running 状态,意味着扩缩容成功。 diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/backup-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/backup-mogdb-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..17816cb10dd61e5df6ccc2d60b8fde29372f1b49 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/backup-mogdb-cluster.md @@ -0,0 +1,168 @@ +--- +title: 备份MogDB集群 +summary: 备份MogDB集群 +author: Wang Dong +date: 2022-07-12 +--- + +# 备份 + +本文档介绍如何对 Kubernetes 上的 MogDB 集群进行数据备份和数据恢复。数据备份是 MogDB 集群的一个重要部分,我们可以执行数据库生命周期中可能发生的许多常见和高级操作: + ++ 设置自动备份计划和保留策略 + ++ 进行一次性/临时备份 + ++ 执行“时间点恢复” + ++ 将数据克隆到新实例 + +以及更多。 + +## 设置备份存储库 + +备份存储位置我们以S3为例,在安装mogdb-operator时候已经对 s3 配置做了初始化,我们可以通过以下命令观察它的配置信息: + +```shell +kubectl get cm mogdb-operator-rclone-config -n mogdb-operator-system +``` + +观察配置信息,有类似以下内容: + +```yaml +... +data: + rclone.conf: | + [s3-remote] + type=s3 + provider=Minio + endpoint=http://10.96.107.225:9000 + access_key_id=root + secret_access_key=root@123 +... +``` + +根据实际配置修改 S3 配置的endpoint,key 和 secret。 + +
+ +## 备份管理 + +MogDB 集群的备份配置位于 **spec.backup** 自定义资源部分,了解以下字段信息帮助您为 MogDB 集群配置备份设置: + ++ **spec.backup.image** - 指定备份所使用的镜像 + ++ **spec.backup.auto** - 创建一个备份计划,它会定期执行备份 + ++ **spec.backup.manual** - 创建一个一次性备份,它会是临时需要备份的最佳选择 + ++ **spec.backup.auto.backupType** - 指定备份类型,分为 `basebackup` 物理备份,`dumpall` 逻辑备份两种,当然 **spec.backup.manual.backupType** 是一次性备份的备份类型配置 + +
+ +### 管理备份计划 + +operator 对于 MogDB 集群设置备份计划,他将不断的将备份内容存储在备份存储库中。 + +对于备份类型, 提供 **full** 全量备份,**incremental** 增量备份的方式帮助您从空间管理和优化策略上做出抉择。并且 **spec.backup.auto.backupSchedules.full** 或者 **spec.backup.auto.backupSchedules.incremental** 字段类容 接受一个 [**cron 格式**](https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax)的字符串,该字符串设置备份计划。 + +例如,假设我们的备份策略是每周日凌晨 1 点进行全量备份。按照以下规范内容配置: + +```yaml +spec: + backup: + auto: + name: "auto" + backupSchedules: + full: "0 1 * * 0" + storageProvider: + rcloneStorage: + name: s3-remote + directory: backup + backupType: basebackup + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/remote-client:3.0.0 +``` + +为了管理计划备份,operator 将创建多个 Kubernetes CronJobs,这些作业将在指定时间段执行备份。备份将使用您指定的配置。 + +确保定期进行备份对于维护 MogDB 集群的健康状况非常重要。但是,您不需要保留所有备份:这可能会导致您耗尽空间!因此,设置备份保留策略也很重要。 + +
+ +### 管理备份保留 + +您可以设置多种类型备份保留: + ++ **spec.backup.auto.backupFileHistoryLimit** 备份文件保留数量限制 + ++ **spec.backup.auto.failedJobsHistoryLimit** 失败备份任务数量限制 + ++ **spec.backup.auto.successfulJobsHistoryLimit** 成功备份任务数量限制 + +让我们看一个备份计划中备份文件保留最多 7 个的示例: + +```yaml +spec: + backup: + auto: + name: "auto" + backupSchedules: + full: "0 1 * * 0" + storageProvider: + rcloneStorage: + name: s3-remote + directory: backup + backupType: basebackup + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/remote-client:3.0.0 + successfulJobsHistoryLimit: 7 +``` + +
+ +### 进行一次性备份 + +有时您可能需要进行一次性备份,例如在重大应用程序更改或更新之前。 + +为了防止一个备份的反复提交我们需要一个 id 标识此次备份任务。**spec.backup.manual.id** 将满足这样的配置,您可以使用一个不重复的随机字符串填充它。 + +我们看一下一次性备份的配置的示例 + +```yaml +spec: + backup: + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/remote-client:3.0.0 + manual: + id: "001" + backupType: dumpall + storageProvider: + rcloneStorage: + name: s3-remote + directory: backup +``` + +
+ + 我们来尝试一次性备份吧!运行以下命令: + + ```shell + kubectl edit mogdbcluster mogdb-cluster -n mogdb-operator-system + ``` + + 将一次性备份配置示例填写于 **spec** 中,然后保存,预期结果: + + ```shell + mogdbcluster.mogdb.enmotech.io/mogdb-cluster edited + ``` + +此时,观察pods内容: + +```shell +$ kubectl get pods +NAME READY STATUS RESTARTS AGE +mogdb-cluster-backup-xlhgf-wbm2s 1/1 Running 0 4s +mogdb-cluster-sts-f5zqj-0 2/2 Running 0 176m +mogdb-cluster-sts-z6kz6-0 2/2 Running 0 165m +mogdb-operator-controller-manager-86d4cfd876-gg986 1/1 Running 0 3h5m +``` + +您会发现一个关于 backup 的 pod 已经启动了,等待这个 pod 状态为 completed。这次一次性备份就完成了! diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/conntect-to-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/conntect-to-mogdb-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..4d1a1e417dd6d604bee5be778ad59c5e670c3218 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/conntect-to-mogdb-cluster.md @@ -0,0 +1,98 @@ +--- +title: 连接MogDB集群 +summary: 连接MogDB集群 +author: Wang Dong +date: 2022-07-12 +--- + +# 连接到 MogDB 集群 + +在开始本章前,请确保您已正确依据[创建 MogDB 集群](create-a-mogdb-cluster.md)完成 MogDB 集群的安装。 + +## 创建用户 + +在连接之前,需要创建用于连接数据库的用户。可以通过 kubectl 命令连接到主节点所在容器。 + +> **注意**:数据库内置用户 `mogdb` 用于 operator 管理集群使用,请**不要**修改该用户的相关内容。 + +```shell +# 进入数据库所在节点 +kubectl exec -it pod/mogdb-cluster-sts-jxtqn-0 -c mogdb -n mogdb-operator-system -- /bin/bash + +# 连接数据库 +gosu omm gsql -dpostgres +``` + +创建用户: + +```sql +create user "" with login password "" ; +``` + +期望输出: + +```shell +$ kubectl exec -it pod/dc0-sts-82lgq-0 -c mogdb -n mogdb-operator-system -- /bin/bash + +root@dc0-sts-82lgq-0:/# gosu omm gsql -dpostgres + +gsql ((MogDB 3.0.4 build cc068866) compiled at 2023-03-03 17:46:59 commit 0 last mr ) +Non-SSL connection (SSL connection is recommended when requiring high-security) +Type "help" for help. + +MogDB=# create user test with login password "P@55w0rd!" ; +CREATE ROLE +``` + +之后您可根据需求对用户进行授权。 + +
+ +## 连接到 MogDB + +### 1.安装 gsql 客户端 + +相关内容请参考 [gsql | MogDB Docs](https://docs.mogdb.io/zh/mogdb/v3.0/gsql)。 + +### 2.连接到 MogDB 集群 + +默认情况下,MogDB Operator 将创建三个有集群名称前缀的服务, 一个是主节点的 service,一个是从节点的 service,有一个带有负载均衡的headless service。 + +以下命令将获取 `mogdb-operator-system` 命名空间中所有可用服务的列表: + +```shell +kubectl get svc -n mogdb-operator-system +``` + +预期输出: + +```text +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-cluster-svc-headless ClusterIP None 26000/TCP,9187/TCP 30m +service/mogdb-cluster-svc-master NodePort 10.96.105.230 26000:30013/TCP 30m +service/mogdb-cluster-svc-replicas NodePort 10.96.153.226 26000:30012/TCP 30m +``` + +可以看到,主节点 service 开放端口为 30013,从节点 service 开放端口为 30012。您可以使用以下命令连接到数据库: + +```shell +gsql -h 127.0.0.1 -p 30013 -U mogdb -W P@55word! +``` + +然后应该会看到 mogdb 提示符: + +```text +gsql ((MogDB 3.1.0 build aef997f9) compiled at 2022-11-24 00:02:35 commit 0 last mr ) +Non-SSL connection (SSL connection is recommended when requiring high-security) +Type "help" for help. + +MogDB=> +``` + +
+ +### 3.在 Kubernetes 集群之外 + +由 MogDB Operator 创建两个带有集群名称前缀的 service,service 的类型 type 设置为 NodePort,可将 service 端口和主机端口映射起来。 + +只需要连接 “Host:Port” 即可。 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/create-a-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/create-a-mogdb-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..abe495dbeb3168f5f894fe7f06ed21f551585afc --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/create-a-mogdb-cluster.md @@ -0,0 +1,171 @@ +--- +title: 创建MogDB集群 +summary: 创建MogDB集群 +author: Wang Dong +date: 2022-07-12 +--- + +# 创建 MogDB 集群 + +在开始本章前,请确保您已正确依据[开始](getting-started.md)完成 MogDB Stack 的安装与配置。 + +我们提供了两种方式供您创建 MogDB 集群。包括使用 kustomize,或者使用 helm。 + +我们建议使用 helm 的方式。 + +
+ +## 使用 helm + +### 1. 添加MogDB Stack仓库 + +```shell +helm repo add mogdb-stack https://enmotech.github.io/mogdb-stack-examples/helm/charts +``` + +期望输出: + +```text +"mogdb-stack" has been added to your repositories +``` + +```shell +helm search repo mogdb-stack +``` + +期望输出: + +```text +NAME CHART VERSION APP VERSION DESCRIPTION +mogdb-stack/mogdb-cluster 3.0.0 3.0.0 A Helm chart for Kubernetes +mogdb-stack/mogdb-ha 3.0.0 3.0.0 A Helm chart for Kubernetes +mogdb-stack/mogdb-monitor 3.0.0 3.0.0 A Helm chart for Kubernetes +mogdb-stack/mogdb-operator 3.0.0 3.0.0 A Helm chart for Kubernetes +mogdb-stack/multi-cluster 3.0.0 3.0.0 A Helm chart for Kubernetes +mogdb-stack/multi-operator 3.0.0 3.0.0 A Helm chart for Kubernetes + +``` + +
+ +### 2.部署 MogDB Cluster 集群 + +```shell +helm install mogdb-cluster mogdb-stack/mogdb-cluster --namespace mogdb-operator-system +``` + +期望输出: + +```shell +NAME: mogdb-cluster +LAST DEPLOYED: Wed Jul 12 05:59:33 2023 +NAMESPACE: mogdb-operator-system +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Thank you for deploying MogDB Cluster! +``` + +注意: + +- 关于 Helm 中详细的参数定义,请查看[values相关配置](https://raw.githubusercontent.com/enmotech/mogdb-stack-examples/main/helm/mogdb-cluster/values.yaml); +- 默认情况下使用您 kubernetes 集群中的`local-path`存储类;以及 `30012` 和 `30013` 端口用于读写; +- 默认情况下需要开启高可用,请确保提前安装ha模块,详细请参看installation/helm章节; +- 请确保高可用组件的正确设置,`ha.scope`设置为集群名称,`ha.url` 默认值为`http://mogdb-ha.mogdb-ha.svc.cluster.local:6544`的域名,面对特殊的网络情况需要修改 `ha.url`; + +
+ +### 3.检查安装 + +以下命令将检查 MogDB 节点是否正确运行: + +```shell +kubectl get pod,svc -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=mogdb-cluster" +``` + +预期输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/mogdb-cluster-sts-pt79s-0 2/2 Running 3 63s +pod/mogdb-cluster-sts-st9c8-0 2/2 Running 3 110s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-cluster-svc-headless ClusterIP None 26000/TCP,9187/TCP 110s +service/mogdb-cluster-svc-master NodePort 10.96.56.16 26000:30013/TCP 110s +service/mogdb-cluster-svc-replicas NodePort 10.96.217.226 26000:30012/TCP 110s +``` + +等待所有Pod资源处于Running状态,意味着集群创建成功。 + +## 使用 Kustomize + +### 前置条件 + +- 安装Kustomize v3+ + + ```shell + go install sigs.k8s.io/kustomize/kustomize/v3@v3.8.7 + ~/go/bin/kustomize version + ``` + + > 注意: kubectl 1.4+版本默认集成了Kustomize,无需单独安装。 + +- 下载MogDB Operator examples + + 首先,在GitHub上fork [MogDB Stack examples](https://github.com/enmotech/mogdb-stack-examples)仓库: + + + + fork仓库之后,您可以通过类似如下的命令下载至本地: + + ```shell + YOUR_GITHUB_UN="" + git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/mogdb-stack-examples.git" + cd mogdb-stack-examples + ``` + + MogDB Operator安装项目在kustomize目录下。 + +### 1.创建 MogDB Cluster + +```shell +kubectl apply --server-side -k kustomize/mogdb-cluster/install/default +``` + +期望输出: + +```text +mogdbcluster.mogdb.enmotech.io/mogdb-cluster created +``` + +注意: + +- 默认情况下使用您 kubernetes 集群中的 `local-path`存储类,以及 `30012` 和 `30013` 端口用于读写; +- 默认情况下需要开启高可用,请确保提前安装ha模块,详细请参看installation/helm章节; +- 请确保高可用组件的正确设置,`ha.scope`设置为集群名称,`ha.url` 默认值为`http://mogdb-ha.mogdb-ha.svc.cluster.local:6544`的域名,面对特殊的网络情况需要修改 `ha.url`; +- 如果需要定制化,请查看kustomize目录下,有各种见场景的安装example; + +### 2.检查安装 + +以下命令将检查 MogDB 节点是否正确运行: + +```shell +kubectl get pod,svc -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=mogdb-cluster" +``` + +期望输出: + +```text +NAME READY STATUS RESTARTS AGE +pod/mogdb-cluster-sts-jxtqn-0 2/2 Running 0 20m +pod/mogdb-cluster-sts-nbg9l-0 2/2 Running 0 19m + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-cluster-svc-headless ClusterIP None 26000/TCP,9187/TCP 20m +service/mogdb-cluster-svc-master NodePort 10.96.105.230 26000:30013/TCP 20m +service/mogdb-cluster-svc-replicas NodePort 10.96.153.226 26000:30012/TCP 20m +``` + +等待所有Pod资源处于Running状态,意味着集群创建成功。 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/customize-a-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/customize-a-mogdb-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..f6d67d5256ce7b684d5798fbc12837b5ff7295a8 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/customize-a-mogdb-cluster.md @@ -0,0 +1,101 @@ +--- +title: 定制MogDB集群 +summary: 定制MogDB集群 +author: Wang Dong +date: 2023-07-12 +--- + +# 定制 MogDB 集群 + +我们提供了两种方式供您创建 MogDB 集群。包括使用 helm,或者使用 manifest。请按需选择。 + +我们建议使用 helm 方式。本章中我们将重点对 helm 方式进行阐述。 + +
+ +## 自定义 MogDB 集群 + ++ 指定 MogDB 版本 ++ 自定义 MogDB 配置 ++ 高可用性(如定制副本) ++ 资源分配(如内存、计算、存储) + +
+ +## 使用 helm + +helm 安装集群自定义 MogDB 集群的配置有很多种。 您可以在[values相关配置](https://raw.githubusercontent.com/enmotech/mogdb-stack-examples/main/helm/mogdb-cluster/values.yaml) 中了解所有这些选项。 + +
+ +### 1.定义存储 + +MogDB 共定义了存储目录可用配置: + +数据库有各种不同的大小,而且这些大小肯定会随着时间而改变。因此能够指定要存储 MogDB 数据的 PVC 大小是很有帮助的。 + +
+ +#### 定义 MogDB 数据目录 + +helm 依据values值允许您使用 `--set mogdb.volume.dataVolumeSize=` 标志选择 `MogDB 数据目录`的大小。PVC 大小应该使用标准的 Kubernetes 资源单元,例如 128Mi。 + +以下命令将创建一个具有 20Gi 大小目录的 MogDB 集群: + +```shell +helm install clusterName mogdb-stack/mogdb-cluster/ -n mogdb-operator-system --set mogdb.volume.dataVolumeSize=20Gi +``` + +并且还可以使用 `--set mogdb.volume.storageClass=` 的标志来配置自定义存储类 + +
+ +### 2.定义内存/CPU + +数据库具有不同的 CPU 和内存要求,这通常取决于工作集中的数据量(即主动访问的数据)。Kubernetes 为 Pod 提供了几种管理 CPU 和内存资源的方法: + ++ Limits:该字段定义了 pod 所能使用资源的最大限额; ++ Requests:该字段定义了 pod 需要使用资源的最小限额,会影响 pod 的调度; + +一般的,我们可以理解为 pod 所使用的资源介于 [requests, limits] 的区间中。 + +**注意:如果 pod 使用的内存超出了 limits 限制,kubernetes 将尝试终止任何导致超出限制的进程。因此内存限制可能会影响 MogDB 的可用性,我们建议谨慎使用它们。** + +下面介绍如何自定义可用于 MogDB 节点的 CPU 和内存资源。自定义 CPU 和内存确实会为您的 MogDB 集群添加更多资源,但要充分利用额外资源,您将需要自定义 MogDB 配置并调整参数 shared_buffers 等。 + +#### 为 MogDB 定制内存/CPU + +helm 依据values提供了几个标志来帮助管理 MogDB 实例的资源: + ++ mogdb.resources.requests.cpu:指定 MogDB 实例的 CPU 请求 ++ mogdb.resources.limits.cpu:指定 MogDB 实例的 CPU 限制 ++ mogdb.resources.requests.memory:指定 MogDB 实例的内存请求 ++ mogdb.resources.limits.memory: 指定 MogDB 实例的内存限制 + +以下命令将创建一个 CPU 请求为 1.0,CPU 限制为 2.0,内存请求为 1Gi,内存限制为 2Gi 的 MogDB 集群: + +```shell +helm install clusterName mogdb-stack/mogdb-cluster/ -n mogdb-operator-system \ +--set mogdb.resources.requests.cpu=1.0 \ +--set mogdb.resources.limits.cpu=2.0 \ +--set mogdb.resources.requests.memory=1Gi \ +--set mogdb.resources.limits.memory=2Gi +``` + +
+ +### 3.创建高可用性 MogDB 集群 + +高可用性允许您部署具有冗余的 MogDB 集群,即使您的主实例发生停机事件,您的应用程序也可以访问它们。MogDB 集群使用 Kubernetes 附带的分布式共识存储系统,因此可用性与 Kubernetes 集群的可用性相关联。 + +要创建具有一个副节点的高可用性 MogDB 集群,您可以运行以下命令: + +```shell +helm install clusterName mogdb-stack/mogdb-cluster/ -n mogdb-operator-system --set replica=2 +``` + +
+ +## 使用 manifest + +您可参照 [CRD 参考](../references/server/crd-references.md)以及[manifest demo](../references/server/mogdbcluster-sample.md)进行集群的定制。通过参照 CRD 字段说明,对 manifest 对应字段进行修改,即可完成对 MogDB 集群的高度定制。 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/getting-started.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/getting-started.md new file mode 100644 index 0000000000000000000000000000000000000000..45bf27b6095a4e5bf636d54e1b5df03abfd5e598 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/getting-started.md @@ -0,0 +1,10 @@ +--- +title: 开始 +summary: 开始 +author: Wang Dong +date: 2023-07-05 +--- + +# 开始 + +如果您尚未安装单 kubernetes 集群模式 MogDB Stack,请参考[软件安装](../../installation/single-helm.md)部分。 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/high-availability.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/high-availability.md new file mode 100644 index 0000000000000000000000000000000000000000..58a397253bb8e8b6057b2d7c5641370cd4db6d27 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/high-availability.md @@ -0,0 +1,254 @@ +--- +title: 高可用 +summary: 高可用 +author: Wang Dong +date: 2022-07-12 +--- + +# 高可用 + +## 概述 + +高可用是 MogDB Stack 体系中的一个功能组件,以哨兵模式运行,并实时监测 MogDB 集群的运行状态,当监测到集群出现故障时,触发修复逻辑。 + +发生切换的场景包括: + +- 机架掉电 +- 主库网络不可达 +- 数据库发生故障宕机 +- 数据库磁盘故障或者某些硬件故障 + +![ha](https://cdn-mogdb.enmotech.com/docs-media/mogdb-stack/v2.0.0/ha.png) + +
+ +## 开启高可用组件 + +> HA 自身使用 dcs 保证高可用,当前仅支持 etcd,因此在启动组件时,需要准备一个高可用 etcd 集群,并将连接信息配置到 HA 中。 + +### 1.前置条件 + +- 已安装 kustomize v3+; +- 已安装 MogDB Operator; +- 若您需要正式开始高可用组件,而非进行高可用体验,请准备高可用 etcd 集群; + +
+ +### 2.获取安装包 + +在GitHub上fork [MogDB Stack examples](https://github.com/enmotech/mogdb-stack-examples)仓库: + + + +fork仓库之后,您可以通过类似如下的命令下载至本地: + +```shell +YOUR_GITHUB_UN="" +git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/mogdb-stack-examples.git" +cd mogdb-stack-examples +``` + +
+ +### 3.部署高可用组件 + +HA 组件安装目录位于安装包中的 `kustomize/mogdb-ha` 目录下。 + +**特别注意:默认情况下我们使用简易安装模式,即将 `etcd` 与 `ha` 部署在同一 pod 中,以供体验组件服务。若要正式使用该组件,请注意跟随 `kustomization.yaml` 文件中的指示注释掉 `patches/deployment-container-etcd.yaml` 一行,并修改 `patches/deployment-container-mogha.yaml` 文件,以传递您准备好的高可用 `etcd` 集群连接信息,该文件还允许您传递其它参数,具体参数列表请参考[参数列表](#参数列表)**。 + +确保您编辑好高可用组件参数后,以下命令将部署高可用组件: + +```shell +kustomize build kustomize/mogdb-ha | kubectl apply -f - +``` + +预期输出: + +```shell +namespace/mogdb-ha serverside-applied +serviceaccount/mogdb-ha serverside-applied +clusterrole.rbac.authorization.k8s.io/mogdb-ha-role serverside-applied +clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding serverside-applied +secret/mogdb-ha-huawei-registry serverside-applied +service/mogdb-ha serverside-applied +deployment.apps/mogdb-ha serverside-applied +``` + +
+ +### 4.检查安装 + +ha 组件默认安装在 `mogdb-ha` 命名空间中: + +```shell +kubectl get pods,svc -n mogdb-ha +``` + +预期输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/mogdb-ha-55cdbc7855-xfb8g 2/2 Running 0 44s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-ha ClusterIP 10.107.90.105 6544/TCP 44s +``` + +
+ +### 5.注册高可用组件 + +在高可用组件部署成功后,需要将其注册至 MogDB Operator 中,以便正常使用高可用组件的功能。 + +在[4.检查安装](#4检查安装)中,我们得到 mogdb-ha 服务的 endpoints,现在将其注册到 MogDB Operator 中,MogDB Operator 默认安装在 `mogdb-operator-system` 命名空间中: + +```shell +kubectl edit configmap mogdb-operator-global-config -n mogdb-operator-system +``` + +之后修改 `.data.config.json` 中的 `haServices` 部分,将 endpoints 填入其中,并保存退出。 + +> tips: +> +> 在 kubernetes 中,我们一般不推荐使用 cluster-ip:port 的方式,因为 cluster-ip 并不是一个定值,我们推荐使用 kubernetes 的域名解析,其中 service 的 endpoints 遵循结构 `http://namespace.service-name.kubernetes-domain-name`。 +> +> 在本例中,namespace 为 mogha,service-name 为 mogdb-ha,kubernetes-domain-name 为 svc.cluster.local,因此 endpoints 为 `http://mogha.mogdb-ha.svc.cluster.local:6544`。 + +
+ +### 6.使用高可用组件 + +如果之后创建的 MogDB 集群要使用高可用组件,则需要您在 MogDB manifest 中将 .spec.ha.scope 配置为 集群名称,.spec.ha.url 按需求设置ha组件的url。 + +```yaml +... +sepc: + ha: + scope: + url: +... +``` + +
+ +## 参数列表 + +| 参数 | 含义 | 类型 | 默认值 | +| -------------------------- | --------------------------------------- | ------ | --------------------- | +| debug | 是否开启 debug 模式 | 布尔值 | true | +| etcd-key | 存储相关信息时使用的 base path | 字符串 | "mogha" | +| etcd-username | 连接 etcd 集群的用户 | 字符串 | "" | +| etcd-password | 连接 etcd 集群的密码 | 字符串 | "" | +| etcd-endpoints | 连接 etcd 集群的地址 | 字符串 | "127.0.0.1:2379" | +| etcd-dial-timeout | 连接 etcd 集群的超时时间 | 整型 | 5 | +| observe-period | 探测 mogdb 集群的间隔时间 | 整型 | 60 | +| db-probe-period | 探测单个 mogdb 节点是否健康的间隔时间 | 整型 | 5 | +| db-probe-failure-threshold | 判断单个 mogdb 节点异常的探测次数阈值 | 整型 | 3 | +| mogdb-username | 连接 mogdb 集群的用户,一般情况不用指定 | 字符串 | operator 内置管理用户 | +| mogdb-password | 连接 mogdb 集群的密码,一般情况不用指定 | 字符串 | operator 内置管理用户 | + +
+ +## 测试高可用组件 + +### 测试1:删除service + +在[连接到 MogDB 集群](conntect-to-mogdb-cluster.md)中,我们观察到operator创建的服务,例如: + +```shell +kubectl get svc -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=mogdb-cluster" +``` + +产生类似以下内容: + +```text +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-cluster-svc-headless ClusterIP None 26000/TCP,9187/TCP 20m +service/mogdb-cluster-svc-master NodePort 10.96.105.230 26000:30013/TCP 20m +service/mogdb-cluster-svc-replicas NodePort 10.96.153.226 26000:30012/TCP 20m +``` + +在[连接到 MogDB 集群](conntect-to-mogdb-cluster.md)中,我们使用应用程序连接到mogdb-cluster-svc-master服务。尝试删除这个服务: + +```shell +kubectl delete svc mogdb-cluster-svc-master -n mogdb-operator-system +``` + +这看起来可能会造成停机场景,再次运行查看服务的命令: + +```shell +kubectl get svc -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=mogdb-cluster" +``` + +得到类似以下的内容: + +```text +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-cluster-svc-headless ClusterIP None 26000/TCP,9187/TCP 20m +service/mogdb-cluster-svc-master NodePort 10.96.88.238 26000:30013/TCP 3s +service/mogdb-cluster-svc-replicas NodePort 10.96.153.226 26000:30012/TCP 20m +``` + +operator 检测到主服务已被删除并且重新创建了它!连接mogdb的应用程序有可能没注意到此次事件的发生。 + +接下来尝试一些其他场景 + +### 测试2:删除主节点 + +StatefulSets是一个 Kubernetes 对象,它提供了有用的机制来管理与有状态应用程序(例如数据库)交互的 Pod。它们提供了管理 Pod 的稳定机制,以帮助确保可以以可预测的方式检索数据。 + +如果我们删除代表 MogDB 主节点的 Pod 会发生什么?首先,我们通过以下命令查询主节点: + +```shell +kubectl get pods -n mogdb-operator-system --selector="mogdb.enmotech.io/role=primary" +``` + +得到类似以下结果: + +```text +NAME READY STATUS RESTARTS AGE +mogdb-cluster-sts-z6kz6-0 2/2 Running 0 27m24s +``` + +删除这个pod: + +```shell +kubectl delete pods mogdb-cluster-sts-z6kz6-0 -n mogdb-operator-system +``` + +此时查看主节点信息: + +```shell +kubectl get pods -n mogdb-operator-system --selector="mogdb.enmotech.io/role=primary" +``` + +发现主节点已经切换到另外一个pod上: + +```text +NAME READY STATUS RESTARTS AGE +mogdb-cluster-sts-f5zqj-0 2/2 Running 0 27m35s +``` + +查看所有节点: + +```shell +kubectl get pod -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=mogdb-cluster" +``` + +预期结果: + +```text +NAME READY STATUS RESTARTS AGE +pod/mogdb-cluster-sts-f5zqj-0 2/2 Running 0 27m42s +pod/mogdb-cluster-sts-z6kz6-0 2/2 Running 0 11s +``` + +可以看到,在主节点down掉之后,不仅发生了主备切换,并且对删除了的节点进行了恢复,重新加入了集群。 + +我们可以进入节点直接连接到MogDB实例并执行以下命令来验证他们的主备关系: + +```shell +select pg_is_in_recovery(); +``` + +如果返回结果为**f**,则MogDB实例是主库;如果返回结果为**t**,则MogDB实例是备库; \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/recovery-and-clone-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/recovery-and-clone-mogdb-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..d61e5667cf8d9cec5de72b33ee0a848688e6a55f --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/recovery-and-clone-mogdb-cluster.md @@ -0,0 +1,120 @@ +--- +title: 恢复和克隆MogDB集群 +summary: 恢复和克隆MogDB集群 +author: Wang Dong +date: 2022-07-12 +--- + +# 恢复和克隆 + +在项目环境中,自然灾害、人为错误、安全违规和勒索软件攻击都会破坏 IT 资源的可用性。所以,若要最大限度降低计划外宕机对业务造成的影响,那么灾难恢复计划的制定和实施就显得尤为重要。我们来看看 MogDB Stack 灾难恢复是怎样进行的吧。 + +
+ +## 恢复自定义属性 + +作为恢复过程的一部分,理解自定义资源上的几个属性非常重要。所有这些属性都分组在 **spec.restore** 自定义资源部分中。 + +请查看以下内容了解每个属性在设置还原操作的上下文中如何工作。 + ++ **spec.restore.restoreId**:备份任务唯一ID,防止重复或者错误提交导致不必要的恢复生成 + ++ **spec.restore.image**:指定恢复所使用的镜像 + ++ **spec.restore.dataSource**:恢复所需要用的数据源,也就是备份文件产生的数据源 + ++ **spec.restore.dataSource.clusterName**:恢复所需要用的数据源的集群 + +让我们通过一些示例来了解如何克隆和恢复数据库。 + +
+ +## 根据对象恢复 + +当您做过一次性备份之后,根据对象恢复将会是一个不错的选择。不过,要完成对象恢复,您还需要设置一些选项才能执行。这些属性包括在: **spec.restore.dataSource** + ++ **type** 恢复的类型,指定时间 `time` 或者对象 `object` + ++ **target** 恢复的目标 + ++ **backupType** 恢复的目标的备份对象所使用的备份类型 + ++ **storageProvider** 备份存储库配置 + +在开始之前,对这些属性做一些说明: + ++ 要执行对象恢复,那么就需要有指定对象进行恢复,所以在 **type** 指定为 **object** 时,**target** 则表示指定恢复的备份文件 + ++ 请务配置正确存储库 + +假设我们想要执行根据对象恢复,我们可以在 spec 内容中添加 restore 相关信息,如下: + +```yaml +spec: + restore: + restoreId: "001" + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/remote-client:3.0.0 + dataSource: + clusterName: clusterName + type: "object" + target: dumpall-2023-09-07-02-34-20.tar.gz + backupType: dumpall + storageProvider: + rcloneStorage: + name: s3-remote + directory: backup +``` + +运行以下命令,将一次性备份配置示例填写于 **spec** 中,然后保存,产生如下类似结果: + + ```shell + $ kubectl edit mogdbcluster mogdb-cluster -n mogdb-operator-system +mogdbcluster.mogdb.enmotech.io/mogdb-cluster edited + ``` + +此时,观察pods内容: + +```shell +$ kubectl get pods +NAME READY STATUS RESTARTS AGE +mogdb-cluster-restore-ljwkd-x5dpn 1/1 Running 0 4s +mogdb-cluster-backup-xlhgf-wbm2s 1/1 completed 0 23h +mogdb-cluster-sts-f5zqj-0 2/2 Running 0 27h +mogdb-cluster-sts-z6kz6-0 2/2 Running 0 27h +mogdb-operator-controller-manager-86d4cfd876-gg986 1/1 Running 0 27h +``` + +您会发现一个关于 restore 的 pod 已经启动了,等待这个 pod 状态为 completed。这次一次性恢复就完成了! + +
+ +## 根据时间恢复 + +您可能希望执行类似的恢复到发生某次梗改之前的状态,根据时间恢复可以帮助您做到这一点。 + +根据时间恢复的配置和对象只有一些略微不通,只需要将 **spec.restore.dataSource.type** 的 指定为 **time**,并且将 **spec.restore.dataSource.target** 修改为类似 `2006-01-02T15:04:05.06` 时间格式的恢复时间点。 + +> **注意**:您必须在恢复时间点之前有完成的备份。换句话说,您无法执行恢复到没有备份的时间! + +比如我们想要执行时间点恢复 2023-07-09 14:15:11-04之前的恢复,具体配置如下: + +```yaml +restore: + restoreId: "002" + image: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/remote-client:3.0.0 + dataSource: + clusterName: mogdb-cluster + type: "time" + target: "2023-07-09T14:15:11.04" + backupType: dumpall + storageProvider: + rcloneStorage: + name: s3-remote + directory: backup +``` + +
+ +## 克隆集群 + +克隆集群与从备份中恢复过程相同,请参考恢复流程。 \ No newline at end of file diff --git a/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/resize-a-mogdb-cluster.md b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/resize-a-mogdb-cluster.md new file mode 100644 index 0000000000000000000000000000000000000000..9838e471f8f6478c66c546260d74b8a8c1507e94 --- /dev/null +++ b/product/zh/docs-mogdb-stack/v3.0/tutorial/single-cluster/resize-a-mogdb-cluster.md @@ -0,0 +1,69 @@ +--- +title: 扩缩容 +summary: 扩缩容 +author: Wang Dong +date: 2022-12-30 +--- + +# 扩缩容 MogDB 集群 + +在开始本章前,请确保您已正确依据[创建 MogDB 集群](create-a-mogdb-cluster.md)完成 MogDB 集群的安装。 + +
+ +## 使用 manifest + +通过 manifest 执行扩缩容的步骤相同,此处合并讲解。 + +### 1.修改 manifest + +确保 `.metadata.name` 与 `.metadata.namespace` 的内容与创建集群时保持一致后。修改 manifest 中 `.spec.replicas` 的数量到您期望的数量。 + +```yaml +apiVersion: mogdb.enmotech.io/v1 +kind: MogdbCluster +... +spec: + replicas: 3 +... +``` + +### 2.更新集群 + +以下命令将对已存在的 mogdb 集群进行更新: + +```shell +kubectl apply -f mogdb-cluster.yaml +``` + +期望输出: + +```shell +mogdbcluster.mogdb.enmotech.io/mogdb-cluster configured +``` + +### 3.检查更新 + +以下命令将检查 MogDB 节点是否正确运行: + +```shell +kubectl get pod,svc -n mogdb-operator-system --selector="mogdb.enmotech.io/cluster=mogdb-cluster" +``` + +预期输出: + +```shell +NAME READY STATUS RESTARTS AGE +pod/mogdb-cluster-sts-jxtqn-0 3/3 Running 0 45m +pod/mogdb-cluster-sts-nbg9l-0 3/3 Running 0 45m +pod/mogdb-cluster-sts-fg24g-0 3/3 Running 0 71s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/mogdb-cluster-svc-headless ClusterIP None 26000/TCP,9187/TCP 45m +service/mogdb-cluster-svc-master NodePort 10.96.105.230 26000:30013/TCP 45m +service/mogdb-cluster-svc-replicas NodePort 10.96.153.226 26000:30012/TCP 45m +``` + +其中 pod/mogdb-cluster-sts-fg24g-0 为新增节点。 + +同理,修改的replicas数量小于当前节点数量将会执行缩容操作,停止一个从节点。 diff --git a/scripts/build_pdf.sh b/scripts/build_pdf.sh index 4060a3d480db56824e03b6da82f03421e8e76849..55c28aa7b9c9e7e50127086bc98bb7477b82d564 100755 --- a/scripts/build_pdf.sh +++ b/scripts/build_pdf.sh @@ -192,7 +192,7 @@ declare -A mdbEnTitle=( \ ["toc"]="MogDB-MDB-Reference" \ ) -stackDocsVersions=("v2.0") +stackDocsVersions=("v3.0") declare -A stackZnTitle=( \ ["toc"]="MogDB-Stack-指南" \ diff --git a/src/utils/version_config.js b/src/utils/version_config.js index 35b5346f8c4d99d31885dfe3f9d6e6cdb05383cb..d0a2a7828287772da22078fbd1e12d8794475e11 100644 --- a/src/utils/version_config.js +++ b/src/utils/version_config.js @@ -43,8 +43,13 @@ const allProductVersions = { } }, 'mogdb-stack': { - latestVersion: 'v2.0', + latestVersion: 'v3.0', versions: { + 'v3.0': { + value: 'v3.0', + label: 'v3.0', + disabled: false + }, 'v2.0': { value: 'v2.0', label: 'v2.0',