容器化 | 在 K8s 上部署 RadonDB MySQL Operator 和集群

来源:https://www.cnblogs.com/radondb/archive/2022/03/25/16053874.html
-Advertisement-
Play Games

作者:程潤科 資料庫研發工程師 編輯:張莉梅 高級文檔工程師 視頻:錢芬 高級測試工程師 本文將演示在 Kubernetes 上部署 RadonDB MySQL Kubernetes 2.X(Operator)的步驟,快速實現 MySQL 高可用集群部署,以及部署集群的校驗和卸載方式。 部署版本為 ...


作者:程潤科 資料庫研發工程師

編輯:張莉梅 高級文檔工程師

視頻:錢芬 高級測試工程師

本文將演示在 Kubernetes 上部署 RadonDB MySQL Kubernetes 2.X(Operator)的步驟,快速實現 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 , 創建一個名為 demo-mysql-operator 的 Deployment[1]。

helm install demo radondb/mysql-operator

在這一步中,預設將同時創建集群所需的 CRD[2]。

步驟 3: 部署 RadonDB MySQL 集群

執行以下指令,以預設參數為 CRD mysqlclusters.mysql.radondb.com 創建一個實例,即創建 RadonDB MySQL 集群。

kubectl apply -f https://github.com/radondb/radondb-mysql-kubernetes/releases/latest/download/mysql_v1alpha1_mysqlcluster.yaml

自定義集群部署參數,可參考 配置參數[3]。

部署校驗

校驗 RadonDB MySQL Operator

查看 demo 的 Deployment 和對應監控服務,回顯如下信息則部署成功。

$ 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 集群

執行如下命令,將查看到如下 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

以預設部署為例,執行如下命令將查看到名為 sample-mysql 的三節點 RadonDB MySQL 集群及用於訪問節點的服務。

$ 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 集群內,支持使用 service_name 或者 clusterIP 方式,訪問 RadonDB MySQL。

RadonDB MySQL 提供 Leader 和 Follower 兩種服務,分別用於客戶端訪問主從節點。Leader 服務始終指向主節點(可讀寫),Follower 服務始終指向從節點(只讀)。

file

RadonDB MySQL 集群架構圖

以下為客戶端與資料庫在同一 Kubernetes 集群內,訪問 RadonDB MySQL 的方式。

當客戶端的與資料庫部署在不同 Kubernetes 集群,請參考 Kubernetes 訪問集群中的應用程式[4],配置埠轉發、負載均衡等連接方式。

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 集群的物理機訪問資料庫 Pod。
連接 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  

卸載

卸載 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

引用參考

  1. Deploymenthttps://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/
  2. CRDhttps://kubernetes.io/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources/
  3. 配置參數https://github.com/radondb/radondb-mysql-kubernetes/blob/main/docs/zh-cn/config_para.md
  4. Kubernetes 訪問集群中的應用程式https://kubernetes.io/zh/docs/tasks/access-application-cluster/

*相關部署視頻可至 RadonDB 開源社區 B 站賬號觀看(搜索:RadonDB)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當枚舉用來表示一組位集合而不是單個值的時候,我們就需要用到位枚舉。在定義位枚舉類型時,通常需要顯示的為每個枚舉成員分配一個數值,並且還可以定義一些組合值。最後還需要給枚舉加上[Flags]特性標記,如 [Flags] public enum Actions { None = 0, Read = 0x ...
  • 一 什麼是SECS SECS(SEMI Equipment Communication Standard),半導體設備通訊標準。 此標準由SEMI (Semiconductor Equipment and Materials International 國際半導體設備與材料產業協會) 制定,用來統一 ...
  • 一、.NET6中使用swagger swagger支持 API 自動生成同步的線上文檔,下麵在.NET6中引入 1.建.NET6應用並建以下控制器 /// <summary> /// 訂單介面 /// </summary> [ApiController] [Route("[controller]/[ ...
  • 起因 由於某些不可知的原因,需要在系統上安裝深信服的Singress監控,後來卸載的時候,因某些未知原因,損壞了系統的某些設置。導致IE、Chrome無法正常打開網頁。 微信、音樂軟體等都OK,火狐依舊能使用。幸甚。 IE地址欄輸入baidu.com無果,沒響應 IE地址欄輸入14.215.177. ...
  • 故事背景 做linux開發的一般都會涉及到deb包,那麼我們如何製作deb包,debian目錄中都有哪些文件以及他們的含義是什麼呢?那麼我們就帶著這些疑惑去探索了。 探索之路 首先安裝 sudo apt install dh-make 。 修改源代碼文件名 mv xxx xxx-1.0.1 ,為了生 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 linux配置yum源的三種方法: 1.配置網路yum源 2.通過上傳鏡像文件配置本地yum源 3.通過連接存儲或本地鏡像文件配置本地yum源(虛擬機) 配置各種yum源的時候,需要提前知道自己的linux系統是什麼版本的,以方便後面的配置 // ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 安裝依賴包 yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl systat libseccomp wget vim net-tools git iptables ...
  • RadonDB MySQL Kubernetes 於 3 月 24 日正式發佈新版本 2.1.3 。該版本主要基於在 2.1.2 進行功能優化和升級。 致謝 首先感謝 @andyli029 @acekingke @runkecheng @mgw2168 @molliezhang 提交的修改。 什麼是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...