对于生产环境,须使用 TiDB-Ansible 部署 TiDB 集群。Ansible 是一款自动化运维工具,TiDB-Ansible 是 PingCAP 基于 Ansible playbook 功能编写的集群部署工具。本文档介绍如何使用 TiDB-Ansible 部署一个完整的 TiDB 集群。
一、搭建集群前提准备
- 生产环境中搭建会有硬件检验,最适合的硬件是SSD(固盘)
- 时间同步
- 需要严格按照官网上安装,目录的更改涉及到权限的问题
- 服务器之间内网要通
- 服务器之间需要配置免密登陆
部署中控机一台:
- 中控机可以是部署目标机器中的某一台。
- 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统(默认包含 Python 2.7)。
- 该机器需开放外网访问,用于下载 TiDB 及相关软件安装包。
二、安装步骤
如果你的部署目标机器时间、时区设置一致,已开启 NTP 服务且在正常同步时间,此步骤可忽略。可参考如何检测 NTP 服务是否正常。
1、NTP 服务检测:
# 查看ntp时间状态(是否运行)
sudo systemctl status ntpd.service
● ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-04-01 15:00:39 CST; 29min ago
Main PID: 3206 (ntpd)
CGroup: /system.slice/ntpd.service
└─3206 /usr/sbin/ntpd -u ntp:ntp -g
# 开启服务
sudo systemctl start ntpd.service
# 开机自启动
sudo systemctl enable ntpd.service
2、执行 ntpstat 命令,输出 synchronised to NTP server (正在与 NTP server 同步)表示在正常同步:
ntpstat
synchronised to NTP server (202.108.6.95) at stratum 3
time correct to within 74 ms
polling server every 128 s
3、以下ntp未正常同步
ntpstat
unsynchronised
4、以下情况为 NTP 服务未正常运行
ntpstat
Unable to talk to NTP daemon. Is it running?
5、安装NTP 服务
sudo yum install ntp ntpdate
sudo systemctl start ntpd.service
sudo systemctl enable ntpd.service
三、手工配置 ssh 互信及 sudo 免密码
1、创建用户
以 root 用户依次登录到部署目标机器创建 tidb 用户并设置登录密码。
useradd tidb #添加用户
passwd tidb #修改密码
2、配置 sudo 免密
vi sudo #编辑sudo文件
tidb ALL=(ALL) NOPASSWD: ALL