服務(wù)啟動命令
1、執(zhí)行初始化命令
[tidb@localhost tidb-ansible-master]$ sudo ansible-playbook bootstrap.yml -k -K
[sudo] password for tidb:? 要輸入tidb用戶的密碼
SSH password:要輸入tidb用戶的密碼
SUDO password[defaults to SSH password]:要輸入tidb用戶的密碼
2、安裝服務(wù)
[tidb@localhost tidb-ansible-master]$?sudo ansible-playbook?-i?inventory.ini?deploy.yml?-k?-K
3、啟停服務(wù)
(1) 啟動所有服務(wù)
[tidb@localhost tidb-ansible-master]$?sudo?ansible-playbook?-i?inventory.ini?start.yml?-k?-K
(2) 停止所有服務(wù)
[tidb@localhost tidb-ansible-master]$?sudo?ansible-playbook?-i?inventory.ini?stop.yml
(3) 附錄
[tidb@localhost tidb-ansible-master]$?sudo?ansible-playbook?-i?inventory.ini?xxx.yml?-k?-K
-k 執(zhí)行之后需要輸入 ssh 連接用戶的密碼,如果做了中控機到所有節(jié)點的互信,則不需要此參數(shù)
-K 執(zhí)行之后需要輸入 sudo 所需的密碼,如果使用 root 用戶或者 sudo 無需密碼,則不需要此參數(shù)
4、tidb登錄測試
mysql -u root -h 172.17.1.141 -P 4000
初始時 tidb的mysql數(shù)據(jù)庫root用戶密碼為空
5、瀏覽器中訪問監(jiān)控臺
http://127.0.0.1:3000? ? ? ? 登錄用戶密碼 admin/admin
TiDB 作為一個分布式數(shù)據(jù)庫,在多個節(jié)點分別配置安裝服務(wù)會相當(dāng)繁瑣,為了簡化操作以及方便管理,我們選用自動化工具 Ansible 來批量的安裝配置以及部署 TiDB。下面我們來介紹如何使用 Ansible 來部署 TiDB。
作者:PingCAP??申礫|2017-06-09 14:22
鏈接:http://www.itdecent.cn/p/239e2cf3a94f
來源:簡書
本次部署為一臺虛擬機部署,不包含其他機器,在一臺機器上進行PD? ?KV? DB部署
一、背景知識
TiDB 作為一個分布式數(shù)據(jù)庫,在多個節(jié)點分別配置安裝服務(wù)會相當(dāng)繁瑣,為了簡化操作以及方便管理,使用自動化工具來批量部署成為了一個很好的選擇。
Ansible 是基于 Python 研發(fā)的自動化運維工具,糅合了眾多老牌運維工具的優(yōu)點實現(xiàn)了批量操作系統(tǒng)配置、批量程序的部署、批量運行命令等功能,而且使用簡單,僅需在管理工作站上安裝 Ansible 程序配置被管控主機的 IP 信息,被管控的主機無客戶端?;谝陨显?,我們選用自動化工具 Ansible 來批量的安裝配置以及部署 TiDB。
下面我們來介紹如何使用 Ansible 來部署 TiDB。
二、TiDB 安裝環(huán)境配置如下
操作系統(tǒng)使用 CentOS7.2 或者更高版本,文件系統(tǒng)使用 EXT4。
說明:低版本的操作系統(tǒng)(例如 CentOS6.6 )和 XFS 文件系統(tǒng)會有一些內(nèi)核 Bug,會影響性能,我們不推薦使用。

我們選擇使用 3 個 PD、2 個 TiDB、3 個 TiKV,這里簡單說一下為什么這樣部署。
對于 PD 。PD 本身是一個分布式系統(tǒng),由多個節(jié)點構(gòu)成一個整體,并且同時有且只有一個主節(jié)點對外提供服務(wù)。各個節(jié)點之間通過選舉算法來確定主節(jié)點,選舉算法要求節(jié)點個數(shù)是奇數(shù)個 (2n+1) ,1 個節(jié)點的風(fēng)險比較高,所以我們選擇使用 3 個節(jié)點。
對于 TiKV 。TiDB 底層使用分布式存儲,我們推薦使用奇數(shù) (2n+1) 個備份,掛掉 n 個備份之后數(shù)據(jù)仍然可用。使用 1 備份或者 2 備份的話,有一個節(jié)點掛掉就會造成一部分?jǐn)?shù)據(jù)不可用,所以我們選擇使用 3 個節(jié)點、設(shè)置 3 個備份 (默認(rèn)值)。
對于TiDB 。我們的 TiDB 是無狀態(tài)的,現(xiàn)有集群的 TiDB 服務(wù)壓力大的話,可以在其他節(jié)點直接增加 TiDB 服務(wù),無需多余的配置。我們選擇使用兩個 TiDB,可以做 HA 和負(fù)載均衡。
當(dāng)然如果只是測試集群的話,完全可以使用一個 PD 、一個 TiDB 、三個 TiKV (少于三個的話需要修改備份數(shù)量)
三、在下載安裝TIDB之前,中控機上部署的軟件
1.部署中控機一臺:
Python 2.6 或 Python 2.7,安裝有 Ansible 2.3 版本或以上版本。
依賴 Python Jinja2 及 MarkupSafe 指定版本模塊: pip install Jinja2==2.7.2 MarkupSafe==0.11
可通過 ssh 登錄目標(biāo)機器,支持密碼登錄或 ssh authorized_key 登錄。
中控機可以是部署目標(biāo)機器中的某一臺,該機器需開放外網(wǎng)訪問,并且安裝 curl 軟件包,用于下載 binary。
2、安裝ansible
2.1 安裝python2.7
一般系統(tǒng)都會自帶,沒有安裝的可以自行下載安裝
下載setuptools
wge thttps://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.zip
解壓安裝
unzip setuptools-7.0.zip
cd setuptools-7.0/
python setup.pyinstall
2.2 下載pip
解壓安裝
tar zxf pip-9.0.1.tar.gz
cd pip-9.0.1/
python setup.pyinstall
cryptography?版本要大于1.5? 目前是2.1.4
2.3 下載ansible
yum install ansible -y
三、下載 TiDB 安裝包并解壓
#創(chuàng)建目錄用來存放 ansible 安裝包
mkdir /root/workspace? ? ? ? ? ? ? ?
#切換目錄
cd /root/workspace? ? ? ? ? ? ? ? ? ?
#下載安裝包
wget https://github.com/pingcap/tidb-ansible/archive/master.zip? ?
#解壓壓縮包到當(dāng)前目錄下
unzip master.zip? ? ? ? ? ? ? ? ? ? ?
#查看安裝包結(jié)構(gòu),主要內(nèi)容說明如下
cd tidb-ansible-master && ls?
四、部分內(nèi)容含義

五、修改配置文件
主要配置集群節(jié)點的分布情況,以及安裝路徑。
會在 tidb_servers 組中的機器上安裝 TiDB 服務(wù)(其他類似),默認(rèn)會將所有服務(wù)安裝到變量 deploy_dir 路徑下。
#將要安裝?TiDB?服務(wù)的節(jié)點
[tidb_servers]
192.168.1.102
192.168.1.103
#將要安裝?TiKV?服務(wù)的節(jié)點
[tikv_servers]
192.168.1.104
192.168.1.105
192.168.1.106
#將要安裝?PD?服務(wù)的節(jié)點
[pd_servers]
192.168.1.101
192.168.1.102
192.168.1.103
#將要安裝?Promethues?服務(wù)的節(jié)點
#?Monitoring?Part
[monitoring_servers]
192.168.1.101
#將要安裝?Grafana?服務(wù)的節(jié)點
[grafana_servers]
192.168.1.101
#將要安裝?Node_exporter?服務(wù)的節(jié)點
[monitored_servers:children]
tidb_servers
tikv_servers
pd_servers
[all:vars]
#服務(wù)安裝路徑,每個節(jié)點均相同,根據(jù)實際情況配置
deploy_dir=?/home/tidb/deploy
##?Connection
#方式一:使用?root?用戶安裝
#?ssh?via?root:
#ansible_user=root
#ansible_become=true
#ansible_become_user=tidb
#方式二:使用普通用戶安裝(需要有?sudo?權(quán)限)
#?ssh?via?normal?user
ansible_user=tidb
#集群的名稱,自定義即可
cluster_name=test-cluster
#?misc
enable_elk=False
enable_firewalld=False
enable_ntpd=False
#?binlog?trigger
#是否開啟?pump,pump?生成?TiDB?的?binlog
#如果有從此?TiDB?集群同步數(shù)據(jù)的需求,可以改為?True?開啟
enable_binlog=False
安裝過程可以分為 root 用戶安裝和普通用戶安裝兩種方式。有 root 用戶當(dāng)然是最好的,修改系統(tǒng)參數(shù)、創(chuàng)建目錄等不會涉及到權(quán)限不夠的問題,能夠直接安裝完成。 但是有些環(huán)境不會直接給 root 權(quán)限,這種場景就需要通過普通用戶來安裝。為了配置簡便,我們建議所有節(jié)點都使用相同的普通用戶;為了滿足權(quán)限要求,我們還需要給這個普通用戶 sudo 權(quán)限。 下面介紹兩種安裝方式的詳細(xì)過程,安裝完成之后需要手動啟動服務(wù)。
sudo權(quán)限問題
在root用戶下#? visudo? ?
插入? tidb? ? ALL=(ALL)? ? ALL? ?一行
然后保存退出? wq!
然后給用戶賦權(quán)? ?
[root@localhost ~]# chmod 755 /usr/libexec/sudoers.so
[root@localhost ~]# ll /usr/libexec
1. 使用 root 用戶安裝
(1) 下載 Binary 包到 downloads 目錄下,并解壓拷貝到 resources/bin 下,之后的安裝過程就是使用的 resources/bin 下的二進制程序
ansible-playbook?-i?inventory.ini?local_prepare.yml
(2) 初始化集群各個節(jié)點。會檢查 inventory.ini 配置文件、Python 版本、網(wǎng)絡(luò)狀態(tài)、操作系統(tǒng)版本等,并修改一些內(nèi)核參數(shù),創(chuàng)建相應(yīng)的目錄。
修改配置文件如下
##?Connection
#?ssh?via?root:
ansible_user=root
#ansible_become=true
ansible_become_user=tidb
#?ssh?via?normal?user
#ansible_user=tidb
執(zhí)行初始化命令
ansible-playbook?-i?inventory.ini?bootstrap.yml?-k???#ansible-playboo命令說明請見附錄
(3) 安裝服務(wù)。該步驟會在服務(wù)器上安裝相應(yīng)的服務(wù),并自動設(shè)置好配置文件和所需腳本。
修改配置文件如下
##?Connection
#?ssh?via?root:
ansible_user=root
ansible_become=true
ansible_become_user=tidb
#?ssh?via?normal?user
#ansible_user=tidb
執(zhí)行安裝命令
ansible-playbook?-i?inventory.ini?deploy.yml?-k
2. 使用普通用戶安裝
(1) 下載 Binary 包到中控機
ansible-playbook?-i?inventory.ini?local_prepare.yml
(2) 初始化集群各個節(jié)點。
修改配置文件如下
##?Connection
#?ssh?via?root:
#ansible_user=root
#ansible_become=true
#ansible_become_user=tidb
#?ssh?via?normal?user
ansible_user=tidb
執(zhí)行初始化命令
ansible-playbook?-i?inventory.ini?bootstrap.yml?-k?-K
(3) 安裝服務(wù)
ansible-playbook?-i?inventory.ini?deploy.yml?-k?-K
六、啟停服務(wù)
(1) 啟動所有服務(wù)
ansible-playbook?-i?inventory.ini?start.yml?-k
(2) 停止所有服務(wù)
ansible-playbook?-i?inventory.ini?stop.yml
(3) 附錄
ansible-playbook?-i?inventory.ini?xxx.yml?-k?-K
-k 執(zhí)行之后需要輸入 ssh 連接用戶的密碼,如果做了中控機到所有節(jié)點的互信,則不需要此參數(shù)
-K 執(zhí)行之后需要輸入 sudo 所需的密碼,如果使用 root 用戶或者 sudo 無需密碼,則不需要此參數(shù)
【本文是51CTO專欄作者“PingCAP”的原創(chuàng)文章,轉(zhuǎn)載請聯(lián)系作者本人獲取授權(quán)】
【編輯推薦】
初創(chuàng)公司如何實現(xiàn)Ansible多機房自動部署發(fā)布
黃東旭DTCC2017演講實錄:When TiDB Meets Kubernetes
三篇文章了解 TiDB 技術(shù)內(nèi)幕——說存儲
三篇文章了解 TiDB 技術(shù)內(nèi)幕——說計算
三篇文章了解 TiDB 技術(shù)內(nèi)幕 —— 談?wù){(diào)度
【責(zé)任編輯:IT瘋TEL:(010)68476606】