一、組件介紹及安裝環境要求
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 互信配置成功。
|
執行以下命令如果所有 server 返回 root
表示 tidb
用戶 sudo 免密碼配置成功。
|
5.執行 local_prepare.yml
playbook,聯網下載 TiDB binary 到中控機:
|
6.初始化系統環境,修改內核參數
|
7.部署 TiDB 集羣軟件
|
部署成功展示:
執行成功後節點tidb用戶目錄下會出現deploy的文件夾
8.啓動 TiDB 集羣
|
啓動成功截圖:
9.測試集羣
- 使用 MySQL 客戶端連接測試,TCP 4000 端口是 TiDB 服務默認端口。
- 通過瀏覽器訪問監控平臺。
訪問地址如下:http://192.168.0.111:3000/login
賬戶/密碼:admin/admin
四、異常彙總
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