- 关于MogDB Stack
- 快速上手
- 软件安装
- 使用手册
- 架构
- 参考
- 命令行
- mgo
- mgo create
- mgo create mgorole
- mgo create mgouser
- mgo create cluster
- mgo show
- mgo show k8s
- mgo show mgorole
- mgo show mgouser
- mgo show cluster
- mgo show restore
- mgo delete
- mgo delete mgorole
- mgo delete mgouser
- mgo delete cluster
- mgo delete backup
- mgo delete k8s
- mgo scale
- mgo scaledown
- mgo switch
- mgo update
- mgo update mgorole
- mgo update mgouser
- mgo update cluster
- mgo version
- mgo addk8s
- mgo localk8s
- mgo backup
- mgo backup detail
- mgo restore
- mgo minio
- mgo minio object
- mgo minio object ls
- mgo minio object stat
- mgo minio object getf
- 服务端
- 命令行
- FAQ
- 发布记录
MogDB Stack安装
第1步: 安装MogDB Operator
部署MogDB Operator的过程分为两步:
-
安装MogDB Operator CRDs
-
安装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
-
添加MogDB Stack仓库
helm repo add mogdb-stack https://enmotech.github.io/mogdb-stack-examples/helm/charts期望输出:
"mogdb-stack" has been added to your repositorieshelm 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。
-
为MogDB Operator创建一个命名空间
kubectl create namespace mogdb-operator-system期望输出:
namespace/mogdb-operator-system created -
安装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
-
为Mogha创建一个命名空间
kubectl create namespace mogha期望输出:
namespace/mogha created -
安装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步: 安装监控与告警
-
配置
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 -
为监控创建一个命名空间
kubectl create namespace monitor期望输出:
namespace/monitor created -
安装监控与告警
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步: 卸载监控告警
-
删除资源对象
helm uninstall monitor -n monitor期望输出:
release "monitor" uninstalled检查相关Pod是否成功删除
No resources found in monitor namespace.可以看到monitor namespace下的所有Pod都被删除成功。
-
删除namespace
kubectl delete namespace monitor期望输出:
namespace "monitor" deleted
所有操作成功之后,继续下一步。
第3步: 卸载MogDB Operator
-
卸载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删除成功。
-
删除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
-
删除资源对象
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删除成功。
-
删除namespace
kubectl delete namespace mogdb-operator-system期望输出:
namespace "mogdb-operator-system" deleted
所有操作成功之后,继续下一步。
第5步: 卸载Mogha
-
删除资源对象
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删除成功。
-
删除namespace
kubectl delete namespace mogha期望输出:
namespace "mogha" deleted