ansibel部署TIDB集群

  • Ansible

    • Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。
      Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。
    • Ansible 特点:
      • 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
      • 默认使用 SSH(Secure Shell)协议对设备进行管理。
      • 主从集中化管理。
      • 配置简单、功能强大、扩展性强。
      • 支持 API 及自定义模块,可通过 Python 轻松扩展。
      • 通过 Playbooks 来定制强大的配置、状态管理。
      • 对云计算平台、大数据都有很好的支持。
      • 提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 —- AWX 平台。
  • TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。

实验拓扑:

NameHostIPServices
Server4172.25.25.4Ansible中控机,PD1, TiDB1
Server5172.25.25.5TiKV1
Server6172.25.25.6TiKV2
Server7172.25.25.7TiKV3
中控机依赖性安装
 [root@server4 ~]# yum -y install epel-release git curl sshpass
 [root@server4 ~]# yum install -y python-pip-8.1.2-1.el7.noarch.rpm    

这里写图片描述
这里写图片描述

进行tidb 用户的创建,以及密码修改
 [root@server4 ~]# useradd -m -d /home/tidb tidb
 [root@server4 ~]# passwd tidb

这里写图片描述

进行用户授权
 [root@server4 ~]# vim /etc/sudoers
 在最后添加:
 #includedir /etc/sudoers.d
 tidb ALL=(ALL) NOPASSWD: ALL

这里写图片描述

生成 ssh key:

执行 su 命令从 root 用户切换到 tidb 用户下,创建 tidb 用户 ssh key, 提示 Enter passphrase 时直接回车即可。执行成功后,ssh 私钥文件为 /home/tidb/.ssh/id_rsa, ssh 公钥文件为 /home/tidb/.ssh/id_rsa.pub。

这里写图片描述

进行anisble 安装

获取ansble-master并进行解压( https://github.com/pingcap/tidb-ansible.git)

 [tidb@server4 ~]$ unzip tidb-ansible-master.zip 
 在中控机器上,进行联网下载ansble
 进入tide-asible 目录
 [tidb@server4 tidb-ansible]$ sudo pip install -r ./requirements.txt
 Ansible 及相关依赖版本记录在 tidb-ansible/requirements.txt 文件中

这里写图片描述

中控机上配置部署机器 ssh 互信及 sudo 规则
 [tidb@server4 tidb-ansible]$ vim hosts.ini
 [servers]    # 控制的Servers
 172.25.25.4
 172.25.25.5
 172.25.25.6
 172.25.25.7

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

这里写图片描述

中控机与部署目标机器之间的 ssh 互信

执行以下命令,按提示输入部署目标机器 root 用户密码。该步骤将在部署目标机器上创建 tidb 用户,并配置 sudo 规则,配置中控机与部署目标机器之间的 ssh 互信。

 [tidb@server4 tidb-ansible]$ ansible-playbook -i hosts.ini  create_users.yml -u root -k
 SSH password: 

 PLAY [all]  ************************************************************************************************************

 ............................省略................................
 Congrats! All goes well. :-)

这里写图片描述

为主机进行ntp时间同步服务的配置(此服务不配置,无法进行集群部署)

 Yum isntall -y ntp ntpstat
 编辑ntpd服务配置文件,/etc/ntp.conf
 每个机器内容相同
 restrict 172.25.0.0 mask 255.255.0.0 nomodify
 # Hosts on local network are less restricted.
 #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
 # 允许同步的网段

 # Use public servers from the pool.ntp.org project.
 # Please consider joining the pool (http://www.pool.ntp.org/join.html).
 server 172.25.25.4 iburst   # 服务端列表
 server 172.25.25.5 iburst
 server 172.25.25.6 iburst
 server 172.25.25.7 iburst

这里写图片描述
启动服务,查看状态(同步成功)

 [root@server4 tidb-ansible]# ntpstat 
 synchronised to NTP server (46.243.26.34) at stratum 2 
    time correct to within 278 ms
    polling server every 256 s
 [root@server5 ~]# ntpstat 
 synchronised to NTP server (172.25.25.4) at stratum 3 
    time correct to within 302 ms
    polling server every 128 s
 [root@server6 ~]# ntpstat 
 synchronised to NTP server (172.25.25.4) at stratum 3 
    time correct to within 305 ms
    polling server every 128 s
 [root@server7 ~]# ntpstat 
 synchronised to NTP server (172.25.25.4) at stratum 3 
    time correct to within 298 ms
    polling server every 128 s
在部署目标机器上添加数据盘 ext4 文件系统挂载参数

:此步不部署,无法完成集群的配置(亲身验证)

部署目标机器(除tidb-server外的tikv机器)数据盘请格式化成 ext4 文件系统,挂载时请添加 nodelalloc 和 noatime 挂载参数。nodelalloc 是必选参数,否则 Ansible 安装时检测无法通过,noatime 是可选建议参数。
注:据我经历,每个系统盘的状态最好都为,ext4,并且挂载参数:nodelalloc ,否则无法进行部署,/目录和/boot目录,可通过 修改/etc/fstab 然后重启机器进行实现

 Vim /etc/fstab
 UUID=d3059860-fd4b-4e63-b630-6ca580fc5ad6 /          ext4  defaults,nodelalloc,noatime        1 1
 UUID=ab532637-8a0d-49a1-9b3d-874e13313143 /boot      ext4  defaults,nodelalloc,noatime     1 2
 UUID=c038ee40-55b0-4ee8-ad56-47ccb0752a95 swap                     swap    defaults       0 0
 UUID=2cdf5e99-c327-44d1-9a50-666fd5edf266 /data1                   ext4    defaults,nodelalloc,noatime 0 2

这里写图片描述

 [root@server5 ~]# mount -t ext4   (查看ext4的挂载参数)
 /dev/vda3 on / type ext4 (rw,noatime,nodelalloc,data=ordered)
 /dev/vda1 on /boot type ext4 (rw,noatime,nodelalloc,data=ordered)
 /dev/vdb on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered)

若是为添加挂载参数,会报如下错误
在执行集群安装时:
这里写图片描述
关闭swap分区,否则也无法进行部署

 执行: Swapoff -a 

这里写图片描述

分配机器资源,编辑 inventory.ini 文件

编辑

 [root@server4 tidb-ansible]# vim inventory.ini
 ## TiDB Cluster Part
 [tidb_servers]
 172.25.25.4
 [tikv_servers]
 172.25.25.5
 172.25.25.6
 172.25.25.7

 [pd_servers]
 172.25.25.4
 [spark_master]

 [spark_slaves]

 ## Monitoring Part
 # prometheus and pushgateway servers
 [monitoring_servers]
 172.25.25.4
 [grafana_servers]
 172.25.25.4
 # node_exporter and blackbox_exporter servers
 [monitored_servers]
 172.25.25.4
 172.25.25.5
 172.25.25.6
 172.25.25.7

 [alertmanager_servers]
 172.25.25.4
 [kafka_exporter_servers]

这里写图片描述

部署任务

1.执行以下命令如果所有 server 返回 tidb 表示 ssh 互信配置成功。

 [tidb@server4 tidb-ansible]$ ansible -i inventory.ini all -m shell -a 'whoami' 
 172.25.25.6 | SUCCESS | rc=0 >>
 tidb

 172.25.25.5 | SUCCESS | rc=0 >>
 tidb

 172.25.25.7 | SUCCESS | rc=0 >>
 tidb

 172.25.25.4 | SUCCESS | rc=0 >>
 tidb

这里写图片描述
2.执行以下命令如果所有 server 返回 root 表示 tidb 用户 sudo 免密码配置成功。

 [tidb@server4 tidb-ansible]$ ansible -i inventory.ini all -m shell -a 'whoami' -b
 172.25.25.5 | SUCCESS | rc=0 >>
 root

 172.25.25.6 | SUCCESS | rc=0 >>
 root

 172.25.25.7 | SUCCESS | rc=0 >>
 root

 172.25.25.4 | SUCCESS | rc=0 >>
 root

这里写图片描述

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

 [tidb@server4 tidb-ansible]$ ansible-playbook local_prepare.yml

 PLAY [do local preparation]  ****************************************************************************************

 TASK [local : Stop if ansible version is too low, make sure that the Ansible version is  Ansible 2.4.2 or later, otherwise a compatibility issue occurs.] *** ok: [localhost] => {
     "changed": false, 
     "msg": "All assertions passed"
 }

 .........................省略...............................
 PLAY RECAP  *********************************************************************************************************
 localhost                  : ok=28   changed=20   unreachable=0     failed=0   

 Congrats! All goes well. :-)

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

 [tidb@server4 tidb-ansible]$ ansible-playbook bootstrap.yml
 ................................. 省略  ......................................
 TASK [check_system_optional : Preflight check - Check TiDB server's CPU]  *******************************************
 fatal: [172.25.25.4]: FAILED! => {"changed": false, "msg": "This machine  does not have sufficient CPU to run TiDB, at least 8 cores."}

 [172.25.25.4]: Ansible FAILED! => playbook: bootstrap.yml; TASK:  check_system_optional : Preflight check - Check TiDB server's CPU;  message: {"changed": false, "msg": "This machine does not have  sufficient CPU to run TiDB, at least 8 cores."}

 Ask for help:
 Contact us: support@pingcap.com
 It seems that you encounter some problems. You can send an email to the  above email address, attached with the tidb-ansible/inventory.ini and  tidb-ansible/log/ansible.log files and the error message, or new issue on https://github.com/pingcap/tidb-ansible/issues. We'll try our best to  help you deploy a TiDB cluster. Thanks. :-)

此问题无法解决,因为要求8核的cpu,不过对于实验环境,可进行忽略,不影响集群部署
4.部署 TiDB 集群软件

PLAY [check config locally] 
***********************************************************************************************
。。。。。。。。。。。 省略 。。。。。。。。。。。。
PLAY RECAP ***********************************************************************************************
172.25.25.4                : ok=140  changed=21   unreachable=0    failed=0   
172.25.25.5                : ok=60   changed=9    unreachable=0    failed=0   
172.25.25.6                : ok=60   changed=9    unreachable=0    failed=0   
172.25.25.7                : ok=60   changed=9    unreachable=0    failed=0   
localhost                  : ok=1    changed=0    unreachable=0    failed=0   

Congrats! All goes well. :-)
部署成功

5.启动 TiDB 集群

 [tidb@server4 tidb-ansible]$ ansible-playbook start.yml

这里写图片描述

启动成功后,查看端口情况

这里写图片描述
登录TIDB数据库进行验证

 [tidb@server4 tidb-ansible]$ mysql -u root -h 172.25.25.4 -P 4000
 Welcome to the MariaDB monitor.  Commands end with ; or \g.
 Your MySQL connection id is 5
 Server version: 5.7.10-TiDB-v2.1.0-beta-235-g1f87107 MySQL Community  Server (Apache License 2.0)

 Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 MySQL [(none)]> Ctrl-C -- exit!

这里写图片描述

通过浏览器访问监控平台
 地址:http://172.16.10.1:3000 默认帐号密码是:admin/admin

这里写图片描述

登录成功

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TiDB集群环境的部署可以通过使用TiUP来完成。TiUP是TiDB 4.0版本引入的集群运维工具,它提供了集群管理组件TiUP cluster,可以用于管理TiDB集群部署、启动、关闭、销毁、弹性扩缩容、升级等工作。通过执行TiUP命令,可以输出当前通过TiUP cluster管理的所有集群信息,包括集群名称、部署用户、版本、密钥信息等。 具体的部署步骤如下: 1. 安装TiUP组件:执行TiUP命令进行组件安装。 2. 创建集群配置文件:使用TiUP cluster命令创建一个新的集群配置文件。 3. 配置集群参数:根据需求修改集群配置文件中的参数,例如副本数、节点数量等。 4. 部署TiDB集群:执行TiUP cluster命令进行集群部署。 5. 检查部署情况:执行TiUP cluster命令检查部署TiDB集群情况。 通过以上步骤,可以完成TiDB集群环境的部署和配置。使用TiUP作为集群管理工具,可以方便地进行TiDB生态下各个组件的管理和运维工作,极大地降低了管理难度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [使用 TiUP 部署 TiDB 集群](https://blog.csdn.net/weixin_42241611/article/details/125518329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [TIDB集群部署](https://blog.csdn.net/qq_21040559/article/details/127716535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值