使用 Ansible 安裝部署 TiDB

2021-08-02 08:59:24 字數 4779 閱讀 6504

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環境,被控端無須做任何操作,...