1.最近瀏覽到一個比較新的分布式數據庫Tidb,開源看起來比較牛的樣子,一時手癢就動手試試部署
2.參考官方 Ansible 離線方式部署 :https://pingcap.com/docs-cn/op-guide/offline-ansible-deployment/
3.環境:Win7+VirtualBox 虛擬機 ,網絡環境:Win7 可以通過代理上網,6台虛擬機統一采用 hostonly 方式,
本來如果通過 可以上網的linux 機器作為下載機器和中控機器的話不需要這么沒法,但內網代理各種限制,一致沒搞通 linux 虛擬機上網
只能通過windows 下載需要的 gz 文件。
4.先從虛擬機創建開始:
新建虛擬機
下一步下一步到選擇存儲虛擬磁盤的位置 可以默認創建一個專用的存儲目錄 這里存在 F:\ROS
下 
選擇下載好的 CentOS7 ISO 文件

安裝過程記得添加用戶 tidb 密碼 tidb 同時服用管理員權限
時區選擇:上海 這個在NTP 時間同步時會遇到


root root 密碼設置

新建tidb 用戶 密碼 tidb 靜待安裝完成
我們用第一個 hostonly 網絡


修改網絡配置 固定第一台中控機 IP地址為 192.168.56.100
這個百度上有我就不在一步一步操作了
基本配置完成后測試下網絡是否可以用 遠程工具遠程

下一步就是通過 virtualbox 的磁盤復制方式來復制虛擬機
點開
虛擬介質管理

選擇剛創建的虛擬機 
復制 選擇存儲目錄 重命名即可 至少需要復制出5台
類似如此
新建虛擬機

下一步下一步到選擇虛擬磁盤是選擇剛剛復制的vdi 文件

其他虛擬機類同
進去每個虛擬器設置為不同的IP地址,並測試網絡是否互通
如果不通需要關閉防火牆
systemctl stop firewalld
CentOS 7 系統 Ansible 離線安裝方式:
下載 Ansible 離線安裝包 ,上傳至中控機。
參考官方文檔 下載 Ansible
http://download.pingcap.org/ansible-2.4-rpms.el7.tar.gz
通過FTP軟件 上傳 ansible 壓縮包

放在 rpm 這個文件夾下

參考官方文檔
# tar -xzvf ansible-2.4-rpms.el7.tar.gz # cd ansible-2.4-rpms.el7 # rpm -ivh PyYAML*rpm libyaml*rpm python-babel*rpm python-backports*rpm python-backports-ssl_match_hostname*rpm python-cffi*rpm python-enum34*rpm python-httplib2*rpm python-idna*rpm python-ipaddress*rpm python-jinja2*rpm python-markupsafe*rpm python-paramiko*rpm python-passlib*rpm python-ply*rpm python-pycparser*rpm python-setuptools*rpm python-six*rpm python2-cryptography*rpm python2-jmespath*rpm python2-pyasn1*rpm sshpass*rpm # rpm -ivh ansible-2.4.2.0-2.el7.noarch.rpm
解壓安裝
輸入命令提示版本信息

下載 tidb-ansible
git clone https://github.com/pingcap/tidb-ansible.git
官方說明

以上方法聯網下載,但我們內網linux 因為代理無法下載 所以需要手動下載文件
使用 VSCode 打開 下載的 tidb-ansible 解壓包

我一開始不知道有這個文件,是通過命令提示錯誤信息自己搜索在網上下載的,但因為最后一個 tiSpark 的 jar 包文件實在是沒搜到在哪下載,才想到
到這個配置中搜索 tispark -*.jar 包,才找到這個文件的
我貼出來吧:
--- third_party_packages: - name: prometheus version: 2.0.0 url: "https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz" - name: alertmanager version: 0.9.1 url: "https://github.com/prometheus/alertmanager/releases/download/v0.9.1/alertmanager-0.9.1.linux-amd64.tar.gz" - name: node_exporter version: 0.15.2 url: "https://github.com/prometheus/node_exporter/releases/download/v0.15.2/node_exporter-0.15.2.linux-amd64.tar.gz" - name: blackbox_exporter version: 0.11.0 url: "https://github.com/prometheus/blackbox_exporter/releases/download/v0.11.0/blackbox_exporter-0.11.0.linux-amd64.tar.gz" - name: pushgateway version: 0.4.0 url: "https://github.com/prometheus/pushgateway/releases/download/v0.4.0/pushgateway-0.4.0.linux-amd64.tar.gz" - name: grafana version: 4.6.3 url: "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3.linux-x64.tar.gz" third_party_packages_under_gfw: - name: prometheus version: 2.0.0 url: "http://download.pingcap.org/prometheus-2.0.0.linux-amd64.tar.gz" - name: alertmanager version: 0.9.1 url: "http://download.pingcap.org/alertmanager-0.9.1.linux-amd64.tar.gz" - name: node_exporter version: 0.15.2 url: "http://download.pingcap.org/node_exporter-0.15.2.linux-amd64.tar.gz" - name: pushgateway version: 0.4.0 url: "http://download.pingcap.org/pushgateway-0.4.0.linux-amd64.tar.gz" - name: grafana version: 4.6.3 url: "http://download.pingcap.org/grafana-4.6.3.linux-x64.tar.gz" - name: blackbox_exporter version: 0.11.0 url: "https://download.pingcap.org/blackbox_exporter-0.11.0.linux-amd64.tar.gz" tispark_packages: - name: spark-2.1.1-bin-hadoop2.7.tgz version: 2.1.1 url: http://download.pingcap.org/spark-2.1.1-bin-hadoop2.7.tgz checksum: "sha256:372ac4f73221c07696793101007a4f19e31566d1f0d9bd0e5205b6fb5b45bfc2" - name: tispark-SNAPSHOT-jar-with-dependencies.jar url: http://download.pingcap.org/tispark-0.1.0-SNAPSHOT-jar-with-dependencies.jar - name: tispark-sample-data.tar.gz version: 0.1.0-beta url: http://download.pingcap.org/tispark-sample-data.tar.gz
所有的依賴項都在這個配置模板中了
我們在 tidb-ansible 解壓文件夾下新建

將我們下載的gz 包都放進去

新建資源文件夾:

這個下面只有一個文件夾

這些事其他需要的文件加壓后 放在這個 文件夾下

剩下的就是配置 ini 文件了
我的配置是如下:
## TiDB Cluster Part
[tidb_servers]
192.168.56.101
[tikv_servers]
192.168.56.103
192.168.56.104
192.168.56.105
[pd_servers]
192.168.56.102
[spark_master]
[spark_slaves]
## Monitoring Part
# prometheus and pushgateway servers
[monitoring_servers]
192.168.56.100
[grafana_servers]
192.168.56.100
# node_exporter and blackbox_exporter servers
[monitored_servers]
192.168.56.101
192.168.56.102
192.168.56.103
192.168.56.104
192.168.56.105
192.168.56.100
## Binlog Part
[pump_servers:children]
tidb_servers
## Group variables
[pd_servers:vars]
# location_labels = ["zone","rack","host"]
## Global variables
[all:vars]
deploy_dir = /home/tidb/deploy
## Connection
# ssh via normal user
ansible_user = tidb
# ssh via root:
# ansible_user = root
ansible_become = true
ansible_become_user = tidb
cluster_name = test-cluster
tidb_version = v1.0.8
# deployment methods, [binary, docker]
deployment_method = binary
# process supervision, [systemd, supervise]
process_supervision = systemd
# timezone of deployment region
timezone = Asia/Shanghai
set_timezone = True
enable_firewalld = False
# check NTP service
enable_ntpd = False
set_hostname = False
## binlog trigger
enable_binlog = False
# zookeeper address of kafka cluster, example:
# zookeeper_addrs = "192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181"
zookeeper_addrs = ""
# store slow query log into seperate file
enable_slow_query_log = False
# KV mode
deploy_without_tidb = False
其中

需要修改為 False ,這個折騰半天,因為連接不到外網的同步時間server 始終沒同步成功,但忽然想起來應該不用這個也可以的。
如果有條件的話盡量還是同步好。
hosts.ini 文件修改
[servers] 192.168.56.101 192.168.56.102 192.168.56.103 192.168.56.104 192.168.56.105 [all:vars] username = tidb ntp_server = 192.168.56.100
最后就是把整個文件夾上傳到 56.100 這台中控機器

下一步通過 ansible 來安裝
中間省略了 ssh 免密登錄這個可以參考官網說明
部署 TiDB 集群軟件
ansible-playbook deploy.yml
啟動 TiDB 集群
ansible-playbook start.yml
中間遇到phthon2 識別不了 多次添加授權等方法都不行。
最后還是修改了 start.yml 文件
原始的應該是這樣
修改后就能成功啟動了,OK
這個是監控的網頁

這個是mysql 客戶測試 注意需要你本機安裝mysql 客戶端

OK All Done.
