因工作需要搭建TiDB集群进行测试,所以简单记录下搭建过程,详细部署过程也可以参考官方文档(链接在文末)。
现用三台测试机搭建TiDB集群, 以上非真实IP地址。
系统版本:
CentOS Linux release 7.2.1511 (Core)
架构示意图
模块实例配置:
模块组件各三个实例
release-2.0-new-binlog
该版本使用新的TiDB-Binlog集群部署方式,不再依赖kafka集群。
确保三台服务器内网互通:
# IP地址文本
$ cat IP.txt
10.0.0.29
10.0.0.189
10.0.0.190
# 三台服务器都查看是否连通
$ cat IP.txt | xargs -i ping -c 1 -q {} |grep loss
1 packets transmitted, 1 received, 0% packet loss, time 0ms
1 packets transmitted, 1 received, 0% packet loss, time 0ms
1 packets transmitted, 1 received, 0% packet loss, time 0ms
用于执行部署操作,可用任意一台节点服务器进行配置
$ yum -y install epel-release git curl sshpass`
$ yum -y install python-pip
# 创建tidb用户
$ useradd -m -d /home/tidb tidb
# 设置密码
$ passwd tidb
# 配置该用户sudo免密规则
$ vim /etc/sudoers
tidb ALL=(ALL) NOPASSWD: ALL
# 切换到tidb用户下,生成ssh key(id_rsa, id_rsa.pub), 直接回车。
$ su - tidb
$ ssh-keygen -t rsa
$ ls ~/.ssh/
authorized_keys id_rsa id_rsa.pub known_hosts
# 下载版本 release-2.0-new-binlog
# 为方便日后配置管理及数据保存,将部署文件夹拷贝至/data下(root操作)
$ cd /data
$ git clone -b release-2.0-new-binlog https://github.com/pingcap/tidb-ansible.git
# 修改文件夹属主属组
$ chown -R tidb:tidb tidb-ansible
$ su - tidb
$ cd /data/tidb-ansible
$ sudo pip install -r ./requirements.txt
# 安装完成后,查看ansible版本
$ ansible --version
ansible 2.6.16
...
release-2.0版本兼容ansible 2.4 、2.5、2.6,Ansible 及相关依赖版本记录在 tidb-ansible/requirements.txt 文件中。
$ cd /data/tidb-ansible
$ vim hosts.ini
[servers]
10.0.0.29
10.0.0.189
10.0.0.190
[all:vars]
username = tidb
...
# 执行playbook,配置节点机器ssh互信和sudo免密规则,该操作需要输入节点机器的root密码
$ ansible-playbook -i hosts.ini create_users.yml -u root -k
详见上一步,无root密码,需手动逐台节点配置。
为让CPU发挥最大性能,需将调节器设置为peformance模式
# 查看系统支持调节器的模式
$ cpupower frequency-info --governors
analyzing CPU 0:
performance powersave
# 查看当前模式
$ cpupower frequency-info --policy
analyzing CPU 0:
1200000 3200000 performance
# 若需要修改则使用以下两种方式
# 命令配置
$ cpupower frequency-set --governor performance
# ansible
$ ansible -i hosts.ini all -m shell -a "cpupower frequency-set --governor performance" -u tidb -b
由于是测试集群,这块配置先忽略
# 配置集群
$ vim /data/tidb-ansible/inventory.ini
[tidb_servers]
10.0.0.29
10.0.0.189
10.0.0.190
[tikv_servers]
10.0.0.29
10.0.0.189
10.0.0.190
[pd_servers]
10.0.0.29
10.0.0.189
10.0.0.190
[monitoring_servers]
10.0.0.29
[grafana_servers]
10.0.0.29
# node_exporter and blackbox_exporter servers
[monitored_servers]
10.0.0.29
10.0.0.189
10.0.0.190
## Binlog Part
[pump_servers]
10.0.0.29
10.0.0.189
10.0.0.190
## Global variables(修改数据存储目录)
[all:vars]
deploy_dir = /data/tidb/deploy
## Connection
# 修改集群名称
cluster_name = tidb-test
## binlog trigger(开启binlog)
enable_binlog = True
# store slow query log into seperate file
enable_slow_query_log = True
...
以上为配置修改,其余保持默认即可
tidb集群部署需要SSD硬件支持,默认会检测设备,但检测要求过高,测试集群可以先忽略。
$ vim /data/tidb-ansible/bootstrap.yml
# 注释掉下面这部分
#- name: tikv_servers machine benchmark
# hosts: tikv_servers
# gather_facts: false
# roles:
# - { role: machine_benchmark, when: not dev_mode|default(false) }
# 测试节点间ssh互信, 返回tidb即成功。
$ ansible -i inventory.ini all -m shell -a 'whoami'
# 测试节点间sudo免密
$ ansible -i inventory.ini all -m shell -a 'whoami' -b
# 下载TiDB binary到中控机
$ ansible-playbook local_prepare.yml
# 系统环境初始化,修改内核参数
$ ansible-playbook bootstrap.yml
# 部署TiDB集群软件
$ ansible-playbook deploy.yml
# 启动集群
$ ansible-playbook start.yml
通过mysql client连接TiDB集群测试
$ mysql -u root -h 10.0.0.29 -P 4000
测试成功
TiDB集群的官方部署文档,对用户来说相当友好,一些部署或使用中的常见问题也有收录,有需要的朋友们可以阅读官方文档。