tidb ansible setup

os: centos 7.4
db: tidb

TiDB 是 PingCAP 公司的 newsql 数据库产品.是 Google Spanner/F1 的具体实现.架构非常好.
TiDB 集群的三个组件(tidb-server、tikv-server、pd-server),具体可以参考公司的文档页面: https://pingcap.com/docs-cn/overview/

生产环境的部署要严格遵守 TiDB 的部署文档。

本文介绍的是 TiDB 基于 ansible 的部署(本地虚拟机再次验证).

ip 规划,6台机器

192.168.56.98   nodepdtidb1
192.168.56.99	nodepdtidb2
192.168.56.100  nodepdtidb3

192.168.56.101	nodetikv1
192.168.56.102	nodetikv2
192.168.56.102	nodetikv3

nodepdtidb1 节点部署 pd tidb 实例
nodepdtidb2 节点部署 pd tidb 实例
nodepdtidb3 节点部署 pd tidb 实例
nodetikv1 节点部署部署一个 tikv 实例
nodetikv2 节点部署部署一个 tikv 实例
nodetikv3 节点部署部署一个 tikv 实例

nodepdtidb1 节点充当 中控机,开通外网访问权限

中控机 os 设置

root 用户登录中控机,安装依赖包

# yum install -y epel-release git curl sshpass python2-pip \
python python-devel fontconfig open-sans-fonts \
ntp ntpdate 

# systemctl start ntpd.service;
systemctl enable ntpd.service

root 用户登录中控机,执行以下命令

# groupadd -g 10000 tidb;
useradd -m -d /home/tidb -g tidb tidb;

# passwd tidb

root 用户登录中控机,配置 tidb sudoer

# vi /etc/sudoers

tidb ALL=(ALL:ALL) NOPASSWD:ALL


# su - tidb
$ ssh-keygen -t rsa

中控机下载 TiDB Ansible

下载 tidb-ansible

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

$ cd /home/tidb/tidb-ansible;
sudo pip install -r ./requirements.txt;

$ ansible --version
ansible 2.7.11
  config file = /home/tidb/tidb-ansible/ansible.cfg
  configured module search path = [u'/home/tidb/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /bin/ansible
  python version = 2.7.5 (default, Aug  7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
  

中控机配置部署机器 ssh 互信及 sudo 规则

# su - tidb
$ cd /home/tidb/tidb-ansible;
$ vi hosts.ini

[servers]
192.168.56.98
192.168.56.99
192.168.56.100
192.168.56.101
192.168.56.102
192.168.56.102

[all:vars]
username = tidb
ntp_server = pool.ntp.org

配置部署机器 ssh 互信及 sudo 规则

$ ansible-playbook -i hosts.ini create_users.yml -u root -k


当然也可以手工在各个节点创建 ssh ,配置ssh,修改 sudo 规则。

中控机配置部署目标机器上安装 NTP 服务

# su - tidb
$ cd /home/tidb/tidb-ansible;
ansible-playbook -i hosts.ini deploy_ntp.yml -u tidb -b;


部署目标机器上配置 CPUfreq 调节器模式

所有节点都需要设置。
为了让 CPU 发挥最大性能,请将 CPUfreq 调节器模式设置为 performance 模式。
查看 CPU 支持的模式

# cpupower frequency-info --governors

如果返回如下,

analyzing CPU 0:
  available cpufreq governors: performance powersave
  

如果返回如下,则跳过这一步骤

analyzing CPU 0:
  available cpufreq governors: Not Available
  

查看当前设置

# cpupower frequency-info --policy

设置为 performance 模式

# cpupower frequency-set --governor performance

批量查看

$ cd /home/tidb/tidb-ansible;
ansible -i hosts.ini all -m shell -a "cpupower frequency-info --governors" -u tidb -b

批量修改

$ cd /home/tidb/tidb-ansible;
ansible -i hosts.ini all -m shell -a "cpupower frequency-set --governor performance" -u tidb -b

部署目标机器上添加数据盘 ext4 文件系统挂载参数

参考官方文档


分配机器资源

编辑 inventory.ini 文件

# su - tidb
$ cd /home/tidb/tidb-ansible;
$ vi inventory.ini

## TiDB Cluster Part
[tidb_servers]
192.168.56.98
192.168.56.99
192.168.56.100

[tikv_servers]
192.168.56.101
192.168.56.102
192.168.56.103

[pd_servers]
192.168.56.98
192.168.56.99
192.168.56.100

## Monitoring Part
# prometheus and pushgateway servers
[monitoring_servers]
192.168.56.99

[grafana_servers]
192.168.56.99

# node_exporter and blackbox_exporter servers
[monitored_servers]
192.168.56.98
192.168.56.99
192.168.56.100
192.168.56.101
192.168.56.102
192.168.56.103

[alertmanager_servers]
192.168.56.99

部署任务

确认配置
确认 tidb-ansible/inventory.ini 文件中 ansible_user = tidb

## Connection
# ssh via normal user
ansible_user = tidb

确认 ssh 互信设置成功

# su - tidb
$ ansible -i inventory.ini all -m shell -a 'whoami'

确认 sudo 免密设置成功

$ ansible -i inventory.ini all -m shell -a 'whoami' -b

执行 local_prepare.yml playbook,联网下载 TiDB binary 到中控机

$ ansible-playbook local_prepare.yml

初始化系统环境,修改内核参数

$ ansible-playbook bootstrap.yml

如果有校验出错的,都会报错,如下为内存设置的不够大,提示的错误

TASK [check_system_optional : Preflight check - Check TiDB server's RAM] **************************************************************************
fatal: [192.168.56.99]: FAILED! => changed=false 
  msg: This machine does not have sufficient RAM to run TiDB, at least 16000 MB.
fatal: [192.168.56.98]: FAILED! => changed=false 
  msg: This machine does not have sufficient RAM to run TiDB, at least 16000 MB.
fatal: [192.168.56.100]: FAILED! => changed=false 
  msg: This machine does not have sufficient RAM to run TiDB, at least 16000 MB.


NO MORE HOSTS LEFT ********************************************************************************************************************************
	to retry, use: --limit @/home/tidb/tidb-ansible/retry_files/bootstrap.retry

PLAY RECAP ****************************************************************************************************************************************
192.168.56.100             : ok=32   changed=9    unreachable=0    failed=1   
192.168.56.101             : ok=32   changed=9    unreachable=0    failed=0   
192.168.56.102             : ok=32   changed=9    unreachable=0    failed=0   
192.168.56.103             : ok=32   changed=9    unreachable=0    failed=0   
192.168.56.98              : ok=32   changed=9    unreachable=0    failed=1   
192.168.56.99              : ok=32   changed=9    unreachable=0    failed=1   
localhost                  : ok=7    changed=4    unreachable=0    failed=0   


ERROR MESSAGE SUMMARY *****************************************************************************************************************************
[192.168.56.99]: Ansible Failed! ==>
  changed=false 
  msg: This machine does not have sufficient RAM to run TiDB, at least 16000 MB.

[192.168.56.98]: Ansible Failed! ==>
  changed=false 
  msg: This machine does not have sufficient RAM to run TiDB, at least 16000 MB.

[192.168.56.100]: Ansible Failed! ==>
  changed=false 
  msg: This machine does not have sufficient RAM to run TiDB, at least 16000 MB.

Ask TiDB User Group for help:
It seems that you have encountered some problem. Please describe your operation steps and provide error information as much as possible on https://asktug.com (in Chinese) or https://stackoverflow.com/questions/tagged/tidb (in English). We will do our best to help solve your problem. Thanks. :-)

通过之后就可以部署
部署 TiDB 集群软件

$ ansible-playbook deploy.yml

启动 TiDB 集群

$ ansible-playbook start.yml

验证 TiDB 集群

使用 MySQL 客户端连接测试,TCP 4000 端口是 TiDB 服务默认端口。

$ mysql -u root -h 172.16.10.1 -P 4000

通过浏览器访问监控平台。

地址:http://192.168.56.99:3000 默认帐号密码是:admin/admin

参考:
https://pingcap.com/docs-cn/dev/how-to/deploy/hardware-recommendations/
https://pingcap.com/docs-cn/dev/how-to/deploy/orchestrated/ansible/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值