使用 TiUP 扩容缩容 PD 微服务节点

本文介绍如何使用 TiUP 扩容缩容集群中的 PD 微服务节点(包括 TSO 节点和 Scheduling 节点),以及如何切换 PD 工作模式。

你可以通过 tiup cluster list 查看当前的集群名称列表。

例如,集群原拓扑结构如下所示:

主机 IP服务
10.0.1.4TiDB + PD
10.0.1.5TiKV + Monitor
10.0.1.1TiKV
10.0.1.2TiKV
10.0.1.6TSO
10.0.1.7Scheduling

扩容 TSO/Scheduling 节点

对于已开启 PD 微服务的集群,如需添加一个 IP 地址为 10.0.1.8 的 TSO 节点和一个 IP 地址为 10.0.1.9 的 Scheduling 节点,可以按照如下步骤进行操作。

1. 编写扩容拓扑配置

在 scale-out.yml 文件添加扩容拓扑配置:

vi scale-out.yml

TSO 配置参考:

tso_servers: - host: 10.0.1.8 port: 3379

Scheduling 配置参考:

scheduling_servers: - host: 10.0.1.9 port: 3379

可以使用 tiup cluster edit-config <cluster-name> 查看当前集群的配置信息,因为其中的 globalserver_configs 参数配置默认会被 scale-out.yml 继承,因此也会在 scale-out.yml 中生效。

2. 执行扩容命令

执行 scale-out 命令前,先使用 checkcheck --apply 命令,检查和自动修复集群存在的潜在风险:

  1. 检查集群存在的潜在风险:

    tiup cluster check <cluster-name> scale-out.yml --cluster --user root [-p] [-i /home/root/.ssh/gcp_rsa]
  2. 自动修复集群存在的潜在风险:

    tiup cluster check <cluster-name> scale-out.yml --cluster --apply --user root [-p] [-i /home/root/.ssh/gcp_rsa]
  3. 执行 scale-out 命令扩容 TiDB 集群:

    tiup cluster scale-out <cluster-name> scale-out.yml [-p] [-i /home/root/.ssh/gcp_rsa]

以上操作示例中:

  • 扩容配置文件为 scale-out.yml
  • --user root 表示通过 root 用户登录到目标主机完成集群部署,该用户需要有 ssh 到目标机器的权限,并且在目标机器有 sudo 权限。也可以用其他有 ssh 和 sudo 权限的用户完成部署。
  • [-i][-p] 为可选项,如果已经配置免密登录目标机,则无需填写。否则选择其一即可,[-i] 为可登录到目标机的 root 用户(或 --user 指定的其他用户)的私钥,也可使用 [-p] 交互式输入该用户的密码。

预期日志结尾输出 Scaled cluster `<cluster-name>` out successfully 信息,表示扩容操作成功。

3. 查看集群状态

tiup cluster display <cluster-name>

打开浏览器访问监控平台 http://10.0.1.5:3000,监控整个集群和新增节点的状态。

扩容后,集群拓扑结构如下所示:

主机 IP服务
10.0.1.4TiDB + PD
10.0.1.5TiKV + Monitor
10.0.1.1TiKV
10.0.1.2TiKV
10.0.1.6TSO
10.0.1.7Scheduling
10.0.1.8TSO
10.0.1.9Scheduling

缩容 TSO/Scheduling 节点

对于包含多个 TSO 或 Scheduling 节点的集群,如需移除 IP 地址为 10.0.1.8 的 TSO 节点和 IP 地址为 10.0.1.9 的 Scheduling 节点,可以按照如下步骤进行操作。

1. 查看节点 ID 信息

tiup cluster display <cluster-name>
Starting /root/.tiup/components/cluster/v1.16/cluster display <cluster-name> TiDB Cluster: <cluster-name> TiDB Version: v8.3.0 ID Role Host Ports Status Data Dir Deploy Dir -- ---- ---- ----- ------ -------- ---------- 10.0.1.4:2379 pd 10.0.1.4 2379/2380 Healthy data/pd-2379 deploy/pd-2379 10.0.1.1:20160 tikv 10.0.1.1 20160/20180 Up data/tikv-20160 deploy/tikv-20160 10.0.1.2:20160 tikv 10.0.1.2 20160/20180 Up data/tikv-20160 deploy/tikv-20160 10.0.1.5:20160 tikv 10.0.1.5 20160/20180 Up data/tikv-20160 deploy/tikv-20160 10.0.1.4:4000 tidb 10.0.1.4 4000/10080 Up - deploy/tidb-4000 10.0.1.5:9090 prometheus 10.0.1.5 9090 Up data/prometheus-9090 deploy/prometheus-9090 10.0.1.5:3000 grafana 10.0.1.5 3000 Up - deploy/grafana-3000 10.0.1.5:9093 alertmanager 10.0.1.5 9093/9094 Up data/alertmanager-9093 deploy/alertmanager-9093 10.0.1.6:3379 tso 10.0.1.6 3379 Up|P data/tso-3379 deploy/tso-3379 10.0.1.8:3379 tso 10.0.1.8 3379 Up data/tso-3379 deploy/tso-3379 10.0.1.7:3379 scheduling 10.0.1.7 3379 Up|P data/scheduling-3379 deploy/scheduling-3379 10.0.1.9:3379 scheduling 10.0.1.9 3379 Up data/scheduling-3379 deploy/scheduling-3379

2. 执行缩容操作

tiup cluster scale-in <cluster-name> --node 10.0.1.8:3379 tiup cluster scale-in <cluster-name> --node 10.0.1.9:3379

其中 --node 参数为需要下线节点的 ID。

预期输出 Scaled cluster <cluster-name> in successfully 信息,表示缩容操作成功。

3. 查看集群状态

执行如下命令检查节点是否下线成功:

tiup cluster display <cluster-name>

打开浏览器访问监控平台 http://10.0.1.5:3000,监控整个集群的状态。

调整后,拓扑结构如下:

主机 IP服务
10.0.1.4TiDB + PD
10.0.1.5TiKV + Monitor
10.0.1.1TiKV
10.0.1.2TiKV
10.0.1.6TSO
10.0.1.7Scheduling

切换 PD 工作模式

PD 服务支持在以下两种工作模式之间进行切换:

  • 常规模式:由 PD 节点自身提供路由、时间戳分配和集群调度功能。
  • 微服务模式:支持将 PD 的时间戳分配和集群调度功能单独部署到 TSO 节点(提供 tso 微服务)和 Scheduling 节点(提供 scheduling 微服务),从而与 PD 的路由功能解耦,让 PD 专注于元数据的路由服务。

从常规模式切换为微服务模式

对于尚未开启 PD 微服务的集群,如需切换为 PD 微服务模式,并添加一个 IP 地址为 10.0.1.8 的 TSO 节点和一个 IP 地址为 10.0.1.9 的 Scheduling 节点,可以按照如下步骤进行操作。

  1. 编写扩容拓扑配置:

    vi scale-out.yml

    配置参考:

    tso_servers: - host: 10.0.1.8 port: 3379 scheduling_servers: - host: 10.0.1.9 port: 3379
  2. 修改集群配置,将集群切换为 PD 微服务模式:

    tiup cluster edit-config <cluster-name>

    global 中添加 pd_mode: ms 配置:

    global: user: tidb ssh_port: 22 listen_host: 0.0.0.0 deploy_dir: /tidb-deploy data_dir: /tidb-data os: linux arch: amd64 systemd_mode: system pd_mode: ms
  3. 滚动更新 PD 节点配置:

    tiup cluster reload <cluster-name> -R pd
  4. 扩容 PD 微服务节点:

    tiup cluster scale-out <cluster-name> scale-out.yml

从微服务模式切换为常规模式

对于已开启 PD 微服务的集群,假设该集群包含一个 IP 地址为 10.0.1.8 的 TSO 节点和一个 IP 地址为 10.0.1.9 的 Scheduling 节点,如需切换为非微服务模式,可以按照如下步骤进行操作。

  1. 修改集群配置,将集群切换为非 PD 微服务模式:

    tiup cluster edit-config <cluster-name>

    global 中删除 pd_mode: ms 配置:

    global: user: tidb ssh_port: 22 listen_host: 0.0.0.0 deploy_dir: /tidb-deploy data_dir: /tidb-data os: linux arch: amd64 systemd_mode: system
  2. 缩容集群中所有的 PD 微服务节点:

    tiup cluster scale-in <cluster-name> --node 10.0.1.8:3379,10.0.1.9:3379
  3. 滚动更新 PD 节点配置:

    tiup cluster reload <cluster-name> -R pd

文档内容是否有帮助?