天天看點

掌握TiUP工具 之 離線部署TiDB叢集

相對于TiUP線上部署,本文介紹的這種離線部署方法更适合在内網生産環境中部署TiDB叢集。通過TiUP工具,我們可以很輕松的部署,管理TiDB叢集。

TiDB資料庫

   傳統的單機資料庫在移動網際網路、雲計算、大資料和人工智能等場景下表現的力不從心,為了解決資料平台的擴充性的問題,TiDB 分布式資料庫應運而生。TiDB 是當今開源 NewSQL 資料庫領域的代表産品之一。 

   TiDB采用分布式資料庫架構,是以伺服器數量比較多。在部署TiDB叢集時,我們使用TiUP工具來安裝整個TiDB叢集環境。 從 TiDB 4.0 版本開始,TiUP 作為新的工具,承擔着包管理器的角色,管理着 TiDB 生态下衆多的元件,如 TiDB、PD、TiKV 等。使用者想要運作 TiDB 生态中任何元件時,隻需要執行 TiUP 一行指令即可,相比以前,極大地降低了管理難度。 

   預設情況下TiUP工具會聯網進行工具包的下載下傳和安裝,但生産環境往往都是内網環境,無法連接配接外網進行下載下傳。這種情況下,我們可以選擇離線的部署方法。本文以 TiDB 5.0 的版本為基礎,詳細介紹使用TiUP工具離線部署 TiDB 叢集的過程。

第一步、聯網下載下傳TiUP包管理器

  使用可以聯網的主機,下載下傳并安裝 TiUP 包管理器工具。指令如下:

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
掌握TiUP工具 之 離線部署TiDB叢集

第二步、聲明全局環境變量

聲明全局環境變量,指令如下:

source /root/.bash_profile

執行過程如下:

掌握TiUP工具 之 離線部署TiDB叢集

第三步、通過TiUP工具下載下傳所有工具的離線安裝包

  使用 tiup list tidb 指令可以看到所有tidb的版本,我們可以在其中選擇需要下載下傳的版本。指令如下:

tiup list tidb

掌握TiUP工具 之 離線部署TiDB叢集

  然後通過tiup mirror clone tidb-community-server-${version}-linux-amd64 ${version} --os=linux --arch=amd64 

  指令進行安裝。其中${version}需要替換成對應的TiDB版本,指令如下:

tiup mirror clone tidb-community-server-v5.2.1-linux-amd64 v5.2.1 --os=linux --arch=amd64

  我們将前兩個指令組合在一起,就得到了下載下傳最新版本安裝包的指令,指令如下:

version=`tiup list tidb|sort -r |head -n 2|tail -n 1|awk '{print $1};'` && \

tiup mirror clone tidb-community-server-${version}-linux-amd64 ${version} --os=linux --arch=amd64

掌握TiUP工具 之 離線部署TiDB叢集

  需要注意的是,在下載下傳過程中,可能會由于網絡問題導緻某個工具包下載下傳失敗,此時TiUP工具會再次嘗試下載下傳,如果最終無法下載下傳完成,TiUP工具會結束并退出。我們依舊可以重複TiUP指令來反複嘗試下載下傳。開始下載下傳過程時,會生成tidb-community-server-v5.2.1-linux-amd64的目錄。

  另一種方法,通過wget或者curl工具獨立手工下載下傳工具包,然後放入tidb-community-server-v5.2.1-linux-amd64目錄中。TiUP工具在下載下傳過程中,在目錄中會出現_tmp開頭的臨時目錄,需要手動将這些臨時目錄删除掉。截圖如下:

第四步、使用tar指令打包并傳輸

  通過 tar 指令将該元件包打包然後發送到隔離環境的中控機(傳輸tar包過程可以自行選擇方法),指令如下:

tar czvf tidb-community-server-v5.2.1-linux-amd64.tar.gz tidb-community-server-v5.2.1-linux-amd64

掌握TiUP工具 之 離線部署TiDB叢集

第五步、離線安裝TiUP元件

  将離線包發送到目标叢集的中控機後,執行以下指令離線安裝 TiUP 元件:

tar xzvf tidb-community-server-v5.2.1-linux-amd64.tar.gz && \

sh tidb-community-server-v5.2.1-linux-amd64/local_install.sh && \

掌握TiUP工具 之 離線部署TiDB叢集

第六步、編輯叢集初始化配置檔案

  請根據不同的叢集拓撲,編輯 TiUP 所需的叢集初始化配置檔案。首先生成叢集初始化配置模版,指令如下:

tiup cluster template > topology.yaml

掌握TiUP工具 之 離線部署TiDB叢集

  編輯 TiUP 所需的叢集初始化配置檔案,指令如下:

vi topology.yaml

掌握TiUP工具 之 離線部署TiDB叢集

第七步、檢查和修複叢集風險

  先使用 check 指令來檢查叢集存在的潛在風險,指令如下:

tiup cluster check ./topology.yaml --user root -p

執行過程如下

掌握TiUP工具 之 離線部署TiDB叢集
掌握TiUP工具 之 離線部署TiDB叢集

  檢查結果為Fail的内容,表面存在的風險。進一步運作check --apply 指令,自動修複叢集存在的潛在風險,如果自動無法修複,還需要手工來修複風險。指令如下:

tiup cluster check ./topology.yaml --apply --user root -p
掌握TiUP工具 之 離線部署TiDB叢集
掌握TiUP工具 之 離線部署TiDB叢集

   修複完成後,再次執行check指令進行二次檢查,最終結果狀态均應該為Pass(本步驟指令參考上文)。在本文的附錄部分,列舉了一些可能的風險和解決方法。

第八步、部署TiDB叢集

  執行 deploy 指令部署 TiDB 叢集,叢集名稱使用sandata,指令如下:

tiup cluster deploy sandata v5.2.1 ./topology.yaml --user root -p

掌握TiUP工具 之 離線部署TiDB叢集

第九步、檢視叢集狀态

  TiDB叢集部署完成後,預設是關閉狀态,通過檢視叢集狀态可以進行确認,指令如下:

tiup cluster display sandata

掌握TiUP工具 之 離線部署TiDB叢集

第十步、啟動TiDB叢集

最終的目标就是啟動TiDB叢集,指令如下:

tiup cluster start sandata

掌握TiUP工具 之 離線部署TiDB叢集

第十一步、确認叢集已經啟動

   再次檢查部署的 TiDB 叢集情況,确認最終的啟動狀态為Up,指令如下:

掌握TiUP工具 之 離線部署TiDB叢集

附錄1:解決numactl not usable, bash: numactl: command not found

  使用yum來安裝numactl工具,指令如下:

yum -y install numactl

附錄2:解決mount point / does not have 'nodelalloc' option set和

mount point / does not have 'noatime' option set

  編輯/etc/fstab檔案,增加nodelalloc和noatime的配置,配置如下:

掌握TiUP工具 之 離線部署TiDB叢集

附錄3:解決THP is enabled, please disable it for best performance

編輯 /etc/rc.d/rc.local 檔案,增加下面的内容,指令如下:

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

 echo never > /sys/kernel/mm/transparent_hugepage/enabled

 fi

 if test -f /sys/kernel/mm/transparent_hugepage/defrag; then

 echo never > /sys/kernel/mm/transparent_hugepage/defrag

掌握TiUP工具 之 離線部署TiDB叢集

增加檔案執行權限,指令如下:

chmod +x /etc/rc.d/rc.local

最後重新開機主機,讓所有配置生效。

總結

   相對于TiUP線上部署,本文介紹的這種離線部署方法更适合在内網生産環境中部署TiDB叢集。通過TiUP工具,我們可以很輕松的部署,管理TiDB叢集。