tidb 作為乙個分布式資料庫,在多個節點分別配置安裝服務會相當繁瑣,為了簡化操作以及方便管理,使用自動化工具來批量部署成為了乙個很好的選擇。
ansible 是基於 python 研發的自動化運維工具,糅合了眾多老牌運維工具的優點實現了批量作業系統配置、批量程式的部署、批量執行命令等功能,而且使用簡單,僅需在管理工作站上安裝 ansible 程式配置被管控主機的 ip 資訊,被管控的主機無客戶端。基於以上原因,我們選用自動化工具 ansible 來批量的安裝配置以及部署 tidb。
下面我們來介紹如何使用 ansible 來部署 tidb。
作業系統使用 centos7.2 或者更高版本,檔案系統使用 ext4。 ip
services
192.168.1.101
pd prometheus grafana pushgateway node_exporter
192.168.1.102
pd tidb node_exporter
192.168.1.103
pd tidb node_exporter
192.168.1.104
tikv node_exporter
192.168.1.105
tikv node_exporter
192.168.1.106
tikv node_exporter
我們選擇使用 3 個 pd、2 個 tidb、1 個 tikv,這裡簡單說一下為什麼這樣部署。
#建立目錄用來存放 ansible 安裝包
mkdir /root/workspace
#切換目錄
cd /root/workspace
wget
#解壓壓縮包到當前目錄下
unzip master.zip
#檢視安裝包結構,主要內容說明如下
cd tidb-ansible-master && ls
部分內容含義
ansible.cfg: ansible 配置檔案
inventoty.ini: 組和主機的相關配置
conf: tidb 相關配置模版
group_vars: 相關變數配置
scripts: grafana 監控 json 模版
bootstrap.yml: 初始化集群各個節點
deploy.yml: 在各個節點安裝 tidb 相應服務
roles: ansible tasks 的集合
start.yml: 啟動所有服務
stop.yml: 停止所有服務
unsafe_cleanup_data.yml: 清除資料
unsafe_cleanup.yml: 銷毀集群
主要配置集群節點的分布情況,以及安裝路徑。
會在 tidb_servers 組中的機器上安裝 tidb 服務(其他類似),缺省會將所有服務安裝到變數 deploy_dir 路徑下。
#將要安裝 tidb 服務的節點
[tidb_servers]
192.168
.1.102
192.168
.1.103
#將要安裝 tikv 服務的節點
[tikv_servers]
192.168
.1.104
192.168
.1.105
192.168
.1.106
#將要安裝 pd 服務的節點
[pd_servers]
192.168
.1.101
192.168
.1.102
192.168
.1.103
#將要安裝 promethues 服務的節點
# monitoring part
[monitoring_servers]
192.168
.1.101
#將要安裝 grafana 服務的節點
[grafana_servers]
192.168
.1.101
#將要安裝 node_exporter 服務的節點
[monitored_servers:children]
tidb_servers
tikv_servers
pd_servers
[all:vars]
#服務安裝路徑,每個節點均相同,根據實際情況配置
deploy_dir = /home/tidb/deploy
## connection
#方式一:使用 root 使用者安裝
# ssh via root:
# ansible_user = root
# ansible_become = true
# ansible_become_user = tidb
#方式二:使用普通使用者安裝(需要有 sudo 許可權)
# 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 集群同步資料的需求,可以改為 true 開啟
enable_binlog = false
安裝過程可以分為 root 使用者安裝和普通使用者安裝兩種方式。有 root 使用者當然是最好的,修改系統引數、建立目錄等不會涉及到許可權不夠的問題,能夠直接安裝完成。
但是有些環境不會直接給 root 許可權,這種場景就需要通過普通使用者來安裝。為了配置簡便,我們建議所有節點都使用相同的普通使用者;為了滿足許可權要求,我們還需要給這個普通使用者 sudo 許可權。
下面介紹兩種安裝方式的詳細過程,安裝完成之後需要手動啟動服務。
1. 使用 root 使用者安裝
ansible-playbook -i inventory.ini local_prepare.yml
## connection
# ssh via root:
ansible_user = root
# ansible_become = true
ansible_become_user = tidb
# ssh via normal user
# ansible_user = tidb
ansible-playbook
-i inventory.ini bootstrap.yml -k
#ansible
-playboo命令說明請見附錄
安裝服務。該步驟會在伺服器上安裝相應的服務,並自動設定好配置檔案和所需指令碼。
## connection
# ssh via root:
ansible_user = root
ansible_become = true
ansible_become_user = tidb
# ssh via normal user
# ansible_user = tidb
ansible-playbook
-i inventory.ini deploy.yml -k
2. 使用普通使用者安裝
ansible-playbook -i inventory.ini local_prepare.yml
## connection
# ssh via root:
# ansible_user = root
# ansible_become = true
# ansible_become_user = tidb
# ssh via normal user
ansible_user = tidb
ansible-playbook
-i inventory.ini bootstrap.yml -k
-k
安裝服務
ansible-playbook
-i inventory.ini deploy.yml -k
-k
ansible-playbook
-i inventory.ini start.yml -k
ansible-playbook -i inventory.ini stop.yml
附錄
ansible-playbook -i inventory.ini ***.yml -k -k-k 執行之後需要輸入 ssh 連線使用者的密碼,如果做了中控機到所有節點的互信,則不需要此引數
-k 執行之後需要輸入 sudo 所需的密碼,如果使用 root 使用者或者 sudo 無需密碼,則不需要此引數
ansible安裝部署
一 ansible介紹 1 簡介 ansible是新出現的自動化運維工具,基於python開發,集合了眾多運維工具 puppet cfengine chef func fabric 的優點,實現了批量系統配置 批量程式部署 批量執行命令等功能。ansible是基於模組工作的,本身沒有批量部署的能力。...
ansible的安裝及部署
部署ansible 後記ansible是一款開源自動化平台,是乙個配置管理工具,自動化運維工具 ansible命令相當於linux命令 ansible是基於模組開發的,常用的20 30個 yaml語法是自帶語法 playbook 劇本 相當於指令碼 ansible roles 角色 一大堆指令碼 1...
第1天 Ansible安裝部署
ansible是乙個簡單的自動化引擎,可完成配置管理 應用部署 服務編排以及各種it需求。它是一款使用python語言開發實現的開源軟體,其依賴jinjia2 paramiko和pyyaml這幾個python庫。ansible安裝部署簡單,只需要再主控端部署ansible環境,被控端無須做任何操作,...