Centos7 安裝部署 TIDB集羣

一、組件介紹及安裝環境要求

1.組件描述

TiDB Server:

TiDB Server 負責接收 SQL 請求,處理 SQL 相關的邏輯,並通過 PD 找到存儲計算所需數據的 TiKV 地址,與 TiKV 交互獲取數據,最終返回結果。
TiDB Server 是無狀態的,其本身並不存儲數據,只負責計算,可以無限水平擴展,可以通過負載均衡組件(如LVS、HAProxy 或 F5)對外提供統一的接入地址。

PD Server:

Placement Driver (簡稱 PD) 是整個集羣的管理模塊,其主要工作有三個:

一是存儲集羣的元信息(某個 Key 存儲在哪個 TiKV 節點);

二是對 TiKV 集羣進行調度和負載均衡(如數據的遷移、Raft group leader 的遷移等);

三是分配全局唯一且遞增的事務 ID。

PD 是一個集羣,需要部署奇數個節點,一般線上推薦至少部署 3 個節點。

TiKV Server:

TiKV Server 負責存儲數據,從外部看 TiKV 是一個分佈式的提供事務的 Key-Value 存儲引擎。存儲數據的基本單位是 Region,每個 Region 負責存儲一個 Key Range(從 StartKey 到 EndKey 的左閉右開區間)的數據,每個 TiKV 節點會負責多個 Region。TiKV 使用 Raft 協議做複製,保持數據的一致性和容災。副本以 Region 爲單位進行管理,不同節點上的多個 Region 構成一個 Raft Group,互爲副本。數據在多個 TiKV 之間的負載均衡由 PD 調度,這裏也是以 Region 爲單位進行調度。

TiSpark:

TiSpark 作爲 TiDB 中解決用戶複雜 OLAP 需求的主要組件,將 Spark SQL 直接運行在 TiDB 存儲層上,同時融合 TiKV 分佈式集羣的優勢,並融入大數據社區生態。至此,TiDB 可以通過一套系統,同時支持 OLTP 與 OLAP,免除用戶數據同步的煩惱。

2.系統要求:

Linux 操作系統平臺

版本

Red Hat Enterprise Linux 7.3 及以上
CentOS 7.3 及以上
Oracle Enterprise Linux 7.3 及以上
Ubuntu LTS 16.04 及以上

備註:公司內部系統版本爲  【 CentOS Linux release 7.3.1611 (Core)  】

3.網絡要求

TiDB 作爲開源分佈式 NewSQL 數據庫,其正常運行需要網絡環境提供如下的網絡端口配置要求,管理員可根據實際環境中 TiDB 組件部署的方案,在網絡側和主機側開放相關端口:

組件

默認端口

說明

TiDB 4000 應用及 DBA 工具訪問通信端口
TiDB 10080 TiDB 狀態信息上報通信端口
TiKV 20160 TiKV 通信端口
PD 2379 提供 TiDB 和 PD 通信端口
PD 2380 PD 集羣節點間通信端口
Pump 8250 Pump 通信端口
Drainer 8249 Drainer 通信端口
Prometheus 9090 Prometheus 服務通信端口
Pushgateway 9091 TiDB,TiKV,PD 監控聚合和上報端口
Node_exporter 9100 TiDB 集羣每個節點的系統信息上報通信端口
Blackbox_exporter 9115 Blackbox_exporter 通信端口,用於 TiDB 集羣端口監控
Grafana 3000 Web 監控服務對外服務和客戶端(瀏覽器)訪問端口
Grafana 8686 grafana_collector 通信端口,用於將 Dashboard 導出爲 PDF 格式
Kafka_exporter 9308 Kafka_exporter 通信端口,用於監控 binlog kafka 集羣

 

4.服務器要求

建議 4 臺及以上,TiKV 至少 3 實例,且與 TiDB、PD 模塊不位於同一主機

二、系統配置

1.在中控機上安裝系統依賴包

以 root 用戶登錄中控機

如果中控機是 CentOS 7 系統,執行以下命令:

# yum -y install epel-release git curl sshpass
# yum -y install python-pip

2.在中控機上創建 tidb 用戶,並生成 ssh key

useradd -m -d /home/tidb tidb
passwd tidb

編輯 /etc/sudoers 
# visudo
tidb ALL=(ALL) NOPASSWD: ALL


su - tidb
ssh-keygen -t rsa


三、集羣部署

 

1.安裝Ansible 及其依賴

$ cd /home/tidb/tidb-ansible
$ sudo pip install -r ./requirements.txt
$ ansible --version

    

2.在中控機上配置部署機器 ssh 互信及 sudo 規則

以 tidb 用戶登錄中控機,將你的部署目標機器 IP 添加到 hosts.ini 文件 [servers] 區塊下。

 

3.遠程創建用戶及安全驗證

    $ ansible-playbook -i hosts.ini create_users.yml -u root -k

 

4.檢測集羣互信狀況

 執行以下命令如果所有 server 返回 tidb 表示 ssh 互信配置成功。

ansible -i inventory.ini all -m shell -a 'whoami'

執行以下命令如果所有 server 返回 root 表示 tidb 用戶 sudo 免密碼配置成功。

ansible -i inventory.ini all -m shell -a 'whoami' -b

 

5.執行 local_prepare.yml playbook,聯網下載 TiDB binary 到中控機:

ansible-playbook local_prepare.yml

 

6.初始化系統環境,修改內核參數

ansible-playbook bootstrap.yml

 

7.部署 TiDB 集羣軟件

ansible-playbook deploy.yml


部署成功展示:

執行成功後節點tidb用戶目錄下會出現deploy的文件夾

8.啓動 TiDB 集羣

ansible-playbook start.yml

啓動成功截圖:

9.測試集羣

  • 使用 MySQL 客戶端連接測試,TCP 4000 端口是 TiDB 服務默認端口。

四、異常彙總

1.deploy 時提示Make sure NTP service is runnning and ntpstat is synchronised

 

2.啓動集羣節點時報 Could not find the requested service node_exporter-9100.service: host"

問題:安裝部署配置不完善(具體原因待查明)

解決方案:安裝第四步驟加上 -k 參數  如下:

ansible-playbook deploy.yml -k
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章