diff --git a/TOC.md b/TOC.md index 1414bfe8dfba..f8f4b70ce2eb 100644 --- a/TOC.md +++ b/TOC.md @@ -38,7 +38,7 @@ + 安装与启动 + Linux + [使用 TiUP 部署](/production-deployment-using-tiup.md) @李仲舒 - + [使用 TiUP 离线部署](/production-deployment-using-tiup-offline.md) @刘金龙 + + [使用 TiUP 离线部署](/production-offline-deployment-using-tiup.md) @刘金龙 + [使用 Ansible 部署](/online-deployment-using-ansible.md) + [使用 Ansible 离线部署](/offline-deployment-using-ansible.md) + [使用 Docker 部署](/test-deployment-using-docker.md) diff --git a/production-offline-deployment-using-tiup.md b/production-offline-deployment-using-tiup.md new file mode 100644 index 000000000000..2ac2082c2294 --- /dev/null +++ b/production-offline-deployment-using-tiup.md @@ -0,0 +1,247 @@ +--- +title: 使用 TiUP 离线部署 TiDB 集群 +category: how-to +--- + +# 使用 TiUP 离线部署 TiDB 集群 + +本文介绍如何使用 TiUP 离线部署 TiDB 集群,具体的操作步骤如下。 + +## 1. 部署在线环境 TiUP 组件 + +使用普通用户登录一台开放外网访问的机器: + +1. 执行如下命令安装 TiUP 工具: + + {{< copyable "shell-regular" >}} + + ```shell + curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh + ``` + +2. 重新声明全局环境变量: + + {{< copyable "shell-regular" >}} + + ```shell + source .bash_profile + ``` + +3. 确认 TiUP 工具是否安装: + + {{< copyable "shell-regular" >}} + + ```shell + which tiup + ``` + +## 2. 使用 TiUP 拉取镜像 + +以 tidb 用户在隔离的环境中安装一个 v4.0.0-rc.1 的 TiDB 集群为例,可以执行以下步骤: + +1. 在一台和外网相通的机器上拉取需要的组件: + + {{< copyable "shell-regular" >}} + + ```bash + tiup mirrors package --os=linux v4.0.0-rc.1 + ``` + + 该命令会在当前目录下创建一个名叫 `package` 的目录,里面有启动一个集群必要的组件包。 + +2. 通过 tar 命令将该组件包打包然后发送到隔离环境的中控机: + + {{< copyable "shell-regular" >}} + + ```bash + tar czvf package.tar.gz package + ``` + + 此时,`package.tar.gz` 就是一个独立的离线环境包。 + +## 3. 部署离线环境 TiUP 组件 + +1. 将包发送到目标集群的中控机后,执行以下命令安装 TiUP 组件: + + {{< copyable "shell-regular" >}} + + ```bash + tar xzvf package.tar.gz && + cd package && + sh local_install.sh && + source /home/tidb/.bash_profile + ``` + +## 4. TiKV 数据盘挂载 + +> **注意:** +> +> 推荐 TiKV 部署目标机器的数据目录使用 EXT4 文件系统格式。相比于 XFS 文件系统格式,EXT4 文件系统格式在 TiDB 集群部署案例较多,生产环境优先选择使用 EXT4 文件系统格式。 + +使用 `root` 用户登录目标机器,将部署目标机器数据盘格式化成 ext4 文件系统,挂载时添加 `nodelalloc` 和 `noatime` 挂载参数。`nodelalloc` 是必选参数,否则 TiUP 安装时检测无法通过;`noatime` 是可选建议参数。 + +> **注意:** +> +> 如果你的数据盘已经格式化成 ext4 并挂载了磁盘,可先执行 `umount /dev/nvme0n1p1` 命令卸载,从编辑 `/etc/fstab` 文件步骤开始执行,添加挂载参数重新挂载即可。 + +以 `/dev/nvme0n1` 数据盘为例,具体操作步骤如下: + +1. 查看数据盘。 + + {{< copyable "shell-root" >}} + + ```bash + fdisk -l + ``` + + ``` + Disk /dev/nvme0n1: 1000 GB + ``` + +2. 创建分区表。 + + {{< copyable "shell-root" >}} + + ```bash + parted -s -a optimal /dev/nvme0n1 mklabel gpt -- mkpart primary ext4 1 -1 + ``` + + > **注意:** + > + > 使用 `lsblk` 命令查看分区的设备号:对于 nvme 磁盘,生成的分区设备号一般为 `nvme0n1p1`;对于普通磁盘(例如 `/dev/sdb`),生成的的分区设备号一般为 `sdb1`。 + +3. 格式化文件系统。 + + {{< copyable "shell-root" >}} + + ```bash + mkfs.ext4 /dev/nvme0n1p1 + ``` + +4. 查看数据盘分区 UUID。 + + 本例中 `nvme0n1p1` 的 UUID 为 `c51eb23b-195c-4061-92a9-3fad812cc12f`。 + + {{< copyable "shell-root" >}} + + ```bash + lsblk -f + ``` + + ``` + NAME FSTYPE LABEL UUID MOUNTPOINT + sda + ├─sda1 ext4 237b634b-a565-477b-8371-6dff0c41f5ab /boot + ├─sda2 swap f414c5c0-f823-4bb1-8fdf-e531173a72ed + └─sda3 ext4 547909c1-398d-4696-94c6-03e43e317b60 / + sr0 + nvme0n1 + └─nvme0n1p1 ext4 c51eb23b-195c-4061-92a9-3fad812cc12f + ``` + +5. 编辑 `/etc/fstab` 文件,添加 `nodelalloc` 挂载参数。 + + {{< copyable "shell-root" >}} + + ```bash + vi /etc/fstab + ``` + + ``` + UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data1 ext4 defaults,nodelalloc,noatime 0 2 + ``` + +6. 挂载数据盘。 + + {{< copyable "shell-root" >}} + + ```bash + mkdir /data1 && \ + mount -a + ``` + +7. 执行以下命令,如果文件系统为 ext4,并且挂载参数中包含 `nodelalloc`,则表示已生效。 + + {{< copyable "shell-root" >}} + + ```bash + mount -t ext4 + ``` + + ``` + /dev/nvme0n1p1 on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered) + ``` + +## 5. 配置初始化参数文件 `topology.yaml` + +集群初始化配置文件需要手动编写,完整的全配置参数模版可以参考 [Github TiUP 项目配置参数模版](https://github.com/pingcap-incubator/tiup-cluster/blob/master/examples/topology.example.yaml)。需要在中控机上面创建 YAML 格式配置文件,例如 `topology.yaml`: + +{{< copyable "shell-regular" >}} + +```shell +cat topology.yaml +``` + +```yaml +# # Global variables are applied to all deployments and used as the default value of +# # the deployments if a specific deployment value is missing. +global: + user: "tidb" + ssh_port: 22 + deploy_dir: "/tidb-deploy" + data_dir: "/tidb-data" + +server_configs: + pd: + replication.enable-placement-rules: true + +pd_servers: + - host: 10.0.1.4 + - host: 10.0.1.5 + - host: 10.0.1.6 +tidb_servers: + - host: 10.0.1.7 + - host: 10.0.1.8 + - host: 10.0.1.9 +tikv_servers: + - host: 10.0.1.1 + - host: 10.0.1.2 + - host: 10.0.1.3 +tiflash_servers: + - host: 10.0.1.10 + data_dir: /data1/tiflash/data,/data2/tiflash/data +cdc_servers: + - host: 10.0.1.6 + - host: 10.0.1.7 + - host: 10.0.1.8 +monitoring_servers: + - host: 10.0.1.4 +grafana_servers: + - host: 10.0.1.4 +alertmanager_servers: + - host: 10.0.1.4 +``` + +## 6. 部署 TiDB 集群 + +`/path/to/mirror` 是 `tiup mirrors ` 中输出的 package 所在离线机器的位置: + +{{< copyable "shell-regular" >}} + +```bash +export TIUP_MIRRORS=/path/to/mirror && +tiup cluster deploy tidb-test v4.0.0-rc topology.yaml --user tidb [-p] [-i /home/root/.ssh/gcp_rsa] && +tiup cluster start tidb-test +``` + +> **参数说明:** +> +> - 通过 TiUP cluster 部署的集群名称为 `tidb-test` +> - 部署版本为 `v4.0.0-rc.1`,其他版本可以参考[如何查看 TiUP 支持管理的 TiDB 版本](#如何查看-tiup-支持管理的-tidb-版本)的介绍 +> - 初始化配置文件为 `topology.yaml` +> - --user tidb:通过 tidb 用户登录到目标主机完成集群部署,该用户需要有 ssh 到目标机器的权限,并且在目标机器有 sudo 权限。也可以用其他有 ssh 和 sudo 权限的用户完成部署。 +> - [-i] 及 [-p]:非必选项,如果已经配置免密登陆目标机,则不需填写。否则选择其一即可,[-i] 为可登录到部署机 root 用户(或 --user 指定的其他用户)的私钥,也可使用 [-p] 交互式输入该用户的密码 + +预期日志结尾输出会有 ```Deployed cluster `tidb-test` successfully``` 关键词,表示部署成功。 + +部署完成后,集群相关操作可参考 [cluster 命令](/tiup/tiup-cluster.md)。 diff --git a/scale-tidb-using-tiup.md b/scale-tidb-using-tiup.md index e5569452bfcb..338c7e9dae54 100644 --- a/scale-tidb-using-tiup.md +++ b/scale-tidb-using-tiup.md @@ -6,9 +6,9 @@ aliases: ['/docs-cn/dev/how-to/scale/with-tiup/'] # 使用 TiUP 扩容缩容 TiDB 集群 -TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 +TiDB 集群可以在不中断线上服务的情况下进行扩容和缩容。 -本文介绍如何使用 TiUP 扩容缩容集群中的 TiDB、TiKV、PD、TiCDC 或者 TiFlash 节点。如未安装 TiUP,可参考[升级文档中的步骤](/upgrade-tidb-using-tiup.md#2-在中控机器上安装-tiup),将集群 import 到 TiUP 环境中,再进行扩容缩容。 +本文介绍如何使用 TiUP 扩容缩容集群中的 TiDB、TiKV、PD、TiCDC 或者 TiFlash 节点。如未安装 TiUP,可参考[升级文档中的步骤](/upgrade-tidb-using-tiup.md#2-在中控机器上安装-tiup),将集群 Import 到 TiUP 环境中,再使用 TiUP 进行扩容缩容。 你可以通过 `tiup cluster list` 查看当前的集群名称列表。 @@ -22,19 +22,19 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 | 10.0.1.1 | TiKV | | 10.0.1.2 | TiKV  | -## 1. 扩容 TiDB/TiKV/PD/TiCDC 节点 +## 1. 扩容 TiDB/PD/TiKV 节点 如果要添加一个 TiDB 节点,IP 地址为 10.0.1.5,可以按照如下步骤进行操作。 > **注意:** > -> 添加 TiKV、PD、TiCDC 节点和添加 TiDB 节点的步骤类似。 +> 添加 PD 节点和添加 TiDB 节点的步骤类似。添加 TiKV 节点前,建议预先根据集群的负载情况调整 PD 调度参数。 ### 1.1 编写扩容拓扑配置 > **注意:** > -> 默认情况下,可以不填端口信息。但在单机多实例场景下,你需要分配不同的端口,如果有端口或目录冲突,会在部署或扩容时提醒。 +> 默认情况下,可以不填写端口以及目录信息。但在单机多实例场景下,则需要分配不同的端口以及目录,如果有端口或目录冲突,会在部署或扩容时提醒。 在 scale-out.yaml 文件添加扩容拓扑配置: @@ -44,29 +44,50 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。 vi scale-out.yaml ``` -``` -tidb_servers: +{{< copyable "" >}} - - host: 10.0.1.5 +```ini +tidb_servers: + - host: 10.0.1.5 + ssh_port: 22 + port: 4000 + status_port: 10080 + deploy_dir: /data/deploy/install/deploy/tidb-4000 + log_dir: /data/deploy/install/log/tidb-4000 +``` - ssh_port: 22 +TiKV 配置文件参考: - port: 4000 +{{< copyable "" >}} - status_port: 10080 +```ini +tikv_servers: + - host: 10.0.1.5 + ssh_port: 22 + port: 20160 + status_port: 20180 + deploy_dir: /data/deploy/install/deploy/tikv-20160 + data_dir: /data/deploy/install/data/tikv-20160 + log_dir: /data/deploy/install/log/tikv-20160 ``` -你可以使用 `tiup cluster edit-config ` 查看当前集群的整体配置,其中 global 和 server_configs 的全局配置也会在 `scale-out.yaml` 中生效。 +PD 配置文件参考: -配置后,集群现拓扑结构如下所示: +{{< copyable "" >}} -| 主机 IP | 服务 | -|:----|:----| -| 10.0.1.3 | TiDB + TiFlash  | -| 10.0.1.4 | TiDB + PD | -| 10.0.1.5 | **TiDB** + TiKV + Monitor | -| 10.0.1.1 | TiKV  | -| 10.0.1.2 | TiKV  | +```ini +pd_servers: + - host: 10.0.1.5 + ssh_port: 22 + name: pd-1 + client_port: 2379 + peer_port: 2380 + deploy_dir: /data/deploy/install/deploy/pd-2379 + data_dir: /data/deploy/install/data/pd-2379 + log_dir: /data/deploy/install/log/pd-2379 +``` + +可以使用 `tiup cluster edit-config ` 查看当前集群的配置信息,因为其中的 `global` 和 `server_configs` 参数配置,默认会被 `scale-out.yaml` 继承。 ### 1.2 执行扩容命令 @@ -86,10 +107,27 @@ tiup cluster scale-out scale-out.yaml tiup cluster display ``` -打开浏览器访问监控平台 ,监控整个集群和新增节点的状态。 +打开浏览器访问监控平台 ,监控整个集群和新增节点的状态。 + +扩容后,集群拓扑结构如下所示: + +| 主机 IP | 服务 | +|:----|:----| +| 10.0.1.3 | TiDB + TiFlash  | +| 10.0.1.4 | TiDB + PD | +| 10.0.1.5 | **TiDB** + TiKV + Monitor | +| 10.0.1.1 | TiKV  | +| 10.0.1.2 | TiKV  | ## 2. 扩容 TiFlash 节点 +> **注意:** +> +> 在原有 TiDB 集群上新增 TiFlash 组件需要注意: +> +> 1. 首先确认当前 TiDB 的版本支持 TiFlash,否则需要先升级 TiDB 集群至 4.0 rc 以上版本。 +> 2. 下载 [pd-ctl](https://download.pingcap.org/tidb-v4.0.0-rc.2-linux-amd64.tar.gz),执行 `config set enable-placement-rules true` 命令,以开启 PD 的 Placement Rules 功能。 + 如果要添加一个 TiFlash 节点,IP 地址为 10.0.1.4,可以按照如下步骤进行操作。 ### 2.1 添加节点信息到 scale-out.yaml 文件 @@ -100,7 +138,7 @@ tiup cluster display ```ini tiflash_servers: - - host: 10.0.1.4 + - host: 10.0.1.4 ``` ### 2.2 运行扩容命令 @@ -119,17 +157,71 @@ tiup cluster scale-out scale-out.yaml tiup cluster display ``` -打开浏览器访问监控平台 ,监控整个集群和新增节点的状态。 +打开浏览器访问监控平台 ,监控整个集群和新增节点的状态。 + +扩容后,集群拓扑结构如下所示: + +| 主机 IP | 服务 | +|:----|:----| +| 10.0.1.3 | TiDB + TiFlash  | +| 10.0.1.4 | TiDB + PD + **TiFlash** | +| 10.0.1.5 | TiDB+ TiKV + Monitor | +| 10.0.1.1 | TiKV  | +| 10.0.1.2 | TiKV  | + +## 3. 扩容 TiCDC 节点 + +如果要添加 TiCDC 节点,IP 地址为 10.0.1.3、10.0.1.4,可以按照如下步骤进行操作。 + +### 3.1 添加节点信息到 scale-out.yaml 文件 + +编写 scale-out.yaml 文件: + +{{< copyable "" >}} + +```ini +cdc_servers: + - host: 10.0.1.3 + - host: 10.0.1.4 +``` + +### 3.2 运行扩容命令 + +{{< copyable "shell-regular" >}} + +```shell +tiup cluster scale-out scale-out.yaml +``` + +### 3.3 查看集群状态 + +{{< copyable "shell-regular" >}} + +```shell +tiup cluster display +``` + +打开浏览器访问监控平台 ,监控整个集群和新增节点的状态。 + +扩容后,集群拓扑结构如下所示: -## 3. 缩容 TiDB/TiKV/PD/TiCDC 节点 +| 主机 IP | 服务 | +|:----|:----| +| 10.0.1.3 | TiDB + TiFlash + **TiCDC** | +| 10.0.1.4 | TiDB + PD + TiFlash + **TiCDC** | +| 10.0.1.5 | TiDB+ TiKV + Monitor | +| 10.0.1.1 | TiKV  | +| 10.0.1.2 | TiKV  | + +## 4. 缩容 TiDB/PD/TiKV 节点 -如果要移除一个 TiKV 节点,IP 地址为 10.0.1.5,可以按照如下步骤进行操作。 +如果要移除 IP 地址为 10.0.1.5 的一个 TiKV 节点,可以按照如下步骤进行操作。 > **注意:** > -> 移除 TiDB、PD、TiCDC 节点和移除 TiKV 节点的步骤类似。 +> 移除 TiDB、PD 节点和移除 TiKV 节点的步骤类似。 -### 3.1 查看节点 ID 信息 +### 4.1 查看节点 ID 信息 {{< copyable "shell-regular" >}} @@ -148,6 +240,8 @@ ID              Role Host        Ports --              ---- ----    ----- ------ --------                ---------- +10.0.1.3:8300   cdc 10.0.1.3 8300   Up -             deploy/cdc-8300 +10.0.1.4:8300   cdc 10.0.1.4 8300   Up -             deploy/cdc-8300 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 @@ -166,14 +260,14 @@ ID              Role Host        Ports 10.0.1.4:9000 tiflash 10.0.1.4 9000/8123/3930/20170/20292/8234 Up data/tiflash-9000 deploy/tiflash-9000 -10.0.1.5:9290   prometheus 10.0.1.5 9290 Up data/prometheus-9290    deploy/prometheus-9290 +10.0.1.5:9090   prometheus 10.0.1.5 9090 Up data/prometheus-9090    deploy/prometheus-9090 -10.0.1.5:3200   grafana 10.0.1.5 3200 Up -                       deploy/grafana-3200 +10.0.1.5:3000   grafana 10.0.1.5 3000 Up -                       deploy/grafana-3000 -10.0.1.5:9293   alertmanager 10.0.1.5 9293/9294 Up data/alertmanager-9293  deploy/alertmanager-9293 +10.0.1.5:9093   alertmanager 10.0.1.5 9093/9094 Up data/alertmanager-9093  deploy/alertmanager-9093 ``` -### 3.2 执行缩容操作 +### 4.2 执行缩容操作 {{< copyable "shell-regular" >}} @@ -185,7 +279,7 @@ tiup cluster scale-in --node 10.0.1.5:20160 预期输出 Scaled cluster `` in successfully 信息,表示缩容操作成功。 -### 3.3 检查集群状态 +### 4.3 检查集群状态 下线需要一定时间,下线节点的状态变为 Tombstone 就说明下线成功。 @@ -197,37 +291,37 @@ tiup cluster scale-in --node 10.0.1.5:20160 tiup cluster display ``` -现拓扑结构如下: +打开浏览器访问监控平台 ,监控整个集群的状态。 + +调整后,拓扑结构如下: | Host IP | Service | |:----|:----| -| 10.0.1.3 | TiDB + TiFlash  | -| 10.0.1.4 | TiDB + PD + TiFlash  | +| 10.0.1.3 | TiDB + TiFlash + TiCDC | +| 10.0.1.4 | TiDB + PD + TiFlash + TiCDC | | 10.0.1.5 | TiDB + Monitor**(TiKV 已删除)** | | 10.0.1.1 | TiKV  | | 10.0.1.2 | TiKV  | -打开浏览器访问监控平台 ,监控整个集群的状态。 - -## 4. 缩容 TiFlash 节点 +## 5. 缩容 TiFlash 节点 -如果要下线一个 TiFlash 节点,IP 地址为 10.0.1.4,可以按照如下步骤进行操作。 +如果要缩容 IP 地址为 10.0.1.4 的一个 TiFlash 节点,,可以按照如下步骤进行操作。 > **注意:** > > 本节介绍的缩容流程不会删除缩容节点上的数据文件,如需再次上线该节点,请先手动删除原来的数据文件。 -### 4.1 下线该 TiFlash 节点 +### 5.1 下线该 TiFlash 节点 参考[下线 TiFlash 节点](/tiflash/maintain-tiflash.md#下线-tiflash-节点)一节,对要进行缩容的 TiFlash 节点进行下线操作。 -### 4.2 检查节点是否下线成功 +### 5.2 检查节点是否下线成功 使用 Grafana 或者 pd-ctl 检查节点是否下线成功(下线需要一定时间)。 -### 4.3 关闭 TiFlash 进程 +### 5.3 缩容 TiFlash -等待 TiFlash 对应的 `store` 消失,或者 `state_name` 变成 `Tombstone` 后,执行如下命令关闭 TiFlash 进程: +TiFlash 对应的 `store` 消失,或者 `state_name` 变成 `Tombstone` 后,表示 TiFlash 节点已经下线成功,这个时候可以执行如下命令缩容 TiFlash: {{< copyable "shell-regular" >}} @@ -235,7 +329,39 @@ tiup cluster display tiup cluster scale-in --node 10.0.1.4:9000 ``` -### 4.4 查看集群状态 +### 5.4 查看集群状态 + +{{< copyable "shell-regular" >}} + +```shell +tiup cluster display +``` + +打开浏览器访问监控平台 ,监控整个集群的状态。 + +调整后,拓扑结构如下: + +| Host IP | Service | +|:----|:----| +| 10.0.1.3 | TiDB + TiFlash + TiCDC | +| 10.0.1.4 | TiDB + PD + TiCDC **(TiFlash 已删除)** | +| 10.0.1.5 | TiDB + Monitor | +| 10.0.1.1 | TiKV  | +| 10.0.1.2 | TiKV  | + +## 6. 缩容 TiCDC 节点 + +如果要缩容 IP 地址为 10.0.1.4 的一个 TiCDC 节点,可以按照如下步骤进行操作。 + +### 6.1 下线该 TiCDC 节点 + +{{< copyable "shell-regular" >}} + +```shell +tiup cluster scale-in --node 10.0.1.4:8300 +``` + +### 6.2 查看集群状态 {{< copyable "shell-regular" >}} @@ -243,4 +369,14 @@ tiup cluster scale-in --node 10.0.1.4:9000 tiup cluster display ``` -打开浏览器访问监控平台 ,监控整个集群的状态。 +打开浏览器访问监控平台 ,监控整个集群的状态。 + +调整后,拓扑结构如下: + +| Host IP | Service | +|:----|:----| +| 10.0.1.3 | TiDB + TiFlash + TiCDC | +| 10.0.1.4 | TiDB + PD + **(TiCDC 已删除)** | +| 10.0.1.5 | TiDB + Monitor | +| 10.0.1.1 | TiKV  | +| 10.0.1.2 | TiKV  |