文档中心MogDBMogDB StackUqbar

文档:v2.0

支持的版本:

其他版本:

MogDB Stack安装

第1步: 安装MogDB Operator

部署MogDB Operator的过程分为两步:

  1. 安装MogDB Operator CRDs

  2. 安装MogDB Operator

安装MogDB Operator CRDs

MogDB Operator包含许多自定义的资源类型(CRDs)。执行以下命令安装CRD到Kubernetes集群中:

kubectl apply -f https://raw.githubusercontent.com/enmotech/mogdb-stack-examples/main/helm/crd.yaml

期望输出:

customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io created
customresourcedefinition.apiextensions.k8s.io/mogdbbackups.mogdb.enmotech.io created

安装MogDB Operator

安装Helm 3并使用Helm 3部署MogDB Operator

  1. 添加MogDB Stack仓库

    helm repo add mogdb-stack https://enmotech.github.io/mogdb-stack-examples/helm/charts

    期望输出:

    "mogdb-stack" has been added to your repositories
    helm search repo mogdb-stack

    期望输出:

    NAME                         CHART VERSION  APP VERSION DESCRIPTION
    mogdb-stack/mogdb-apiserver  2.0.0          2.0.0       A Helm chart for Kubernetes
    mogdb-stack/mogdb-cluster    2.0.0          2.0.0       A Helm chart for Kubernetes
    mogdb-stack/mogdb-monitor    2.0.0          2.0.0       A Helm chart for Kubernetes
    mogdb-stack/mogdb-operator   2.0.0          2.0.0       A Helm chart for Kubernetes
    mogdb-stack/mogha            2.0.0          2.0.0       A Helm chart for Kubernetes

    仓库含有五个chart包,分别是mogdb-operator、mogdb-apiserver、mogha、mogdb-monitor和mogdb-cluster。

  2. 为MogDB Operator创建一个命名空间

    kubectl create namespace mogdb-operator-system

    期望输出:

    namespace/mogdb-operator-system created
  3. 安装MogDB Operator

    helm install myproject mogdb-stack/mogdb-operator --namespace mogdb-operator-system

    期望输出:

    NAME: myproject
    LAST DEPLOYED: Tue Jan 10 17:33:05 2023
    NAMESPACE: mogdb-operator-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    Thank you for deploying a MogDB Operator!

检查MogDB Operator组件是否正常运行起来:

kubectl get pods -n mogdb-operator-system

期望输出:

NAME                                       READY   STATUS    RESTARTS   AGE
mogdb-operator-myproject-5cd5bb9d9-7xztz   1/1     Running   0          73s

当pod处于Running状态时,继续下一步。

第2步: 安装MogDB apiserver

helm install myapiserver mogdb-stack/mogdb-apiserver --namespace mogdb-operator-system

期望输出:

NAME: myapiserver
LAST DEPLOYED: Tue Jan 10 17:43:50 2023
NAMESPACE: mogdb-operator-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for deploying a MogDB Operator Apiserver!

检查MogDB apiserver正常运行起来:

NAME                                       READY   STATUS    RESTARTS   AGE
mogdb-apiserver-699c855d9b-878qj           1/1     Running   0          72s
mogdb-operator-myproject-5cd5bb9d9-7xztz   1/1     Running   0          11m

当pod处于Running状态时,继续下一步。

第3步: 安装 mgo 客户端

wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/client-setup.sh
chmod +x client-setup.sh
./client-setup.sh

这将下载mgo客户端并且提示您添加一些环境变量以供您在会话中设置,您可以使用以下命令执行此操作:

export MGOUSER="${HOME?}/.mgo/mgouser"
export MGO_CA_CERT="${HOME?}/.mgo/client.crt"
export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt"
export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key"
export MGO_APISERVER_URL='https://127.0.0.1:32444'
export MGO_NAMESPACE=mogdb-operator-system

如果您希望将这些变量永久添加到您的环境中,您可以运行以下命令:

cat <<EOF >> ~/.bashrc
export PATH="${HOME?}/.mgo:$PATH"
export MGOUSER="${HOME?}/.mgo/mgouser"
export MGO_CA_CERT="${HOME?}/.mgo/client.crt"
export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt"
export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key"
export MGO_APISERVER_URL='https://127.0.0.1:32444'
export MGO_NAMESPACE=mogdb-operator-system
EOF

source ~/.bashrc

注意: 对于 macOS 用户,您使用文件是~/.bash_profile而不是~/.bashrc。

第4步: 安装Mogha

  1. 为Mogha创建一个命名空间

    kubectl create namespace mogha

    期望输出:

    namespace/mogha created
  2. 安装Mogha

    helm install mogdb-ha mogdb-stack/mogha --namespace mogha

    期望输出:

    NAME: mogdb-ha
    LAST DEPLOYED: Tue Jan 10 17:40:51 2023
    NAMESPACE: mogha
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    Thank you for deploying a Mogha!

检查Mogha组件是否运行正常:

kubectl get pods -n mogha

期望输出:

NAME                        READY   STATUS    RESTARTS   AGE
mogdb-ha-6d67c96476-6j42z   2/2     Running   0          49s

当pod处于Running状态时,继续下一步。

第5步: 安装监控与告警

  1. 配置

    cat > myvalues.yaml <<-EOF
    grafanaNodeport: 31043 # grafana 图形界面地址端口
    prometheusNodeport: 31042 # prometheus 图形界面地址端口
    alertmanagerNodeport: 31044 # alertmanager 图形界面地址端口
    
    alertEmailHost: smtp.163.com # 告警邮箱server host
    alertEmailSmtp: smtp.163.com:25 # 发送邮件的SMTP server,包括端口号
    alertEmailUsername: <Your Email Name> # 发送告警的邮箱
    alertEmailPassword: <Your Email Password> # 邮箱授权密码
    receiversEmail: <Your Receive Email>  # 接收报警的邮箱,多个用逗号隔开
    EOF
  2. 为监控创建一个命名空间

    kubectl create namespace monitor

    期望输出:

    namespace/monitor created
  3. 安装监控与告警

    helm install -f myvalues.yaml monitor mogdb-stack/mogdb-monitor --namespace monitor

    期望输出:

    NAME: monitor
    LAST DEPLOYED: Tue Jan 10 18:00:45 2023
    NAMESPACE: monitor
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None

检查监控告警组件是否运行正常:

kubectl get pods -n monitor

期望输出:

NAME                          READY   STATUS    RESTARTS   AGE
grafana-5548d85c77-v9x69      1/1     Running   0          77s
node-exporter-67ggw           1/1     Running   0          77s
node-exporter-6gf2c           1/1     Running   0          77s
node-exporter-qz4jk           1/1     Running   0          77s
prometheus-645fcdf654-q4q59   2/2     Running   0          77s

当所有pod处于Running状态时,继续下一步。

第6步: 创建集群

默认会创建一主一从两个节点,如果需要多个节点,可通过Helm设置replicaCount参数实现,最高可支持7个副本。

helm install mycluster mogdb-stack/mogdb-cluster --set enableHa=true --namespace mogdb-operator-system

期望输出:

NAME: mycluster
LAST DEPLOYED: Wed Jan 11 11:17:53 2023
NAMESPACE: mogdb-operator-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for deploying a MogDB Cluster!

检查pod是否运行正常

kubectl get pods -n mogdb-operator-system

期望输出:

NAME                                       READY   STATUS    RESTARTS   AGE
cluster1-g3umz                             2/2     Running   0          3m48s
cluster1-s8sti                             2/2     Running   0          2m28s
mogdb-apiserver-699c855d9b-878qj           1/1     Running   0          17h
mogdb-operator-myproject-5cd5bb9d9-7xztz   1/1     Running   0          17h

当所有pod处于Running状态时,代表集群创建成功。

卸载

第1步: 删除集群

helm uninstall mycluster -n mogdb-operator-system

期望输出:

release "mycluster" uninstalled

检查集群pod是否被正确删除

kubectl get pods -n  mogdb-operator-system

期望输出:

NAME                                       READY   STATUS    RESTARTS   AGE
mogdb-apiserver-699c855d9b-878qj           1/1     Running   0          22h
mogdb-operator-myproject-5cd5bb9d9-7xztz   1/1     Running   0          22h

可以看到除了系统pod之外,MogDB Cluster相关的pod都被删除成功。成功删除后,继续下一步。

注意:系统中可能存在多套集群,必须一一删除之后,才可进入下一步操作。

第2步: 卸载监控告警

  1. 删除资源对象

    helm uninstall monitor -n monitor

    期望输出:

    release "monitor" uninstalled

    检查相关Pod是否成功删除

    No resources found in monitor namespace.

    可以看到monitor namespace下的所有Pod都被删除成功。

  2. 删除namespace

    kubectl delete namespace monitor

    期望输出:

    namespace "monitor" deleted

所有操作成功之后,继续下一步。

第3步: 卸载MogDB Operator

  1. 卸载MogDB Operator对象

    helm uninstall myproject -n mogdb-operator-system

    期望输出:

    release "myproject" uninstalled

    检查相关pod是否成功删除

     kubectl get pods -n  mogdb-operator-system

    期望输出:

    NAME                               READY   STATUS    RESTARTS   AGE
    mogdb-apiserver-699c855d9b-878qj   1/1     Running   0          22h

    可以看到mogdb-operator-myproject-xxx删除成功。

  2. 删除MogDB Operator CRDs

    MogDB Operator包含许多自定义的资源类型(CRDs)。执行以下命令从Kubernetes集群中删除CRD:

    kubectl delete -f https://raw.githubusercontent.com/enmotech/mogdb-stack-examples/main/helm/crd.yaml

    期望输出:

    customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io created
    customresourcedefinition.apiextensions.k8s.io/mogdbbackups.mogdb.enmotech.io created

所有操作成功后,继续下一步。

第4步: 卸载MogDB apiserver

  1. 删除资源对象

    helm uninstall myapiserver -n mogdb-operator-system 

    期望输出:

    release "myapiserver" uninstalled

    检查相关Pod是否成功删除

    kubectl get pods -n mogdb-operator-system

    期望输出:

    No resources found in mogdb-operator-system namespace.

    可以看到mogdb-apiserver-xxx删除成功。

  2. 删除namespace

    kubectl delete namespace mogdb-operator-system

    期望输出:

    namespace "mogdb-operator-system" deleted

所有操作成功之后,继续下一步。

第5步: 卸载Mogha

  1. 删除资源对象

    helm uninstall mogdb-ha  --namespace mogha

    期望输出:

    release "mogdb-ha" uninstalled

    检查相关Pod是否成功删除

    kubectl get pods -n mogha

    期望输出:

    No resources found in mogha namespace.

    可以看到mogdb-ha-xxx删除成功。

  2. 删除namespace

    kubectl delete namespace mogha

    期望输出:

    namespace "mogha" deleted
Copyright © 2011-2024 www.enmotech.com All rights reserved.