TIDB - 使用TIUP在线搭建TIDB集群

Posted 小毕超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TIDB - 使用TIUP在线搭建TIDB集群相关的知识,希望对你有一定的参考价值。

一、TIUP简介

前面介绍了单机版本的环境搭建以及如何在docker中搭建环境,前面就讲到官方建议使用TiUP来搭建管理整个集群环境,下面我们来体验下。

TiUP 是 TiDB 4.0 版本引入的集群运维工具,TiUP cluster 是 TiUP 提供的使用 Golang 编写的集群管理组件,通过 TiUP cluster 组件就可以进行日常的运维工作,包括部署、启动、关闭、销毁、弹性扩缩容、升级 TiDB 集群,以及管理 TiDB 集群参数。

目前 TiUP 可以支持部署 TiDB、TiFlash、TiDB Binlog、TiCDC,以及监控系统。本文将介绍不同集群拓扑的具体部署步骤。

二、使用TIUP部署集群

整体架构

主机角色
192.168.40.130中控机,tidb-server,tikv-server,pd-server
192.168.40.158tikv-server,pd-server,monitoring_servers,grafana_servers,alertmanager_servers
192.168.40.159tikv-server,pd-server

tidb-server为无状态的服务这里搭建了一个节点作为测试,可通过lvs部署多个节点负载。注意:在生产环境中控机应该单独部署为一台主机中,管理整个集群。

下面开始安装,注意安装前关闭所有主机的防火墙和swap,以避免端口不通的问题。
临时关闭防火墙:

systemctl stop firewalld        

永久关闭防火墙,需要重启服务器:

systemctl disable firewalld

临时关闭swap:

swapoff -a

永久关闭swap,需要重启服务器:

sed -ri 's/.*swap.*/#&/' /etc/fstab

安装 TiUP 工具

以下所有操作均在中控机中执行。

1. 下载安装 TiUP 工具

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

2. 声明全局环境变量

source /root/.bash_profile

3. 安装 TiUP cluster 组件

tiup cluster

4. 如果已经安装 TiUP cluster 组件,可以更新到最新版本

tiup update --self && tiup update cluster

使用 TiUP 工具部署TIDB集群

以下操作均在中控级中进行

1. 生成TIDB的配置模板

tiup cluster template > topology.yaml

2. 修改 topology.yaml 文件

这里主要修改,pd-server,tikv-server,tidb-server,monitoring_servers、grafana_servers、alertmanager_servers的ip,这里不安装tiflash-servers,先注释掉,下面是我的配置文件信息:

# 全局变量应用于所有部署,并用作的默认值
global:
  # 运行tidb集群的用户。
  user: "root"
  # 管理集群中服务器的SSH端口
  ssh_port: 22
  # 集群部署文件、启动脚本和配置文件的存放路径。
  deploy_dir: "/tidb-deploy"
  # TiDB集群数据存储目录
  data_dir: "/tidb-data"
  # 支持值:"amd64", "arm64"(默认值:"amd64")
  arch: "amd64"

# 监控变量应用于所有机器。
monitored:
  # TiDB集群中各节点上报系统信息的通信端口
  node_exporter_port: 9100
  # Blackbox_exporter 通信端口,用于TiDB集群端口监控。
  blackbox_exporter_port: 9115

# 服务器配置用于指定PD Servers的配置
pd_servers:
  - host: 192.168.40.130
  - host: 192.168.40.158
  - host: 192.168.40.159
    # # SSH port of the server.
    # ssh_port: 22
    # # PD Server name
    # name: "pd-1"
    # # communication port for TiDB Servers to connect.
    # client_port: 2379
    # # Communication port among PD Server nodes.
    # peer_port: 2380
    # # PD Server deployment file, startup script, configuration file storage directory.
    # deploy_dir: "/tidb-deploy/pd-2379"
    # # PD Server data storage directory.
    # data_dir: "/tidb-data/pd-2379"
    # # PD Server log file storage directory.
    # log_dir: "/tidb-deploy/pd-2379/log"
    # # numa node bindings.
    # numa_node: "0,1"
    # # The following configs are used to overwrite the `server_configs.pd` values.
    # config:
    #   schedule.max-merge-region-size: 20
    #   schedule.max-merge-region-keys: 200000
 

# 服务器配置用于指定TiDB服务器的配置。
tidb_servers:
  - host: 192.168.40.130
    # # SSH port of the server.
    # ssh_port: 22
    # # The port for clients to access the TiDB cluster.
    # port: 4000
    # # TiDB Server status API port.
    # status_port: 10080
    # # TiDB Server deployment file, startup script, configuration file storage directory.
    # deploy_dir: "/tidb-deploy/tidb-4000"
    # # TiDB Server log file storage directory.
    # log_dir: "/tidb-deploy/tidb-4000/log"

#  服务器配置用于指定TiKV服务器的配置。
tikv_servers:
  - host: 192.168.40.130
  - host: 192.168.40.158
  - host: 192.168.40.159
    # # SSH port of the server.
    # ssh_port: 22
    # # TiKV Server communication port.
    # port: 20160
    # # TiKV Server status API port.
    # status_port: 20180
    # # TiKV Server deployment file, startup script, configuration file storage directory.
    # deploy_dir: "/tidb-deploy/tikv-20160"
    # # TiKV Server data storage directory.
    # data_dir: "/tidb-data/tikv-20160"
    # # TiKV Server log file storage directory.
    # log_dir: "/tidb-deploy/tikv-20160/log"
    # # The following configs are used to overwrite the `server_configs.tikv` values.
    # config:
    #   log.level: warn

# 服务器配置用于指定Prometheus Server的配置。 
monitoring_servers:
  - host: 192.168.40.158
    # # SSH port of the server.
    # ssh_port: 22
    # # Prometheus Service communication port.
    # port: 9090
    # # Prometheus deployment file, startup script, configuration file storage directory.
    # deploy_dir: "/tidb-deploy/prometheus-8249"
    # # Prometheus data storage directory.
    # data_dir: "/tidb-data/prometheus-8249"
    # # Prometheus log file storage directory.
    # log_dir: "/tidb-deploy/prometheus-8249/log"

# 服务器配置用于指定Grafana服务器的配置。  
grafana_servers:
  - host: 192.168.40.158
    # # Grafana web port (browser access)
    # port: 3000
    # # Grafana deployment file, startup script, configuration file storage directory.
    # deploy_dir: /tidb-deploy/grafana-3000

# 服务器配置用于指定Alertmanager服务器的配置。 
alertmanager_servers:
  # # The ip address of the Alertmanager Server.
  - host: 192.168.40.158
    # # SSH port of the server.
    # ssh_port: 22
    # # Alertmanager web service port.
    # web_port: 9093
    # # Alertmanager communication port.
    # cluster_port: 9094
    # # Alertmanager deployment file, startup script, configuration file storage directory.
    # deploy_dir: "/tidb-deploy/alertmanager-9093"
    # # Alertmanager data storage directory.
    # data_dir: "/tidb-data/alertmanager-9093"
    # # Alertmanager log file storage directory.
    # log_dir: "/tidb-deploy/alertmanager-9093/log"

3. 检查和自动修复集群存在的潜在风险

tiup cluster check ./topology.yaml --apply --user root -p


如果出现Fail表示有错误,比如,在我部署过程中出现了numactl not usable, bash: numactl: command not found, auto fixing not supported的错误,是因为缺少了numactl工具,需要在每个部署主机安装numactl:

 yum -y install numactl.x86_64

出现其他错误可以参考下面这篇博客中的内容哦:

https://blog.csdn.net/whiteBearClimb/article/details/116058997

4. 部署 TiDB 集群
注意部署的tidb版本,可以通过 tiup cluster list 来查看现有的版本。tidb-test 表示集群的名称。

tiup cluster deploy tidb-test v5.0.0 ./topology.yaml --user root -p


执行上面指令会出现以上显示,输入y开始在每个节点下载。

出现上面的信息,就证明集群已经安装成功了。

5. 检查集群情况

tiup cluster display tidb-test


可以看到服务都处于停止状态,上面只是进行了集群的部署,启动还需进行集群的启动。

6. 启动集群

tiup cluster start tidb-test


到这里我们再查看下集群的状态:

tiup cluster display tidb-test


这下都处于启动状态了,下面可以通过mysql客户端进行连接测试了:

7. 使用navicat 连接TIDB

默认端口为4000,没有密码。

到这里集群就已经搭建成功了。

8. 查看监控monitoring服务

http://192.168.40.158:9090/


9. 查看grafana服务

http://192.168.40.158:3000

默认用户名和密码都是admin,确定后需要重置新密码,进去后可看到我们部署的tidb-test集群:

点击群可以查看每个组件的详细情况:


10. 查看告警管理alertmanager服务

http://192.168.40.158:9093

关于TIUP的详细指令介绍,可以参考下面一篇我的博客:https://blog.csdn.net/qq_43692950/article/details/121460770

以上是关于TIDB - 使用TIUP在线搭建TIDB集群的主要内容,如果未能解决你的问题,请参考以下文章

在开发环境使用 TiUP安装TiDB集群

在开发环境使用 TiUP安装TiDB集群

TiUP部署 TiDB 数据库集群

使用 TiUP cluster 在单机上模拟生产环境部署步骤

使用 TiUP cluster 在单机上模拟生产环境部署步骤

使用 PingCAP Clinic 诊断 TiDB 集群