TIDB集群安裝部署方案————————下篇


===================  下面進入真正的實施部署階段了===

 

概述

Ansible 是一款自動化運維工具,TiDB-Ansible PingCAP 基於 Ansible playbook 功能編寫的集群部署工具。使用 TiDB-Ansible 可以快速部署一個完整的 TiDB 集群(包括 PDTiDBTiKV 和集群監控模塊)

 

本部署工具可以通過配置文件設置集群拓撲,一鍵完成以下各項運維工作:

 

 

初始化操作系統,包括創建部署用戶、設置 hostname

部署組件

滾動升級,滾動升級時支持模塊存活檢測

數據清理

環境清理

配置監控模塊

准備機器

 

 

部署中控機一台:

 

 

Python 2.6 Python 2.7,安裝有 Ansible 2.3 版本或以上版本。

依賴 Python Jinja2 MarkupSafe 指定版本模塊: pip install Jinja2==2.7.2 MarkupSafe==0.11

可通過 ssh 登錄目標機器,支持密碼登錄或 ssh authorized_key 登錄。

中控機可以是部署目標機器中的某一台,該機器需開放外網訪問,並且安裝 curl 軟件包,用於下載 binary

如使用 Docker 方式部署,依賴詳見如何使用 docker 方式部署 TiDB,默認為 binary 部署方式。

部署目標機器若干

 

TiDB 集群主要分為三個組件:

TiDB Server

 

TiDB Server 負責接收 SQL 請求,處理 SQL 相關的邏輯,並通過 PD 找到存儲計算所需數據的 TiKV 地址,與 TiKV 交互獲取數據,最終返回結果。 TiDB Server 是無狀態的,其本身並不存儲數據,只負責計算,可以無限水平擴展,可以通過負載均衡組件(如LVSHAProxy 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 為單位進行調度。

 

建議4台及以上,TiKV 至少3實例,且與 TiDBPD 模塊不位於同一主機,詳見部署建議。

Linux 操作系統,x86_64 架構(amd64),內核版本建議 3.10 以上,推薦 CentOS 7.3 及以上版本, 文件系統推薦 ext4(部分內核版本 xfs 文件系統有 bug, 本工具檢查到 xfs 文件系統有 bug 會退出)

機器之間網絡互通,防火牆、iptables 等可以在部署驗證時關閉,后期開啟。

機器的時間、時區設置正確(要求機器時間同步),有 NTP 服務可以同步正確時間, ubuntu 系統需單獨安裝 ntpstat 軟件包,詳見如何檢測 NTP 服務是否正常。

若使用普通用戶作為 Ansible SSH 遠程連接用戶,該用戶需要有 sudo root 權限,或直接使用 root 用戶遠程連接。

Python 2.6 Python 2.7

如使用 Docker 方式部署,依賴詳見如何使用 docker 方式部署 TiDB,默認為 binary 部署方式。

在中控機器上安裝配置 Ansible

按照官方手冊安裝 Ansible,推薦使用 Ansible 2.3 及以上版本。安裝完成后,可通過 ansible --version 查看版本。

使用以下命令從 Github TiDB-Ansible 項目上下載 TiDB-Ansible 相應版本,默認的文件夾名稱為 tidb-ansible。該文件夾包含用 TiDB-Ansible 來部署 TiDB 集群所需要的所有文件。

4.下載TiDb-Ansible

 

192.168.1.56虛擬機上運行下面合令

 

su – tidb          #使用tidb用戶登錄中控機

 

cd /home/tidb

 

sudo yum -y install git

 

git clone -b release-2.0 https://github.com/pingcap/tidb-ansible.git

 

安裝ansible

 

sudo yum -y install epel-release

 

sudo yum -y install python-pip curl

sudo yum -y install sshpass

cd tidb-ansible

sudo pip install -r ./requirements.txt               #如果失敗再運行一次

 

 

ansible --version

如果顯示如下圖表示中控機的ansible安裝成功

 

配置設置免密的目標服務器

 

vi hosts.ini

使用ansible執行免密

 

ansible-playbook -i hosts.ini create_users.yml -k

 

ssh 192.168.1.50

 

sudo -su root

 

如果在中控機上能夠無密碼登錄,並且登錄后可以無密碼切換到root。即說明免密設置成功

 

特別注意中控機本機也要免密,后續將組件安裝到中控機時就不用再進行特別的設置了

 

 

cd /home/tidb/tidb-ansible

 

ansible -i hosts.ini all -m shell -a  "firewall-cmd --state" -b

 

sudo systemctl stop firewalld.service #注意:提示紅色信息不是表示錯誤,而是在關閉防火牆

 

sudo systemctl disable firewalld.service

 

ansible -i hosts.ini all -m shell -a  "systemctl stop firewalld.service" -b

 

ansible -i hosts.ini all -m shell -a  "systemctl disable firewalld.service" -b

啟動ntp服務

 

cd /home/tidb/tidb-ansible

 

ansible -i hosts.ini all -m shell -a  "systemctl disable chronyd.service" –b

 

ansible -i hosts.ini all -m shell -a  "systemctl enable ntpd.service" -b

 

ansible -i hosts.ini all -m shell -a  "systemctl start ntpd.service" -b

檢驗ntp服務

 

ansible -i hosts.ini all -m shell -a  "ntpstat" –b

ansible -i hosts.ini all -m shell -a  "ntpq -p" -b

ntpstat可以查看服務器的ntp狀態,ntpq可以查看各服務器當前使用的時間服務器

 

使用tidb登錄中控機,進行規划配置

 

cd /home/tidb/tidb-ansible

 

vi inventory.ini

 

安裝TiDB集群

 

安裝前檢驗

 

執行以下命令如果所有 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

下載安裝包

 

ansible-playbook local_prepare.yml

執行后會自動下載最新的TiDB包到downloads目錄中

修改系統環境,修改內核參數

 

ansible-playbook bootstrap.yml

修改后會做一些檢測,也會提示一些錯誤,例如CPU核數不夠,如果不是關鍵問題,可以

直接繼續。

 

vim  bootstrap.yml  修改該文件並注釋掉以下的內容

 

#  - { role: check_system_optional, when: not dev_mode }

重新執行ansible-playbook bootstrap.yml命令

根據inventory.ini部署集群

 

執行如下命令:

 

ansible-playbook deploy.yml

 

spark配置JDK

 

如果使用了TiSpark,那么需要為對應的服務器配置JDK。首先將JDK安裝包放到中控機上,然后再傳給TiSpark所在的服務器。

 

如果可以直接傳過去,也可以不使用此種方式

 

執行如下命令:

 

 

 

cd /home/tidb

 

mkdir software

 

cd software

 

 

 

轉到java官網下載java安裝包

 

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

執行

 

wget http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-linux-x64.tar.gz?AuthParam=1528549364_67d5fd9aae08d3e2b1f12a03f7e2b0ea

 

下載64位的Java sdk

 

首先在TiKV的服務器上用mkdir創建/opt/jdk目錄。然后回到中控機使用scp進行傳輸

 

執行如下命令:

 

 

 

49-52 IP虛擬主機都需要進行下面的操作:

 

ssh 192.168.1.49

 

su root

 

mkdir /opt/jdk

 

exit

 

exit

 

scp jdk-8u172-linux-x64.tar.gz   root@192.168.1.49:/opt/jdk/

 

使用root切換到495051三台虛擬機上,進行jdk解壓,並進行環境變量配置。以49為例:

 

ssh 192.168.1.49

 

su – root

 

cd /opt/jdk

 

tar –zxvf jdk-8u172-linux-x64.tar.gz

 

vi /etc/profile

 

在文件的最后位置增加JDK配置。

 

export JAVA_HOME=/opt/jdk/jdk1.8.0_172

 

export PATH=$JAVA_HOME/bin:$PATH

 

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

驗證JDK安裝是否成功:

 

source /etc/profile

 

java -version

su - tidb

java -version

其它兩台虛擬機一樣操作

使用tidb登錄,啟動集群

 

cd /home/tidb/tidb-ansible

 

ansible-playbook start.yml

 

出現以下輸出,代表停止成功

 

使用tidb登錄,停止集群

 

cd /home/tidb/tidb-ansible

 

ansible-playbook stop.yml

通過瀏覽器訪問監控平台

 

地址:http://192.168.1.56:3000

 

默認帳號密碼是:admin/admin

 

 

滾動升級 TiDB 集群組件

 

ansible-playbook rolling_update.yml

滾動升級 TiDB 監控組件

 

為滿足客戶監控組件混布需求,監控組件 systemd service 開始按端口區分。

 

查看  inventory.ini  文件中  process_supervision  變量:

 

如果  process_supervision = systemd ,為兼容  v2.0.0-rc.6  之前的版本,你需要執行  migrate_monitor.yml  Playbook。如果  process_supervision = supervise ,此步驟不需要執行。

 

ansible-playbook migrate_monitor.yml

 

滾動升級 TiDB 監控組件:

 

ansible-playbook rolling_update_monitor.yml

 

TIDB各文件說明

 

ansible.cfg: ansible 配置文件

 

inventoty.ini: 組和主機的相關配置

 

conf: TiDB 相關配置模版

 

group_vars: 相關變量配置

 

scripts: grafana 監控 json 模版

 

local_prepare.yml: 用來下載相關安裝包

 

bootstrap.yml: 初始化集群各個節點

 

deploy.yml: 在各個節點安裝 TiDB 相應服務

 

roles: ansible tasks 的集合

 

start.yml: 啟動所有服務

 

stop.yml: 停止所有服務

 

unsafe_cleanup_data.yml: 清除數據

 

unsafe_cleanup.yml: 銷毀集群

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM