作者:程潤科 數(shù)據(jù)庫研發(fā)工程師
編輯:張莉梅 高級文檔工程師
視頻:錢芬 高級測試工程師
本文將演示在 Kubernetes 上部署 RadonDB MySQL Kubernetes 2.X(Operator)的步驟顷锰,快速實現(xiàn) MySQL 高可用集群部署,以及部署集群的校驗和卸載方式。
部署版本為 RadonDB MySQL Kubernetes 2.1.2。
部署準備
- Kubernetes 集群
- MySQL 客戶端工具
部署過程
步驟 1: 添加 Helm 倉庫
添加 Helm 倉庫 radondb
酥夭。
helm repo add radondb https://radondb.github.io/radondb-mysql-kubernetes/
校驗倉庫信息屹徘,可查看到名為 radondb/mysql-operator
的 chart。
$ helm search repo
NAME CHART VERSION APP VERSION DESCRIPTION
radondb/mysql-operator 0.1.0 v2.1.2 Open Source爹耗,High Availability Cluster奔滑,based on MySQL
步驟 2: 部署 Operator
以下指定 release 名為 demo
, 創(chuàng)建一個名為 demo-mysql-operator
的 Deployment[1]艾岂。
helm install demo radondb/mysql-operator
在這一步中,默認將同時創(chuàng)建集群所需的 CRD[2]王浴。
步驟 3: 部署 RadonDB MySQL 集群
執(zhí)行以下指令,以默認參數(shù)為 CRD mysqlclusters.mysql.radondb.com
創(chuàng)建一個實例梅猿,即創(chuàng)建 RadonDB MySQL 集群氓辣。
kubectl apply -f https://github.com/radondb/radondb-mysql-kubernetes/releases/latest/download/mysql_v1alpha1_mysqlcluster.yaml
自定義集群部署參數(shù),可參考 配置參數(shù)[3]袱蚓。
部署校驗
校驗 RadonDB MySQL Operator
查看 demo
的 Deployment 和對應監(jiān)控服務钞啸,回顯如下信息則部署成功。
$ kubectl get deployment,svc
NAME READY UP-TO-DATE AVAILABLE AGE
demo-mysql-operator 1/1 1 1 7h50m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/mysql-operator-metrics ClusterIP 10.96.142.22 <none> 8443/TCP 8h
校驗 RadonDB MySQL 集群
執(zhí)行如下命令喇潘,將查看到如下 CRD体斩。
$ kubectl get crd | grep mysql.radondb.com
backups.mysql.radondb.com 2021-11-02T07:00:01Z
mysqlclusters.mysql.radondb.com 2021-11-02T07:00:01Z
mysqlusers.mysql.radondb.com 2021-11-02T07:00:01Z
以默認部署為例,執(zhí)行如下命令將查看到名為 sample-mysql
的三節(jié)點 RadonDB MySQL 集群及用于訪問節(jié)點的服務响蓉。
$ kubectl get statefulset,svc
NAME READY AGE
sample-mysql 3/3 7h33m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/sample-follower ClusterIP 10.96.131.84 <none> 3306/TCP 7h37m
service/sample-leader ClusterIP 10.96.111.214 <none> 3306/TCP 7h37m
service/sample-mysql ClusterIP None <none> 3306/TCP 7h37m
訪問集群
在 Kubernetes 集群內(nèi),支持使用 service_name
或者 clusterIP
方式哨毁,訪問 RadonDB MySQL枫甲。
RadonDB MySQL 提供 Leader 和 Follower 兩種服務,分別用于客戶端訪問主從節(jié)點。Leader 服務始終指向主節(jié)點(可讀寫)想幻,F(xiàn)ollower 服務始終指向從節(jié)點(只讀)粱栖。
RadonDB MySQL 集群架構圖
以下為客戶端與數(shù)據(jù)庫在同一 Kubernetes 集群內(nèi),訪問 RadonDB MySQL 的方式脏毯。
當客戶端的與數(shù)據(jù)庫部署在不同 Kubernetes 集群闹究,請參考 Kubernetes 訪問集群中的應用程序[4],配置端口轉(zhuǎn)發(fā)、負載均衡等連接方式。
ClusterIP 方式
RadonDB MySQL 的高可用讀寫 IP 指向 Leader 服務的 clusterIP
按声,高可用只讀 IP 指向 Follower 服務的 clusterIP
者娱。
mysql -h <clusterIP> -P <mysql_Port> -u <user_name> -p
以下示例用戶名為 radondb_usr
, Leader 服務的 clusterIP 為 10.10.128.136
帝美,連接示例如下:
mysql -h 10.10.128.136 -P 3306 -u radondb_usr -p
service_name 方式
Kubernetes 集群的 Pod 之間支持通過 service_name
方式訪問 RadonDB MySQL。
service_name
方式不適用于從 Kubernetes 集群的物理機訪問數(shù)據(jù)庫 Pod。
連接 Leader 服務(RadonDB MySQL 主節(jié)點)
mysql -h <leader_service_name>.<namespace> -u <user_name> -p
用戶名為 radondb_usr
用踩,release 名為 sample
,RadonDB MySQL 命名空間為 default
忙迁,連接示例如下:
mysql -h sample-leader.default -u radondb_usr -p
連接 Follower 服務(RadonDB MySQL 從節(jié)點)
mysql -h <follower_service_name>.<namespace> -u <user_name> -p
用戶名為 radondb_usr
脐彩,release 名為 sample
,RadonDB MySQL 命名空間
為 default
姊扔,連接示例如下:
mysql -h sample-follower.default -u radondb_usr -p
卸載
卸載 Operator
卸載當前命名空間下 release 名為 demo
的 RadonDB MySQL Operator惠奸。
helm delete demo
卸載集群
卸載 release 名為 sample
RadonDB MySQL 集群。
kubectl delete mysqlclusters.mysql.radondb.com sample
卸載自定義資源
kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlclusters.mysql.radondb.com
kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlusers.mysql.radondb.com
kubectl delete customresourcedefinitions.apiextensions.k8s.io backups.mysql.radondb.com
引用參考
- Deployment:https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/
- CRD:https://kubernetes.io/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources/
- 配置參數(shù):https://github.com/radondb/radondb-mysql-kubernetes/blob/main/docs/zh-cn/config_para.md
- Kubernetes 訪問集群中的應用程序:https://kubernetes.io/zh/docs/tasks/access-application-cluster/
*相關部署視頻可至 RadonDB 開源社區(qū) B 站賬號觀看(搜索:RadonDB)