KubeSphere 部署 TiDB 雲原生分佈式數據庫

TiDB 是 PingCAP 公司自主研發的開源分佈式關係型數據庫 TiDB,爲企業關鍵業務打造,具有「分佈式強一致性事務、在線彈性水平擴展、故障自恢復的高可用、跨數據中心多活」等核心特性,助力企業最大化發揮數據價值,釋放企業增加空間。node

KubeSphere 是在 Kubernetes 之上構建的以應用爲中心的多租戶容器平臺,徹底開源,支持多雲與多集羣管理,提供全棧的 IT 自動化運維的能力,簡化企業的 DevOps 工做流。KubeSphere 提供了運維友好的嚮導式操做界面,幫助企業快速構建一個強大和功能豐富的容器雲平臺。mysql

本文將介紹如何在 KubeSphere 上部署 TiDB。git

部署環境準備

KubeSphere 是由青雲 QingCloud 開源的容器平臺,支持在任何基礎設施上安裝部署。在青雲公有云上支持一鍵部署 KubeSphere(QKE)。github

下面以在青雲雲平臺快速啓用 KubeSphere 容器平臺爲例部署 TiDB 分佈式數據庫,至少須要準備 3 個可調度的 node 節點。你也能夠在任何 Kubernetes 集羣或 Linux 系統上安裝 KubeSphere,能夠點擊【閱讀原文】參考KubeSphere 官方文檔。sql

1\. 登陸青雲控制檯:https://console.qingcloud.com/,點擊左側容器平臺,選擇 KubeSphere,點擊建立並選擇合適的集羣規格:docker

2\. 建立完成後登陸到 KubeSphere 平臺界面:數據庫

3\. 點擊下方的 Web Kubectl 集羣客戶端命令行工具,鏈接到 Kubectl 命令行界面。執行如下命令安裝 TiDB Operator CRD:bash

kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.1.6/manifests/crd.yaml

 4\. 執行後的返回結果以下:網絡

5\. 點擊左上角平臺管理,選擇訪問控制,新建企業空間,這裏命名爲 dev-workspace架構

6\. 進入企業空間,選擇應用倉庫,添加一個 TiDB 的應用倉庫:

7\. 將 PingCAP 官方 Helm 倉庫添加到 KubeSphere 容器平臺,Helm 倉庫地址以下:

https://charts.pingcap.org

8\. 添加方式以下:

部署 TiDB-Operator

1\. 首選建立一個項目(namespace)用於運行 TiDB 集羣:

2\. 建立完成後點擊進入項目,選擇應用,部署新應用:

3\. 選擇來自應用模板:

4\. 選擇 PingCAP,該倉庫包含了多個 Helm Chart,當前主要部署 TiDB Operator 和TiDB Cluster。

5\. 點擊TiDB Operator 進入 Chart 詳情頁,點擊配置文件可查看或下載默認的 values.yaml,選擇版本,點擊部署:

6\. 配置應用名稱並選擇應用版本,確認應用部署位置:

7\. 繼續下一步,該步驟能夠在界面直接編輯 values.yaml 文件,自定義配置,當前保留默認便可:

8\. 點擊部署,等待應用狀態變爲活躍:

9\. 點擊工做負載(Deployment),查看TiDB Operator 部署了 2 個 Deployment 類型資源:

部署 TiDB-Cluster

1.TiDB Operator 部署完成後,能夠繼續部署TiDB Cluster。與部署TiDB Operator 操做相同,選擇左側應用,點擊TiDB Cluster:

2\. 切換到配置文件,選擇版本,下載 values.yaml 到本地: 

3\. TiDB Cluster 中部分組件須要持久存儲卷,青雲公有云平臺提供瞭如下幾種類型的 StorageClass:

/ # kubectl get sc
NAME                       PROVISIONER     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
csi-high-capacity-legacy   csi-qingcloud   Delete          Immediate           true                   101m
csi-high-perf              csi-qingcloud   Delete          Immediate           true                   101m
csi-ssd-enterprise         csi-qingcloud   Delete          Immediate           true                   101m
csi-standard (default)     csi-qingcloud   Delete          Immediate           true                   101m
csi-super-high-perf        csi-qingcloud   Delete

4\. 這裏選擇 csi-standard 類型,values.yaml 中的 StorageClassName 字段默認配置爲 local-storage。所以,在下載的 yaml 文件中直接替換全部的 local-storage 字段爲 csi-standard。在最後一步使用修改後的 values.yaml 覆蓋應用配置文本框中的內容,固然也能夠手動編輯配置文件逐個替換:

5\. 這裏僅修改 storageClassName 字段用於引用外部持久存儲,若是須要將TiDB、TiKV 或 PD 組件調度到獨立節點,可參考 NodeAffinity 相關參數進行修改。點擊部署,將TiDB Cluster 部署到容器平臺,最終在應用列表中能夠看到以下 2 個應用:

查看 TiDB 集羣監控

1\. TiDB 集羣部署後須要必定時間完成初始化,選擇工做負載,查看 Deployment 無狀態應用:

2\. 查看有狀態副本集(StatefulSets),其中TiDB、TiKV 和 PD 等組件都爲有狀態應用:

3\. 在 KubeSphere 監控面板查看TiDB負載狀況,能夠看到 CPU、內存、網絡流出速率有明顯的變化:

4\. 在 KubeSphere 監控面板查看 TiKV 負載狀況:

5\. 查看容器組(Pod)列表,TiDB集羣包含了 3 個 PD、2 個TiDB以及 3 個 TiKV 組件:

6\. 點擊存儲管理,查看存儲卷,其中 TiKV 和 PD 這 2 個組件使用了持久化存儲:

7\. 查看某個存儲卷用量信息,以 TiKV 爲例,能夠看到當前存儲的存儲容量和剩餘容量等監控數據。

8\. 在 KubeSphere 項目首頁查看TiDB Cluster 項目中資源用量排行:

訪問 TiDB 集羣

1\. 點擊左側服務,查看 TiDB 集羣建立和暴露的服務信息。

2\. 其中 TiDB 服務 4000 端口綁定的服務類型爲 NodePort,直接能夠在集羣外經過 nodeIP 訪問。測試使用 MySQL 客戶端鏈接數據庫。

[root@k8s-master1 ~]# docker run -it --rm mysql bash


[root@0d7cf9d2173e:/# mysql -h 192.168.1.102 -P 32682 -u root    
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 201
Server version: 5.7.25-TiDB-v4.0.6 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible
 
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| METRICS_SCHEMA     |
| PERFORMANCE_SCHEMA |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.01 sec)
 
mysql>

查看 Grafana 監控面板

另外,TiDB 自帶了 Prometheus 和 Grafana,用於數據庫集羣的性能監控,能夠看到 Grafana 界面的 Serivce 3000 端口一樣綁定了 NodePort 端口。訪問 Grafana UI,查看某個指標:

總結

KubeSphere 容器平臺對於雲原生應用部署很是友好,對於還不熟悉 Kubernetes 的應用開發者而又但願經過在界面簡單配置完成 TiDB 集羣的部署,能夠參考以上步驟快速上手。咱們將在下一期的文章中,爲你們分享另外一種部署玩法:將 TiDB 應用上架到 KubeSphere 應用商店實現真正的一鍵部署。

另外,TiDB 還能夠結合 KubeSphere 的多集羣聯邦功能,部署 TiDB 應用時可一鍵分發 TiDB 不一樣的組件副本到不一樣基礎設施環境的多個 Kubernetes 集羣,實現跨集羣、跨區域的高可用。若是你們感興趣,咱們將在後續的文章中爲你們分享 TiDB 在 KubeSphere 實現多集羣聯邦的混合雲部署架構。

相關文章
相關標籤/搜索