资讯专栏INFORMATION COLUMN

Tidb 集群部署

IT那活儿 / 1933人阅读
Tidb 集群部署
软硬件要求


TIDB官方文档建议最低使用centos7.3操作系统进行部署,磁盘SSD200G,网卡千兆以上,内存要8G。日常虚拟机可没有这么高的内存配置,所以部署按照虚拟机最低配置进行安装,创建4台TIDB虚拟机,1G内存,20G磁盘做数据盘。


部署方式


官方建议使用ansible进行在线部署,虚拟机可配置一台中控机进行外网互通,其他机器为内网互通。


我的机器环境:

IP

角色

系统

192.168.37.128

TiKV

Centos7.6

192.168.37.129

TiKV

Centos7.6

192.168.37.130

TiKV

Centos7.6

192.168.37.132

中控机

Centos7.6

注意:使用Ansible 方式部署时,TiKV及 PD节点数据目录所在磁盘请使用SSD 磁盘,否则无法通过检测


部署操作


1、中控机安装所需要的依赖包

yum -y installepel-release git curl sshpass &&

yum -y installpython2-pip


2、创建用户,生成ssh key

创建用户并修改密码:

useradd -m -d/home/tidb tidb

passwd tidb


配置tidb用户免sudo

visudo

tidb ALL=(ALL)NOPASSWD: ALL


切换到tidb用户下生成sshkey

su – tidb

ssh-keygen -t rsa


3、中控机下载ansible并安装及其依赖包

切换到tidb用户,执行以下命令(如果无git命令,使用yum安装)

git clone -b $taghttps://github.com/pingcap/tidb-ansible.git


注意:

$tag 替换为选定的TAG 版本的值,例如v3.0.2。

部署和升级TiDB 集群需使用对应的tidb-ansible 版本,通过改inventory.ini 文件中的版本来混用可能会产生一些错误。请务必按文档操作,将tidb-ansible 下载到/home/tidb 目录下,权限为tidb 用户,不要下载到/root 下,否则会遇到权限问题。


安装ansible

在安装ansible之前,先升级pip,使用pipinstall --upgrade pip进行升级如果通过以下方式安装的ansible有问题,使用pipuninstall ansible卸载,再使用yum–y install ansible安装


cd/home/tidb/tidb-ansible &&

sudo pip install -r./requirements.txt &&

ansible –version


4、配置互信及sudo


配置内网TiKV机器互信及sudo

cd/home/tidb/tidb-ansible &&


vi hosts.ini

[servers]

192.168.37.128

192.168.37.129

192.168.37.130

192.168.37.132

[all:vars]

username = tidb

ntp_server =pool.ntp.org


执行互信操作

ansible-playbook -ihosts.ini create_users.yml -u root –k


5、配置NTP

cd/home/tidb/tidb-ansible &&

ansible-playbook -ihosts.ini deploy_ntp.yml -u tidb -b


6、配置CPUfreq模式

首先查看系统是否支持CPUfreq模式,显示NotAvailable则为不支持则可跳过操作

cpupowerfrequency-info --governors

analyzing CPU 0:

available cpufreqgovernors: Not Available


如果支持该模式,则执行

cpupowerfrequency-set --governor performance


或者批量配置互信下的机器

ansible -i hosts.iniall -m shell -a "cpupower frequency-set --governor performance"-u tidb –b


7、挂载文件数据盘

Tidb的数据盘格式需要为ext4,如果不是,则需要重新格式化并挂载,我是每台机器挂载了一个20G的数据盘。


使用fdisk命令对盘进行划分

fdisk /dev/sdb


进行格式化

mkfs.ext4 /dev/sdb


查看UUID号


编辑/etc/fstab文件,把挂载加入到系统启动

UUID=fa569af4-f8e7-4647-9085-07af255d3a07 /data1 ext4defaults,nodelalloc,noatime 0 2


创建数据盘

mkdir /data


进行挂载

mount –a


划分完及挂载后如下所示:


8、创建配置文件inventory.ini

主要修改以下地方,一台tidb作为中控机,三台tikv,一台pd。如果安装官方建议,为6台机器,2个 TiDB 节点,3个 PD 节点,3个 TiKV 节点,第一台TiDB 机器同时用作监控机


cat >inventory.ini

## TiDB Cluster Part

[tidb_servers]

192.168.37.132

[tikv_servers]

192.168.37.128

192.168.37.129

192.168.37.130

[pd_servers]

192.168.37.132

## Monitoring Part

# prometheus andpushgateway servers

[monitoring_servers]

192.168.37.132

[grafana_servers]

192.168.37.132

# node_exporter andblackbox_exporter servers

[monitored_servers]

192.168.37.128

192.168.37.129

192.168.37.130

192.168.37.132


9、运行配置文件进行部署

互信检查,返回创建的用户tidb为成功

ansible -iinventory.ini all -m shell -a whoami


sudo检查,返回root为成功

ansible -iinventory.ini all -m shell -a whoami -b


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

ansible-playbooklocal_prepare.yml


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

ansible-playbookbootstrap.yml

部署TiDB 集群软件

ansible-playbookdeploy.yml


10、启动及测试集群

启动TiDB 集群

ansible-playbookstart.yml


关闭TiDB集群

ansible-playbookstop.yml


测试连接

mysql -u root -h192.168.37.132 -P 4000


通过图形界面登陆GrafanaDashboard监控平台

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


至此,TIDB集群部署完成


部署过程中问题


1、最常见的问题就是NTP的问题,会导致互信出现问题,部署不成功


Ansible FAILED!

Start to adjust timewith pool.ntp.org

ntpdate[50809]:noserver suitable for synchronization found


解决方式:

查看一下/etc/ntp.conf里面的server,如果里面server 为ntp02.intstg.sfdc.com.cn

然后把tidb_ansible_master/hosts.ini里面的ntp_server改成一致的,即ntp02.intstg.sfdc.com.cn


2、磁盘检测问题

Tidb要求SSD磁盘,虚拟机安装的话达不到安装要求,可修改/home/tidb/tidb-ansible/roles/machine_benchmark/defaults/main.yml文件,如IOPS修改小一些,可检测通过


3、部署过程中出现做互信操作非常慢,需要在/etc/hosts下添加IP,主机名进行解析


4、提示:Ansible FAILED! => playbook: bootstrap.yml; TASK: check_system_optional : Preflight check - Check TiDB servers CPU; message: {"changed": false, "msg": "This machine does not have sufficient CPU to run TiDB, at least 8 cores."}


处理方法:

vim  bootstrap.yml  修改该文件并注释掉以下的内容

- name: check system

  hosts: all

  any_errors_fatal: true

  roles:

    - check_system_necessary

#    - { role: check_system_optional, when: not dev_mode }  这里注销掉


5、如果是非SSD测试的话 ,最好将如下的内容注释掉 

- name: tikv_servers machine benchmark

  hosts: tikv_servers

  gather_facts: false

  roles:

#    - { role: machine_benchmark, when: not dev_mode }  这里注销掉

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130169.html

相关文章

  • TiDB 在爱奇艺的应用及实践

    摘要:爱奇艺,中国高品质视频娱乐服务提供者,年月日正式上线,推崇品质青春时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品技术内容营销等全方位创新。边控中心是爱奇艺第一个在线业务使用的项目,所以我们制定了详细的上线计划。 爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群...

    jsbintask 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<