TIDB集群部署文档
TIDB集群部署文档
安装部署
准备机器
172.17.0.7 tidb01 centos7.4 运维 8C16G100G 中控机,目标部署机(内存不少于16G)
172.17.0.8 pd01 centos7.4 运维 4C8G100G 目标部署机
172.17.0.9 tikv01 centos7.4 运维 8C32G100G 目标部署机
172.17.0.10 tikv02 centos7.4 运维 8C32G100G 目标部署机
172.17.0.11 tikv03 centos7.4 运维 8C32G100G 目标部署机
端口说明
注意提前在青云把下面端口开放:
TiDB 4000 应用及 DBA 工具访问通信端口
TiDB 10080 TiDB 状态信息上报通信端口
TiKV 20160 TiKV 通信端口
PD 2379 提供 TiDB 和 PD 通信端口
PD 2380 PD 集群节点间通信端口
Pump 8250 Pump 通信端口
Drainer 8249 Drainer 通信端口
Prometheus 9090 Prometheus 服务通信端口
Pushgateway 9091 TiDB,TiKV,PD 监控聚合和上报端口
Node_exporter 9100 TiDB 集群每个节点的系统信息上报通信端口
Blackbox_exporter 9115 Blackbox_exporter 通信端口,用于 TiDB 集群端口监控
Grafana 3000 Web 监控服务对外服务和客户端(浏览器)访问端口
Grafana 8686 grafana_collector 通信端口,用于将 Dashboard 导出为 PDF 格式
Kafka_exporter 9308 Kafka_exporter 通信端口,用于监控 binlog kafka 集群
软件版本
tidb-ansible: v3.0.2
1.在中控机上安装系统依赖包
以 root 用户登录中控机
#!/bin/bash
#coding:utf-8
#
## 在中控机安装依赖包
yum -y install epel-release git curl sshpass
yum -y install python2-pip
## 在中控机上创建 tidb 用户,并生成 ssh key
useradd -m -d /home/tidb tidb
echo "tidb321" | passwd --stdin tidb
cp -a /etc/sudoers{,.bak}
echo "tidb ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
su - tidb
2.生成密钥对
创建 tidb 用户 ssh key, 提示 Enter passphrase 时直接回车即可。执行成功后,ssh 私钥文件为 /home/tidb/.ssh/id_rsa, ssh 公钥文件为 /home/tidb/.ssh/id_rsa.pub
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tidb/.ssh/id_rsa):
Created directory '/home/tidb/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tidb/.ssh/id_rsa.
Your public key has been saved in /home/tidb/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:eIBykszR1KyECA/h0d7PRKz4fhAeli7IrVphhte7/So tidb@172.16.10.49
The key's randomart image is:
+---[RSA 2048]----+
|=+o+.o. |
|o=o+o.oo |
| .O.=.= |
| . B.B + |
|o B * B S |
| * + * + |
| o + . |
| o E+ . |
|o ..+o. |
+----[SHA256]-----+
3.在中控机器上下载 TiDB-Ansible
以 tidb 用户登录中控机并进入 /home/tidb 目录。使用以下命令从 TiDB-Ansible 项目上下载 master 分支的 TiDB-Ansible,默认的文件夹名称为 tidb-ansible
# su - tidb
$ tag=v3.0.2
$ git clone -b $tag https://github.com/pingcap/tidb-ansible.git
4.在中控机器上安装 Ansible 及其依赖
以 tidb 用户登录中控机,请务必按以下方式通过 pip 安装 Ansible 及其相关依赖的指定版本,否则会有兼容问题。安装完成后,可通过 ansible --version 查看 Ansible 版本。目前 release-2.0、release-2.1 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 tidb-ansible/requirements.txt 文件中。
$ cd /home/tidb/tidb-ansible
$ sudo pip install -r ./requirements.txt -i https://mirrors.aliyun.com/pypi/simple
5.在中控机上配置部署机器 ssh 互信及 sudo 规则
以 tidb 用户登录中控机,将你的部署目标机器 IP 添加到 hosts.ini 文件 [servers] 区块下
[tidb@172-17-0-7 tidb-ansible]$ cat hosts.ini
[servers]
172.17.0.7 ansible_port=52222
172.17.0.8 ansible_port=52222
172.17.0.9 ansible_port=52222
172.17.0.10 ansible_port=52222
172.17.0.11 ansible_port=52222
[all:vars]
username = tidb
ntp_server = pool.ntp.org
执行以下命令,按提示输入部署目标机器 root 用户密码。该步骤将在部署目标机器上创建 tidb 用户,并配置 sudo 规则,配置中控机与部署目标机器之间的 ssh 互信。
$ ansible-playbook -i hosts.ini create_users.yml -u root -k
以 tidb 用户登录到中控机,ssh 登录目标机器 IP,不需要输入密码并登录成功,表示 ssh 互信配置成功。
[tidb@172.17.0.7 ~]$ ssh 172.17.0.7
以 tidb 用户登录到部署目标机器后,执行以下命令,不需要输入密码并切换到 root 用户,表示 tidb 用户 sudo 免密码配置成功。
[tidb@172.17.0.7 ~]$ sudo -su root
[root@172.17.0.7 tidb]#
6.分配机器资源,编辑 inventory.ini 文件
以 tidb 用户登录中控机,inventory.ini 文件路径为 /home/tidb/tidb-ansible/inventory.ini。
## TiDB Cluster Part
[tidb_servers]
172.17.0.7
[tikv_servers]
172.17.0.9
172.17.0.10
172.17.0.11
[pd_servers]
172.17.0.8
[spark_master]
[spark_slaves]
[lightning_server]
[importer_server]
## Monitoring Part
# prometheus and pushgateway servers
[monitoring_servers]
172.17.0.7
[grafana_servers]
172.17.0.7
# node_exporter and blackbox_exporter servers
[monitored_servers]
172.17.0.7
172.17.0.8
172.17.0.9
172.17.0.10
172.17.0.11
[alertmanager_servers]
172.17.0.7
[kafka_exporter_servers]
## Binlog Part
[pump_servers]
[drainer_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
ansible_port=52222
cluster_name = test-cluster
tidb_version = v3.0.2
# process supervision, [systemd, supervise]
process_supervision = systemd
timezone = Asia/Shanghai
enable_firewalld = False
# check NTP service
enable_ntpd = True
set_hostname = False
## binlog trigger
enable_binlog = False
# kafka cluster address for monitoring, example:
# kafka_addrs = "192.168.0.11:9092,192.168.0.12:9092,192.168.0.13:9092"
kafka_addrs = ""
# zookeeper address of kafka cluster for monitoring, example:
# zookeeper_addrs = "192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181"
zookeeper_addrs = ""
# enable TLS authentication in the TiDB cluster
enable_tls = False
# KV mode
deploy_without_tidb = False
# wait for region replication complete before start tidb-server.
wait_replication = True
# Optional: Set if you already have a alertmanager server.
# Format: alertmanager_host:alertmanager_port
alertmanager_target = ""
grafana_admin_user = "admin"
grafana_admin_password = "admin"
### Collect diagnosis
collect_log_recent_hours = 2
enable_bandwidth_limit = True
# default: 10Mb/s, unit: Kbit/s
collect_bandwidth_limit = 10000
7.部署任务
1.确认 tidb-ansible/inventory.ini 文件中 ansible_user = tidb,本例使用 tidb 用户作为服务运行用户,配置如下:
## Connection
# ssh via normal user
ansible_user = tidb
执行以下命令如果所有 server 返回 tidb 表示 ssh 互信配置成功。
ansible -i inventory.ini all -m shell -a 'whoami'
执行以下命令如果所有 server 返回 root 表示 tidb 用户 sudo 免密码配置成功。
ansible -i inventory.ini all -m shell -a 'whoami' -b
2.执行 local_prepare.yml playbook,联网下载 TiDB binary 到中控机:
ansible-playbook local_prepare.yml
3.初始化系统环境,修改内核参数
ansible-playbook bootstrap.yml
磁盘压测通不过,需要把该yml文件下面注释
vim bootstrap.yml
# - { role: machine_benchmark, when: not dev_mode|default(false) }
4.部署 TiDB 集群软件
ansible-playbook deploy.yml
如果检测通不过,可以暂时注释相应yml文件,不影响集群部署和启动。
5.启动 TiDB 集群
ansible-playbook start.yml
8.测试集群
找一台安装了mysql工具的节点,执行:
[root@172-17-0-3 ~]# mysql -u root -h 172.17.0.7 -P 4000
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25-TiDB-v3.0.2 MySQL Community Server (Apache License 2.0)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| INFORMATION_SCHEMA |
| PERFORMANCE_SCHEMA |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
说明启动成功,运行正常!
grafana地址:
http://172.17.0.7:3000 默认帐号密码是:admin/admin
至此,tidb集群部署完成!