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.先从虚拟机创建开始:

新建虚拟机
Tidb 离线Ansible方式部署实践-LMLPHP

下一步下一步到选择存储虚拟磁盘的位置 可以默认创建一个专用的存储目录 这里存在 F:\ROS

下 Tidb 离线Ansible方式部署实践-LMLPHP

选择下载好的 CentOS7 ISO 文件

Tidb 离线Ansible方式部署实践-LMLPHP

安装过程记得添加用户 tidb 密码 tidb 同时服用管理员权限

时区选择:上海 这个在NTP 时间同步时会遇到

Tidb 离线Ansible方式部署实践-LMLPHP

Tidb 离线Ansible方式部署实践-LMLPHP

root  root 密码设置

Tidb 离线Ansible方式部署实践-LMLPHP

新建tidb 用户 密码 tidb 静待安装完成

我们用第一个 hostonly 网络

Tidb 离线Ansible方式部署实践-LMLPHP

Tidb 离线Ansible方式部署实践-LMLPHP

修改网络配置 固定第一台中控机 IP地址为 192.168.56.100

这个百度上有我就不在一步一步操作了

基本配置完成后测试下网络是否可以用 远程工具远程

Tidb 离线Ansible方式部署实践-LMLPHP

下一步就是通过 virtualbox 的磁盘复制方式来复制虚拟机

点开Tidb 离线Ansible方式部署实践-LMLPHP

虚拟介质管理

Tidb 离线Ansible方式部署实践-LMLPHP

选择刚创建的虚拟机 
Tidb 离线Ansible方式部署实践-LMLPHP

复制 选择存储目录 重命名即可 至少需要复制出5台

类似如此
Tidb 离线Ansible方式部署实践-LMLPHP

新建虚拟机

Tidb 离线Ansible方式部署实践-LMLPHP

下一步下一步到选择虚拟磁盘是选择刚刚复制的vdi 文件

Tidb 离线Ansible方式部署实践-LMLPHP

其他虚拟机类同

进去每个虚拟器设置为不同的IP地址,并测试网络是否互通

如果不通需要关闭防火墙

systemctl stop firewalld

CentOS 7 系统 Ansible 离线安装方式:

参考官方文档 下载 Ansible

http://download.pingcap.org/ansible-2.4-rpms.el7.tar.gz

通过FTP软件 上传 ansible 压缩包

Tidb 离线Ansible方式部署实践-LMLPHP

放在 rpm 这个文件夹下

Tidb 离线Ansible方式部署实践-LMLPHP

参考官方文档

# 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-.el7.noarch.rpm

解压安装

输入命令提示版本信息

Tidb 离线Ansible方式部署实践-LMLPHP

下载 tidb-ansible

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

官方说明

Tidb 离线Ansible方式部署实践-LMLPHP

以上方法联网下载,但我们内网linux 因为代理无法下载 所以需要手动下载文件

使用 VSCode 打开 下载的 tidb-ansible 解压包

Tidb 离线Ansible方式部署实践-LMLPHP

我一开始不知道有这个文件,是通过命令提示错误信息自己搜索在网上下载的,但因为最后一个 tiSpark 的 jar 包文件实在是没搜到在哪下载,才想到

到这个配置中搜索 tispark -*.jar 包,才找到这个文件的

我贴出来吧:

---

third_party_packages:
- name: prometheus
version: 2.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.
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.
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.
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.
url: "https://github.com/prometheus/pushgateway/releases/download/v0.4.0/pushgateway-0.4.0.linux-amd64.tar.gz"
- name: grafana
version: 4.6.
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.
url: "http://download.pingcap.org/prometheus-2.0.0.linux-amd64.tar.gz"
- name: alertmanager
version: 0.9.
url: "http://download.pingcap.org/alertmanager-0.9.1.linux-amd64.tar.gz"
- name: node_exporter
version: 0.15.
url: "http://download.pingcap.org/node_exporter-0.15.2.linux-amd64.tar.gz"
- name: pushgateway
version: 0.4.
url: "http://download.pingcap.org/pushgateway-0.4.0.linux-amd64.tar.gz"
- name: grafana
version: 4.6.
url: "http://download.pingcap.org/grafana-4.6.3.linux-x64.tar.gz"
- name: blackbox_exporter
version: 0.11.
url: "https://download.pingcap.org/blackbox_exporter-0.11.0.linux-amd64.tar.gz" tispark_packages:
- name: spark-2.1.-bin-hadoop2..tgz
version: 2.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.-beta
url: http://download.pingcap.org/tispark-sample-data.tar.gz

所有的依赖项都在这个配置模板中了

我们在 tidb-ansible 解压文件夹下新建

Tidb 离线Ansible方式部署实践-LMLPHP

将我们下载的gz 包都放进去

Tidb 离线Ansible方式部署实践-LMLPHP

新建资源文件夹:

Tidb 离线Ansible方式部署实践-LMLPHP

这个下面只有一个文件夹

Tidb 离线Ansible方式部署实践-LMLPHP

这些事其他需要的文件加压后 放在这个 文件夹下

Tidb 离线Ansible方式部署实践-LMLPHP

剩下的就是配置 ini 文件了

参考官网 地址:https://pingcap.com/docs-cn/op-guide/ansible-deployment/#%E5%88%86%E9%85%8D%E6%9C%BA%E5%99%A8%E8%B5%84%E6%BA%90%E7%BC%96%E8%BE%91-inventoryini-%E6%96%87%E4%BB%B6

我的配置是如下:

## 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

其中

Tidb 离线Ansible方式部署实践-LMLPHP

需要修改为 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 这台中控机器

Tidb 离线Ansible方式部署实践-LMLPHP

下一步通过 ansible 来安装

中间省略了 ssh 免密登录这个可以参考官网说明

部署 TiDB 集群软件

ansible-playbook deploy.yml

启动 TiDB 集群

ansible-playbook start.yml

中间遇到phthon2 识别不了 多次添加授权等方法都不行。
最后还是修改了 start.yml 文件

Tidb 离线Ansible方式部署实践-LMLPHP

原始的应该是这样 

Tidb 离线Ansible方式部署实践-LMLPHP

修改后就能成功启动了,OK

这个是监控的网页

Tidb 离线Ansible方式部署实践-LMLPHP

这个是mysql 客户测试 注意需要你本机安装mysql 客户端

Tidb 离线Ansible方式部署实践-LMLPHP

OK All Done.

05-11 01:11