我們已經介紹瞭如何在 Kubernetes 和 KubeSphere 上部署 RadonDB MySQL 集群。本文將演示如何在 Rancher[1] 上部署 RadonDB MySQL Kubernetes 2.2.0[2],快速獲得一套 MySQL 容器化集群。 部署準備 已部署 Rancher ...
我們已經介紹瞭如何在 Kubernetes 和 KubeSphere 上部署 RadonDB MySQL 集群。本文將演示如何在 Rancher[1] 上部署 RadonDB MySQL Kubernetes 2.2.0[2],快速獲得一套 MySQL 容器化集群。
部署準備
- 已部署 Rancher 集群[3]
- MySQL 客戶端(非必須)
本文中 Rancher 語言環境為中文。
部署步驟
1、添加 Helm 倉庫
登錄 Rancher 管理控制台後,點擊 目標集群 > 應用及應用市場 > Chart 倉庫,創建一個新的倉庫。
自定義倉庫名稱 mysql-operator,目標可選擇 http(s) 方式,配置索引 URL 為:https://radondb.github.io/radondb-mysql-kubernetes/
點擊 創建,返回倉庫列表頁面。當倉庫狀態切換為 Active
,表示倉庫正常運行。
2、部署 Operator
一個 Rancher 集群僅需部署一次 RadonDB MySQL Operator。點擊 應用和應用市場 > Charts,進入 Charts 列表頁面。搜索到 mysql-operator,進入部署 Operator 頁面,可選擇 mysql-operator Charts 版本(省略,預設部署最新版 2.2.0)。
安裝
步驟1:填寫名稱,勾選在安裝前自定義 Helm 選項,點擊下一步。
步驟 2:自定義編輯應用 YAML,點擊下一步。
步驟 3:確認其他部署選項,點擊安裝。
安裝完成後,跳轉到 已安裝的應用 管理頁面。可以在下方列表中看到應用的狀態,資源,存活時間等。
3、部署 RadonDB MySQL 集群
部署集群可以通過命令或者導入 YAML 的方式(視頻中演示的方式)。
通過命令方式
在集群管理頁面,點擊右上角 Kubectl 命令圖標。在命令視窗,輸入創建集群命令。
如下示例,部署一個三節點的樣例集群。
# Run kubectl commands inside here
# e.g. kubectl get all
$ cat <<EOF | kubectl apply -f-
apiVersion: mysql.radondb.com/v1alpha1
kind: MysqlCluster
metadata:
name: sample
spec:
replicas: 3
EOF
回車執行命令,回顯提示 created 則部署成功。預期回顯信息示例:
mysqlcluster.mysql.radondb.com/sample created
通過導入 YAML 方式
在 Rancher 集群管理頁面,點擊右上角 YAML 導入圖標。在彈出的視窗中,導入修改後的 YAML 文件。
YAML 文件可參考 RadonDB MySQL 集群配置樣例[4]。修改 YAML 文件中配置參數值,請參見配置參數[5]。
4、部署驗證
在集群管理頁面,選擇 服務發現 > 服務,進入服務列表頁面。
找到部署的集群,查看服務狀態。狀態為 Active
,表示服務正常運行。
點擊服務名稱,進入服務詳情頁面,查看 Pod 狀態。狀態為 Active
,表示 Pod 正常運行。
在正在運行的 Pod 行,點擊 Execute Shell,展開 Pod 命令視窗。執行如下命令並輸入密碼,驗證資料庫連接狀態。
$ mysql -u root -p
訪問 RadonDB MySQL
- 當客戶端與資料庫部署在不同 Rancher 集群,請 在 Rancher 中設置 Load Balancer 和 Ingress Controller[6]。
更多訪問方式,請參見 Kubernetes 訪問集群中的應用程式[7]。
- 當客戶端與資料庫部署在同一 Rancher 集群內,可選擇使用
service_name
或者clusterIP
方式,訪問 RadonDB MySQL。
說明:RadonDB MySQL 提供 Leader 服務和 Follower 服務用於分別訪問主從節點。Leader 服務始終指向主節點(讀寫),Follower 服務始終指向從節點(只讀)。
以下為客戶端與資料庫在同一 Rancher 集群內,訪問 RadonDB MySQL 的方式。
1、service_name 方式
連接 Leader 服務(RadonDB MySQL 主節點)
$ 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 從節點)
$ 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
2、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
視頻演示demo請至B站搜索【RadonDB】
引用鏈接
1.Rancher:https://rancher.com
2.RadonDB MySQL Kubernetes 2.2.0:https://github.com/radondb/radondb-mysql-kubernetes
3.快速搭建:https://rancher.com/docs/rancher/v2.6/en/quick-start-guide/deployment/quickstart-manual-setup/
5.配置參數:https://github.com/radondb/radondb-mysql-kubernetes/blob/main/docs/config_para.md
6.Set Up Load Balancer and Ingress Controller within Rancher:https://rancher.com/docs/rancher/v2.6/en/k8s-in-rancher/load-balancers-and-ingress/
7.訪問集群中的應用程式:https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/