From 0b1c966dd7f0b69c904a73600a92cd55491803a6 Mon Sep 17 00:00:00 2001 From: Yujie-Xie <1398010062@qq.com> Date: Sat, 8 Feb 2025 16:46:28 +0800 Subject: [PATCH 01/21] add tiup no-sudo doc --- tiup/tiup-cluster-no-sudo-mode.md | 197 ++++++++++++++++++++++++ tiup/tiup-cluster-topology-reference.md | 1 + 2 files changed, 198 insertions(+) create mode 100644 tiup/tiup-cluster-no-sudo-mode.md diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md new file mode 100644 index 000000000000..6097d28cc0d0 --- /dev/null +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -0,0 +1,197 @@ +--- +title: 使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 +summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 +--- + +# 使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 + +本文重在介绍如何使用 TiUP no-sudo 模式部署一个 TiDB 线上集群 + +> **注意:** +> +> CentOS 版本限制: CentOS 8 及以后的版本 + +## 准备用户并配置 SSH 互信 +1. 以 tidb 用户为例,需要依次登录到所有部署目标机器以 `root` 用户使用如下命令创建一个普通用户 `tidb`。在 no-sudo 模式下不需要为 `tidb` 用户配置 sudo 免密,即无需将 `tidb` 用户加入 `sudoers` 中。 + + ```bash + adduser tidb + ``` + +2. 在每台部署目标机器上为 `tidb` 用户启动 `systemd user` 模式(重要步骤) + + 1. 使用 `tidb` 用户设置 `XDG_RUNTIME_DIR` 环境变量 + ```bash + mkdir -p ~/.bashrc.d + echo "export XDG_RUNTIME_DIR=/run/user/$(id -u)" > ~/.bashrc.d/systemd + source ~/.bashrc.d/systemd + ``` + + 2. 使用 `root` 用户启动 user service + + ```bash + $ systemctl start user@1000.service #1000 是 tidb 用户的 id,可以通过执行命令 id 来获取 + $ systemctl status user@1000.service + user@1000.service - User Manager for UID 1000 + Loaded: loaded (/usr/lib/systemd/system/user@.service; static; vendor preset> + Active: active (running) since Mon 2024-01-29 03:30:51 EST; 1min 7s ago + Main PID: 3328 (systemd) + Status: "Startup finished in 420ms." + Tasks: 6 + Memory: 6.1M + CGroup: /user.slice/user-1000.slice/user@1000.service + ├─dbus.service + │ └─3442 /usr/bin/dbus-daemon --session --address=systemd: --nofork > + ├─init.scope + │ ├─3328 /usr/lib/systemd/systemd --user + │ └─3335 (sd-pam) + └─pulseaudio.service + └─3358 /usr/bin/pulseaudio --daemonize=no --log-target=journal + ``` + + 执行`systemctl --user`,如果没有报错,说明 systemd user 模式已经正常启动。 + +3. 在中控机使用 ssh-keygen 生成密钥,并将公钥复制到其他部署机器完成 SSH 互信。 + +## 准备部署拓扑文件 + +1. 使用以下 tiup 命令生成拓扑文件 + + ```bash + tiup cluster template > topology.yaml + ``` + +2. 编辑拓扑文件 + + 相比以往的模式,使用 no-sudo 模式的 TiUP 需要在 `topology.yaml` 的 `global` 模块中加上 `systemd_mode: "user"` 这一行,该 `systemd_mode` 参数用于指明是否使用 `systemd user` 模式。如果不设置该参数,其默认值为 `system`,表明需要使用 sudo 权限。此外,no-sudo 模式无法使用 `/data` 目录作为 `deploy_dir` 和 `data_dir`,因为会有权限问题,需要选择一个普通用户可以访问的路径。下方示例使用了相对路径,最终使用的路径为 `/home/tidb/data/tidb-deploy` 和 `/home/tidb/data/tidb-data`。 + 拓扑文件的其余部分与旧版本一致。 + + ```yaml + global: + user: "tidb" + systemd_mode: "user" + ssh_port: 22 + deploy_dir: "data/tidb-deploy" + data_dir: "data/tidb-data" + arch: "amd64" + ... + ``` + +## 手动修复检查项 +执行 `tiup cluster check topology.yaml --user tidb` 会有一些失败的检查项,示例: + +```bash +Node Check Result Message +---- ----- ------ ------- +192.168.124.27 thp Fail THP is enabled, please disable it for best performance +192.168.124.27 command Pass numactl: policy: default +192.168.124.27 os-version Pass OS is CentOS Stream 8 +192.168.124.27 network Pass network speed of ens160 is 10000MB +192.168.124.27 disk Warn mount point / does not have 'noatime' option set +192.168.124.27 disk Fail multiple components tikv:/home/blackcat/data/tidb-deploy/tikv-20160/data/tidb-data,tikv:/home/blackcat/data/tidb-deploy/tikv-20161/data/tidb-data are using the same partition 192.168.124.27:/ as data dir +192.168.124.27 selinux Pass SELinux is disabled +192.168.124.27 cpu-cores Pass number of CPU cores / threads: 16 +192.168.124.27 cpu-governor Warn Unable to determine current CPU frequency governor policy +192.168.124.27 swap Warn swap is enabled, please disable it for best performance +192.168.124.27 memory Pass memory size is 9681MB +192.168.124.27 service Fail service firewalld is running but should be stopped +``` + +由于在 no-sudo 模式下,`tidb` 用户没有 sudo 权限,执行 `tiup cluster check topology.yaml --apply --user tidb` 会因为权限不足而无法对失败的检查项进行自动修复,所以需要使用 `root` 用户在部署机器上手动执行以下操作。 + +1. 安装 numactl 工具 + + ```shell + sudo yum -y install numactl + ``` + +2. 关闭 swap + + ```shell + swapoff -a || exit 0 + ``` + +3. 禁止透明大页 + + ```shell + echo never > /sys/kernel/mm/transparent_hugepage/enabled + ``` + +4. 开启 irqbalance service + + ```shell + systemctl start irqbalance + ``` + +5. 关闭防火墙以及关闭防火墙自启动 + + ```shell + systemctl stop firewalld.service + systemctl disable firewalld.service + ``` + +6. 修改 sysctl 参数 + + ```shell + echo "fs.file-max = 1000000">> /etc/sysctl.conf + echo "net.core.somaxconn = 32768">> /etc/sysctl.conf + echo "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.conf + echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf + echo "vm.overcommit_memory = 1">> /etc/sysctl.conf + echo "vm.swappiness = 0">> /etc/sysctl.conf + sysctl -p + ``` + +7. 配置 tidb 用户的 limits.conf 文件 + + ```shell + cat << EOF >>/etc/security/limits.conf + tidb soft nofile 1000000 + tidb hard nofile 1000000 + tidb soft stack 32768 + tidb hard stack 32768 + tidb soft core unlimited + tidb hard core unlimited + EOF + ``` + +## 部署集群 + +为了使用上述步骤准备好的 `tidb` 用户而避免重新创建新的用户,执行 deploy 命令时需要加上 `--user tidb`,即: + +```shell + tiup cluster deploy mycluster v8.1.0 topology.yaml --user tidb +``` + +启动集群 + +```shell +tiup cluster start mycluster +``` + +扩容集群 + +```shell +tiup cluster scale-out mycluster scale.yaml --user tidb +``` + +缩容集群 + +```shell +tiup cluster scale-in mycluster -N 192.168.124.27:20160 +``` + +升级集群 + +```shell +tiup cluster upgrade mycluster v8.2.0 +``` + +## FAQ +1. 启动 user@.service 时出现错误:Failed to fully start up daemon: Permission denied + +这可能是因为您的 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。您可以使用以下命令检查 `/etc/pam.d/system-auth.ued` 文件是否已包含 `pam_systemd.so` 模块的配置。如果没有,则将 `session optional pam_systemd.so` 附加到文件末尾。 + + ```shell + grep 'pam_systemd.so' /etc/pam.d/system-auth.ued || echo 'session optional pam_systemd.so' >> /etc/pam.d/system-auth.ued + ``` diff --git a/tiup/tiup-cluster-topology-reference.md b/tiup/tiup-cluster-topology-reference.md index 72ee5e84a751..14dc0a60fa8d 100644 --- a/tiup/tiup-cluster-topology-reference.md +++ b/tiup/tiup-cluster-topology-reference.md @@ -40,6 +40,7 @@ summary: 介绍通过 TiUP 部署或扩容 TiDB 集群时提供的拓扑文件 - `user`:以什么用户来启动部署的集群,默认值:"tidb",如果 `` 字段指定的用户在目标机器上不存在,会自动尝试创建 - `group`:自动创建用户时指定用户所属的用户组,默认和 `` 字段值相同,若指定的组不存在,则自动创建 +- `systemd_mode`: 部署集群过程中在目标机器上使用的 systemd 模式,默认值为 `system`,若设置为 `user`,则表示在目标机器上不使用 sudo 权限,即使用 TiUP no-sudo 模式。 - `ssh_port`:指定连接目标机器进行操作的时候使用的 SSH 端口,默认值:22 - `enable_tls`:是否对集群启用 TLS。启用之后,组件之间、客户端与组件之间都必须使用生成的 TLS 证书进行连接,默认值:false - `listen_host`:默认使用的监听 IP。如果为空,每个实例会根据其 `host` 字段是否包含 `:` 来自动设置为 `::` 或 `0.0.0.0`。tiup-cluster v1.14.0 引入该配置 From ae810b9d31bf181cddacd4d5b4cf31ff5d820435 Mon Sep 17 00:00:00 2001 From: Yujie-Xie <1398010062@qq.com> Date: Sat, 8 Feb 2025 16:49:20 +0800 Subject: [PATCH 02/21] add index --- TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TOC.md b/TOC.md index 9ce73db0c119..6a500e80f91f 100644 --- a/TOC.md +++ b/TOC.md @@ -496,6 +496,7 @@ - TiUP 组件文档 - [tiup-playground 运行本地测试集群](/tiup/tiup-playground.md) - [tiup-cluster 部署运维生产集群](/tiup/tiup-cluster.md) + - [tiup-cluster no-sudo 模式部署运维生产集群](/tiup/tiup-cluster-no-sudo-mode.md) - [tiup-mirror 定制离线镜像](/tiup/tiup-mirror.md) - [tiup-bench 进行 TPCC/TPCH 压力测试](/tiup/tiup-bench.md) - [TiDB Operator](/tidb-operator-overview.md) From 544ab888f85362bfb71f4a84808599f16507ac47 Mon Sep 17 00:00:00 2001 From: Yujie-Xie <1398010062@qq.com> Date: Sat, 8 Feb 2025 16:52:24 +0800 Subject: [PATCH 03/21] format optimization --- tiup/tiup-cluster-no-sudo-mode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 6097d28cc0d0..2489077e26d0 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -190,7 +190,7 @@ tiup cluster upgrade mycluster v8.2.0 ## FAQ 1. 启动 user@.service 时出现错误:Failed to fully start up daemon: Permission denied -这可能是因为您的 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。您可以使用以下命令检查 `/etc/pam.d/system-auth.ued` 文件是否已包含 `pam_systemd.so` 模块的配置。如果没有,则将 `session optional pam_systemd.so` 附加到文件末尾。 + 这可能是因为您的 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。您可以使用以下命令检查 `/etc/pam.d/system-auth.ued` 文件是否已包含 `pam_systemd.so` 模块的配置。如果没有,则将 `session optional pam_systemd.so` 附加到文件末尾。 ```shell grep 'pam_systemd.so' /etc/pam.d/system-auth.ued || echo 'session optional pam_systemd.so' >> /etc/pam.d/system-auth.ued From 4803aed8f61652e7fcc3d36be3b793d4d5c6d7ec Mon Sep 17 00:00:00 2001 From: Yujie-Xie <1398010062@qq.com> Date: Sat, 8 Feb 2025 17:11:53 +0800 Subject: [PATCH 04/21] format optimization --- tiup/tiup-cluster-no-sudo-mode.md | 123 +++++++++++++++--------------- 1 file changed, 62 insertions(+), 61 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 2489077e26d0..e27ad40a454a 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -13,7 +13,7 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 ## 准备用户并配置 SSH 互信 1. 以 tidb 用户为例,需要依次登录到所有部署目标机器以 `root` 用户使用如下命令创建一个普通用户 `tidb`。在 no-sudo 模式下不需要为 `tidb` 用户配置 sudo 免密,即无需将 `tidb` 用户加入 `sudoers` 中。 - + ```bash adduser tidb ``` @@ -21,35 +21,36 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 2. 在每台部署目标机器上为 `tidb` 用户启动 `systemd user` 模式(重要步骤) 1. 使用 `tidb` 用户设置 `XDG_RUNTIME_DIR` 环境变量 - ```bash - mkdir -p ~/.bashrc.d - echo "export XDG_RUNTIME_DIR=/run/user/$(id -u)" > ~/.bashrc.d/systemd - source ~/.bashrc.d/systemd - ``` - - 2. 使用 `root` 用户启动 user service - + ```bash - $ systemctl start user@1000.service #1000 是 tidb 用户的 id,可以通过执行命令 id 来获取 - $ systemctl status user@1000.service - user@1000.service - User Manager for UID 1000 - Loaded: loaded (/usr/lib/systemd/system/user@.service; static; vendor preset> - Active: active (running) since Mon 2024-01-29 03:30:51 EST; 1min 7s ago - Main PID: 3328 (systemd) - Status: "Startup finished in 420ms." - Tasks: 6 - Memory: 6.1M - CGroup: /user.slice/user-1000.slice/user@1000.service - ├─dbus.service - │ └─3442 /usr/bin/dbus-daemon --session --address=systemd: --nofork > - ├─init.scope - │ ├─3328 /usr/lib/systemd/systemd --user - │ └─3335 (sd-pam) - └─pulseaudio.service - └─3358 /usr/bin/pulseaudio --daemonize=no --log-target=journal - ``` + mkdir -p ~/.bashrc.d + echo "export XDG_RUNTIME_DIR=/run/user/$(id -u)" > ~/.bashrc.d/systemd + source ~/.bashrc.d/systemd + ``` - 执行`systemctl --user`,如果没有报错,说明 systemd user 模式已经正常启动。 + 3. 使用 `root` 用户启动 user service + + ```shell + $ systemctl start user@1000.service #1000 is the id of tidb user. You can get the user id by executing id + $ systemctl status user@1000.service + user@1000.service - User Manager for UID 1000 + Loaded: loaded (/usr/lib/systemd/system/user@.service; static; vendor preset> + Active: active (running) since Mon 2024-01-29 03:30:51 EST; 1min 7s ago + Main PID: 3328 (systemd) + Status: "Startup finished in 420ms." + Tasks: 6 + Memory: 6.1M + CGroup: /user.slice/user-1000.slice/user@1000.service + ├─dbus.service + │ └─3442 /usr/bin/dbus-daemon --session --address=systemd: --nofork > + ├─init.scope + │ ├─3328 /usr/lib/systemd/systemd --user + │ └─3335 (sd-pam) + └─pulseaudio.service + └─3358 /usr/bin/pulseaudio --daemonize=no --log-target=journal + ``` + + 执行`systemctl --user`,如果没有报错,说明 systemd user 模式已经正常启动。 3. 在中控机使用 ssh-keygen 生成密钥,并将公钥复制到其他部署机器完成 SSH 互信。 @@ -101,58 +102,58 @@ Node Check Result Message 1. 安装 numactl 工具 - ```shell - sudo yum -y install numactl - ``` + ```shell + sudo yum -y install numactl + ``` 2. 关闭 swap - ```shell - swapoff -a || exit 0 - ``` + ```shell + swapoff -a || exit 0 + ``` 3. 禁止透明大页 - ```shell - echo never > /sys/kernel/mm/transparent_hugepage/enabled - ``` + ```shell + echo never > /sys/kernel/mm/transparent_hugepage/enabled + ``` 4. 开启 irqbalance service - ```shell - systemctl start irqbalance + ```shell + systemctl start irqbalance ``` 5. 关闭防火墙以及关闭防火墙自启动 - ```shell - systemctl stop firewalld.service - systemctl disable firewalld.service + ```shell + systemctl stop firewalld.service + systemctl disable firewalld.service ``` 6. 修改 sysctl 参数 - ```shell - echo "fs.file-max = 1000000">> /etc/sysctl.conf - echo "net.core.somaxconn = 32768">> /etc/sysctl.conf - echo "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.conf - echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf - echo "vm.overcommit_memory = 1">> /etc/sysctl.conf - echo "vm.swappiness = 0">> /etc/sysctl.conf - sysctl -p + ```shell + echo "fs.file-max = 1000000">> /etc/sysctl.conf + echo "net.core.somaxconn = 32768">> /etc/sysctl.conf + echo "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.conf + echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf + echo "vm.overcommit_memory = 1">> /etc/sysctl.conf + echo "vm.swappiness = 0">> /etc/sysctl.conf + sysctl -p ``` 7. 配置 tidb 用户的 limits.conf 文件 - ```shell - cat << EOF >>/etc/security/limits.conf - tidb soft nofile 1000000 - tidb hard nofile 1000000 - tidb soft stack 32768 - tidb hard stack 32768 - tidb soft core unlimited - tidb hard core unlimited - EOF + ```shell + cat << EOF >>/etc/security/limits.conf + tidb soft nofile 1000000 + tidb hard nofile 1000000 + tidb soft stack 32768 + tidb hard stack 32768 + tidb soft core unlimited + tidb hard core unlimited + EOF ``` ## 部署集群 @@ -160,7 +161,7 @@ Node Check Result Message 为了使用上述步骤准备好的 `tidb` 用户而避免重新创建新的用户,执行 deploy 命令时需要加上 `--user tidb`,即: ```shell - tiup cluster deploy mycluster v8.1.0 topology.yaml --user tidb +tiup cluster deploy mycluster v8.1.0 topology.yaml --user tidb ``` 启动集群 @@ -187,7 +188,7 @@ tiup cluster scale-in mycluster -N 192.168.124.27:20160 tiup cluster upgrade mycluster v8.2.0 ``` -## FAQ +## 常见问题 1. 启动 user@.service 时出现错误:Failed to fully start up daemon: Permission denied 这可能是因为您的 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。您可以使用以下命令检查 `/etc/pam.d/system-auth.ued` 文件是否已包含 `pam_systemd.so` 模块的配置。如果没有,则将 `session optional pam_systemd.so` 附加到文件末尾。 From e62b4c50fedafad805e5346dbf8880d36808310d Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Mon, 10 Feb 2025 14:41:55 +0800 Subject: [PATCH 05/21] Update tiup-cluster-no-sudo-mode.md --- tiup/tiup-cluster-no-sudo-mode.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index e27ad40a454a..e4ed6c5f5f1d 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -193,6 +193,6 @@ tiup cluster upgrade mycluster v8.2.0 这可能是因为您的 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。您可以使用以下命令检查 `/etc/pam.d/system-auth.ued` 文件是否已包含 `pam_systemd.so` 模块的配置。如果没有,则将 `session optional pam_systemd.so` 附加到文件末尾。 - ```shell - grep 'pam_systemd.so' /etc/pam.d/system-auth.ued || echo 'session optional pam_systemd.so' >> /etc/pam.d/system-auth.ued - ``` +```shell +grep 'pam_systemd.so' /etc/pam.d/system-auth.ued || echo 'session optional pam_systemd.so' >> /etc/pam.d/system-auth.ued +``` From d86b4e0198968f277bc521f6a4ec9bf6f027e500 Mon Sep 17 00:00:00 2001 From: Yujie <34276395+Yujie-Xie@users.noreply.github.com> Date: Mon, 10 Feb 2025 15:08:16 +0800 Subject: [PATCH 06/21] Apply suggestions from code review Co-authored-by: xixirangrang --- tiup/tiup-cluster-no-sudo-mode.md | 154 ++++++++++++------------ tiup/tiup-cluster-topology-reference.md | 2 +- 2 files changed, 81 insertions(+), 75 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index e4ed6c5f5f1d..69ba462f341c 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -5,22 +5,23 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 # 使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 -本文重在介绍如何使用 TiUP no-sudo 模式部署一个 TiDB 线上集群 +本文介绍如何使用 TiUP no-sudo 模式部署一个 TiDB 线上集群。 > **注意:** > -> CentOS 版本限制: CentOS 8 及以后的版本 +> 对于 CentOS 操作系统,仅支持 CentOS 8 及更高版本。 ## 准备用户并配置 SSH 互信 -1. 以 tidb 用户为例,需要依次登录到所有部署目标机器以 `root` 用户使用如下命令创建一个普通用户 `tidb`。在 no-sudo 模式下不需要为 `tidb` 用户配置 sudo 免密,即无需将 `tidb` 用户加入 `sudoers` 中。 + +1. 以`tidb` 用户为例,你需要依次登录到所有部署目标机器,并以 `root` 用户使用如下命令创建一个普通用户 `tidb`。在 no-sudo 模式下不需要为 `tidb` 用户配置 sudo 免密,即无需将 `tidb` 用户加入 `sudoers` 中。 ```bash adduser tidb ``` -2. 在每台部署目标机器上为 `tidb` 用户启动 `systemd user` 模式(重要步骤) +2. 在每台部署目标机器上,为 `tidb` 用户启动 `systemd user` 模式(重要步骤)。 - 1. 使用 `tidb` 用户设置 `XDG_RUNTIME_DIR` 环境变量 + 1. 使用 `tidb` 用户设置 `XDG_RUNTIME_DIR` 环境变量。 ```bash mkdir -p ~/.bashrc.d @@ -28,7 +29,7 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 source ~/.bashrc.d/systemd ``` - 3. 使用 `root` 用户启动 user service + 3. 使用 `root` 用户启动 user service。 ```shell $ systemctl start user@1000.service #1000 is the id of tidb user. You can get the user id by executing id @@ -50,36 +51,38 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 └─3358 /usr/bin/pulseaudio --daemonize=no --log-target=journal ``` - 执行`systemctl --user`,如果没有报错,说明 systemd user 模式已经正常启动。 + 执行 `systemctl --user`。如果没有报错,说明 `systemd user` 模式已经正常启动。 3. 在中控机使用 ssh-keygen 生成密钥,并将公钥复制到其他部署机器完成 SSH 互信。 ## 准备部署拓扑文件 -1. 使用以下 tiup 命令生成拓扑文件 +1. 执行以下 TiUP 命令生成拓扑文件。 ```bash tiup cluster template > topology.yaml ``` -2. 编辑拓扑文件 - - 相比以往的模式,使用 no-sudo 模式的 TiUP 需要在 `topology.yaml` 的 `global` 模块中加上 `systemd_mode: "user"` 这一行,该 `systemd_mode` 参数用于指明是否使用 `systemd user` 模式。如果不设置该参数,其默认值为 `system`,表明需要使用 sudo 权限。此外,no-sudo 模式无法使用 `/data` 目录作为 `deploy_dir` 和 `data_dir`,因为会有权限问题,需要选择一个普通用户可以访问的路径。下方示例使用了相对路径,最终使用的路径为 `/home/tidb/data/tidb-deploy` 和 `/home/tidb/data/tidb-data`。 - 拓扑文件的其余部分与旧版本一致。 - - ```yaml - global: - user: "tidb" - systemd_mode: "user" - ssh_port: 22 - deploy_dir: "data/tidb-deploy" - data_dir: "data/tidb-data" - arch: "amd64" - ... - ``` +2. 编辑拓扑文件。 + + 相比以往的模式,使用 no-sudo 模式的 TiUP 需要在 `topology.yaml` 的 `global` 模块中新增一行 `systemd_mode: "user"`。该 `systemd_mode` 参数用于设置是否使用 `systemd user` 模式。如果不设置该参数,其默认值为 `system`,表示需要使用 sudo 权限。此外,no-sudo 模式无法使用 `/data` 目录作为 `deploy_dir` 和 `data_dir`,因为会有权限问题,你需要选择一个普通用户可以访问的路径。下方示例使用了相对路径,最终使用的路径为 `/home/tidb/data/tidb-deploy` 和 `/home/tidb/data/tidb-data`。 + + 拓扑文件的其余部分与旧版本一致。 + + ```yaml + global: + user: "tidb" + systemd_mode: "user" + ssh_port: 22 + deploy_dir: "data/tidb-deploy" + data_dir: "data/tidb-data" + arch: "amd64" + ... + ``` ## 手动修复检查项 -执行 `tiup cluster check topology.yaml --user tidb` 会有一些失败的检查项,示例: + +执行 `tiup cluster check topology.yaml --user tidb` 会有一些失败的检查项。以下是一个示例: ```bash Node Check Result Message @@ -100,61 +103,61 @@ Node Check Result Message 由于在 no-sudo 模式下,`tidb` 用户没有 sudo 权限,执行 `tiup cluster check topology.yaml --apply --user tidb` 会因为权限不足而无法对失败的检查项进行自动修复,所以需要使用 `root` 用户在部署机器上手动执行以下操作。 -1. 安装 numactl 工具 +1. 安装 numactl 工具。 - ```shell - sudo yum -y install numactl - ``` + ```shell + sudo yum -y install numactl + ``` -2. 关闭 swap +2. 关闭 swap。 - ```shell - swapoff -a || exit 0 - ``` + ```shell + swapoff -a || exit 0 + ``` -3. 禁止透明大页 +3. 禁止透明大页。 - ```shell - echo never > /sys/kernel/mm/transparent_hugepage/enabled - ``` + ```shell + echo never > /sys/kernel/mm/transparent_hugepage/enabled + ``` -4. 开启 irqbalance service +4. 开启 irqbalance service。 - ```shell - systemctl start irqbalance - ``` + ```shell + systemctl start irqbalance + ``` -5. 关闭防火墙以及关闭防火墙自启动 +5. 关闭防火墙以及关闭防火墙自启动。 - ```shell - systemctl stop firewalld.service - systemctl disable firewalld.service - ``` + ```shell + systemctl stop firewalld.service + systemctl disable firewalld.service + ``` -6. 修改 sysctl 参数 - - ```shell - echo "fs.file-max = 1000000">> /etc/sysctl.conf - echo "net.core.somaxconn = 32768">> /etc/sysctl.conf - echo "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.conf - echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf - echo "vm.overcommit_memory = 1">> /etc/sysctl.conf - echo "vm.swappiness = 0">> /etc/sysctl.conf - sysctl -p - ``` +6. 修改 sysctl 参数。 + + ```shell + echo "fs.file-max = 1000000">> /etc/sysctl.conf + echo "net.core.somaxconn = 32768">> /etc/sysctl.conf + echo "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.conf + echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf + echo "vm.overcommit_memory = 1">> /etc/sysctl.conf + echo "vm.swappiness = 0">> /etc/sysctl.conf + sysctl -p + ``` -7. 配置 tidb 用户的 limits.conf 文件 - - ```shell - cat << EOF >>/etc/security/limits.conf - tidb soft nofile 1000000 - tidb hard nofile 1000000 - tidb soft stack 32768 - tidb hard stack 32768 - tidb soft core unlimited - tidb hard core unlimited - EOF - ``` +7. 配置 tidb 用户的 limits.conf 文件。 + + ```shell + cat << EOF >>/etc/security/limits.conf + tidb soft nofile 1000000 + tidb hard nofile 1000000 + tidb soft stack 32768 + tidb hard stack 32768 + tidb soft core unlimited + tidb hard core unlimited + EOF + ``` ## 部署集群 @@ -164,34 +167,37 @@ Node Check Result Message tiup cluster deploy mycluster v8.1.0 topology.yaml --user tidb ``` -启动集群 +启动集群: ```shell tiup cluster start mycluster ``` -扩容集群 +扩容集群: ```shell tiup cluster scale-out mycluster scale.yaml --user tidb ``` -缩容集群 +缩容集群: ```shell tiup cluster scale-in mycluster -N 192.168.124.27:20160 ``` -升级集群 +升级集群: ```shell tiup cluster upgrade mycluster v8.2.0 ``` ## 常见问题 -1. 启动 user@.service 时出现错误:Failed to fully start up daemon: Permission denied - 这可能是因为您的 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。您可以使用以下命令检查 `/etc/pam.d/system-auth.ued` 文件是否已包含 `pam_systemd.so` 模块的配置。如果没有,则将 `session optional pam_systemd.so` 附加到文件末尾。 +### 启动 user@.service 时出现以下错误:`Failed to fully start up daemon: Permission denied` + +该错误的原因可能是因为 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。 + +要解决该问题,你可以使用以下命令检查 `/etc/pam.d/system-auth.ued` 文件是否已包含 `pam_systemd.so` 模块的配置。如果没有,则将 `session optional pam_systemd.so` 附加到文件末尾。 ```shell grep 'pam_systemd.so' /etc/pam.d/system-auth.ued || echo 'session optional pam_systemd.so' >> /etc/pam.d/system-auth.ued diff --git a/tiup/tiup-cluster-topology-reference.md b/tiup/tiup-cluster-topology-reference.md index 14dc0a60fa8d..f913d6a7f943 100644 --- a/tiup/tiup-cluster-topology-reference.md +++ b/tiup/tiup-cluster-topology-reference.md @@ -40,7 +40,7 @@ summary: 介绍通过 TiUP 部署或扩容 TiDB 集群时提供的拓扑文件 - `user`:以什么用户来启动部署的集群,默认值:"tidb",如果 `` 字段指定的用户在目标机器上不存在,会自动尝试创建 - `group`:自动创建用户时指定用户所属的用户组,默认和 `` 字段值相同,若指定的组不存在,则自动创建 -- `systemd_mode`: 部署集群过程中在目标机器上使用的 systemd 模式,默认值为 `system`,若设置为 `user`,则表示在目标机器上不使用 sudo 权限,即使用 TiUP no-sudo 模式。 +- `systemd_mode`: 部署集群过程中在目标机器上使用的 `systemd` 模式,默认值为 `system`。若设置为 `user`,则表示在目标机器上不使用 sudo 权限,即使用 [TiUP no-sudo 模式](/tiup/tiup-cluster-no-sudo-mode.md)。 - `ssh_port`:指定连接目标机器进行操作的时候使用的 SSH 端口,默认值:22 - `enable_tls`:是否对集群启用 TLS。启用之后,组件之间、客户端与组件之间都必须使用生成的 TLS 证书进行连接,默认值:false - `listen_host`:默认使用的监听 IP。如果为空,每个实例会根据其 `host` 字段是否包含 `:` 来自动设置为 `::` 或 `0.0.0.0`。tiup-cluster v1.14.0 引入该配置 From c230ef2b27579a39b329d7cc96c37847b55d625d Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Tue, 11 Feb 2025 11:52:07 +0800 Subject: [PATCH 07/21] Apply suggestions from code review --- tiup/tiup-cluster-no-sudo-mode.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 69ba462f341c..2148f4356b76 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -19,7 +19,7 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 adduser tidb ``` -2. 在每台部署目标机器上,为 `tidb` 用户启动 `systemd user` 模式(重要步骤)。 +2. 在每台部署目标机器上,为 `tidb` 用户启动 `systemd user` 模式。该步骤是必须的,请勿跳过。 1. 使用 `tidb` 用户设置 `XDG_RUNTIME_DIR` 环境变量。 @@ -32,7 +32,7 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 3. 使用 `root` 用户启动 user service。 ```shell - $ systemctl start user@1000.service #1000 is the id of tidb user. You can get the user id by executing id + $ systemctl start user@1000.service #`1000` is the ID of the tidb user. You can get the user ID by executing the `id` command. $ systemctl status user@1000.service user@1000.service - User Manager for UID 1000 Loaded: loaded (/usr/lib/systemd/system/user@.service; static; vendor preset> @@ -65,9 +65,9 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 2. 编辑拓扑文件。 - 相比以往的模式,使用 no-sudo 模式的 TiUP 需要在 `topology.yaml` 的 `global` 模块中新增一行 `systemd_mode: "user"`。该 `systemd_mode` 参数用于设置是否使用 `systemd user` 模式。如果不设置该参数,其默认值为 `system`,表示需要使用 sudo 权限。此外,no-sudo 模式无法使用 `/data` 目录作为 `deploy_dir` 和 `data_dir`,因为会有权限问题,你需要选择一个普通用户可以访问的路径。下方示例使用了相对路径,最终使用的路径为 `/home/tidb/data/tidb-deploy` 和 `/home/tidb/data/tidb-data`。 - - 拓扑文件的其余部分与旧版本一致。 + 相比以往的模式,使用 no-sudo 模式的 TiUP 需要在 `topology.yaml` 的 `global` 模块中新增一行 `systemd_mode: "user"`。该 `systemd_mode` 参数用于设置是否使用 `systemd user` 模式。如果不设置该参数,其默认值为 `system`,表示需要使用 sudo 权限。此外,no-sudo 模式无法使用 `/data` 目录作为 `deploy_dir` 和 `data_dir`,因为会有权限问题,你需要选择一个普通用户可以访问的路径。 + + 以下示例使用了相对路径,最终使用的路径为 `/home/tidb/data/tidb-deploy` 和 `/home/tidb/data/tidb-data`。拓扑文件的其余部分与旧版本一致。 ```yaml global: @@ -101,7 +101,7 @@ Node Check Result Message 192.168.124.27 service Fail service firewalld is running but should be stopped ``` -由于在 no-sudo 模式下,`tidb` 用户没有 sudo 权限,执行 `tiup cluster check topology.yaml --apply --user tidb` 会因为权限不足而无法对失败的检查项进行自动修复,所以需要使用 `root` 用户在部署机器上手动执行以下操作。 +由于在 no-sudo 模式下,`tidb` 用户没有 sudo 权限,执行 `tiup cluster check topology.yaml --apply --user tidb` 会因为权限不足导致无法自动修复失败的检查项,所以需要使用 `root` 用户在部署机器上手动执行以下操作。 1. 安装 numactl 工具。 From 1dda6aee0e5704e379427e77c7f5deb65cdd9480 Mon Sep 17 00:00:00 2001 From: houfaxin Date: Tue, 11 Feb 2025 14:29:06 +0800 Subject: [PATCH 08/21] Update tiup-cluster-no-sudo-mode.md --- tiup/tiup-cluster-no-sudo-mode.md | 58 +++++++++++++++---------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 2148f4356b76..01d7e8af74f0 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -21,35 +21,35 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 2. 在每台部署目标机器上,为 `tidb` 用户启动 `systemd user` 模式。该步骤是必须的,请勿跳过。 - 1. 使用 `tidb` 用户设置 `XDG_RUNTIME_DIR` 环境变量。 + 1. 使用 `tidb` 用户设置 `XDG_RUNTIME_DIR` 环境变量。 - ```bash - mkdir -p ~/.bashrc.d - echo "export XDG_RUNTIME_DIR=/run/user/$(id -u)" > ~/.bashrc.d/systemd - source ~/.bashrc.d/systemd - ``` + ```bash + mkdir -p ~/.bashrc.d + echo "export XDG_RUNTIME_DIR=/run/user/$(id -u)" > ~/.bashrc.d/systemd + source ~/.bashrc.d/systemd + ``` - 3. 使用 `root` 用户启动 user service。 - - ```shell - $ systemctl start user@1000.service #`1000` is the ID of the tidb user. You can get the user ID by executing the `id` command. - $ systemctl status user@1000.service - user@1000.service - User Manager for UID 1000 - Loaded: loaded (/usr/lib/systemd/system/user@.service; static; vendor preset> - Active: active (running) since Mon 2024-01-29 03:30:51 EST; 1min 7s ago - Main PID: 3328 (systemd) - Status: "Startup finished in 420ms." - Tasks: 6 - Memory: 6.1M - CGroup: /user.slice/user-1000.slice/user@1000.service - ├─dbus.service - │ └─3442 /usr/bin/dbus-daemon --session --address=systemd: --nofork > - ├─init.scope - │ ├─3328 /usr/lib/systemd/systemd --user - │ └─3335 (sd-pam) - └─pulseaudio.service + 2. 使用 `root` 用户启动 user service。 + + ```shell + $ systemctl start user@1000.service #`1000` is the ID of the tidb user. You can get the user ID by executing the `id` command. + $ systemctl status user@1000.service + user@1000.service - User Manager for UID 1000 + Loaded: loaded (/usr/lib/systemd/system/user@.service; static; vendor preset> + Active: active (running) since Mon 2024-01-29 03:30:51 EST; 1min 7s ago + Main PID: 3328 (systemd) + Status: "Startup finished in 420ms." + Tasks: 6 + Memory: 6.1M + CGroup: /user.slice/user-1000.slice/user@1000.service + ├─dbus.service + │ └─3442 /usr/bin/dbus-daemon --session --address=systemd: --nofork > + ├─init.scope + │ ├─3328 /usr/lib/systemd/systemd --user + │ └─3335 (sd-pam) + └─pulseaudio.service └─3358 /usr/bin/pulseaudio --daemonize=no --log-target=journal - ``` + ``` 执行 `systemctl --user`。如果没有报错,说明 `systemd user` 模式已经正常启动。 @@ -59,9 +59,9 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 1. 执行以下 TiUP 命令生成拓扑文件。 - ```bash - tiup cluster template > topology.yaml - ``` + ```bash + tiup cluster template > topology.yaml + ``` 2. 编辑拓扑文件。 From 3716a64f3b3d53e8c1d5cd2b6cdf1b9123611965 Mon Sep 17 00:00:00 2001 From: houfaxin Date: Tue, 11 Feb 2025 14:30:26 +0800 Subject: [PATCH 09/21] Update tiup-cluster-no-sudo-mode.md --- tiup/tiup-cluster-no-sudo-mode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 01d7e8af74f0..1b1a4015bf49 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -48,7 +48,7 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 │ ├─3328 /usr/lib/systemd/systemd --user │ └─3335 (sd-pam) └─pulseaudio.service - └─3358 /usr/bin/pulseaudio --daemonize=no --log-target=journal + └─3358 /usr/bin/pulseaudio --daemonize=no --log-target=journal ``` 执行 `systemctl --user`。如果没有报错,说明 `systemd user` 模式已经正常启动。 From e8d44f5af0da904d7db23c0cfac658a5daf7f381 Mon Sep 17 00:00:00 2001 From: houfaxin Date: Tue, 11 Feb 2025 14:48:47 +0800 Subject: [PATCH 10/21] Update tiup-cluster-no-sudo-mode.md --- tiup/tiup-cluster-no-sudo-mode.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 1b1a4015bf49..3a9d94b31e4d 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -13,7 +13,7 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 ## 准备用户并配置 SSH 互信 -1. 以`tidb` 用户为例,你需要依次登录到所有部署目标机器,并以 `root` 用户使用如下命令创建一个普通用户 `tidb`。在 no-sudo 模式下不需要为 `tidb` 用户配置 sudo 免密,即无需将 `tidb` 用户加入 `sudoers` 中。 +1. 以 `tidb` 用户为例,你需要依次登录到所有的部署目标机器,并以 `root` 用户使用如下命令创建一个普通用户 `tidb`。在 no-sudo 模式下,不需要为 `tidb` 用户配置 sudo 免密,即无需将 `tidb` 用户加入 `sudoers` 中。 ```bash adduser tidb @@ -32,7 +32,7 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 2. 使用 `root` 用户启动 user service。 ```shell - $ systemctl start user@1000.service #`1000` is the ID of the tidb user. You can get the user ID by executing the `id` command. + $ systemctl start user@1000.service # `1000` is the ID of the `tidb` user. You can get the user ID by executing the `id` command. $ systemctl status user@1000.service user@1000.service - User Manager for UID 1000 Loaded: loaded (/usr/lib/systemd/system/user@.service; static; vendor preset> @@ -53,7 +53,7 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 执行 `systemctl --user`。如果没有报错,说明 `systemd user` 模式已经正常启动。 -3. 在中控机使用 ssh-keygen 生成密钥,并将公钥复制到其他部署机器完成 SSH 互信。 +3. 在中控机使用 ssh-keygen 生成密钥,并将公钥复制到其他部署机器,完成 SSH 互信。 ## 准备部署拓扑文件 @@ -65,9 +65,9 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 2. 编辑拓扑文件。 - 相比以往的模式,使用 no-sudo 模式的 TiUP 需要在 `topology.yaml` 的 `global` 模块中新增一行 `systemd_mode: "user"`。该 `systemd_mode` 参数用于设置是否使用 `systemd user` 模式。如果不设置该参数,其默认值为 `system`,表示需要使用 sudo 权限。此外,no-sudo 模式无法使用 `/data` 目录作为 `deploy_dir` 和 `data_dir`,因为会有权限问题,你需要选择一个普通用户可以访问的路径。 - - 以下示例使用了相对路径,最终使用的路径为 `/home/tidb/data/tidb-deploy` 和 `/home/tidb/data/tidb-data`。拓扑文件的其余部分与旧版本一致。 + 相比以往的模式,使用 no-sudo 模式的 TiUP 时,需要在 `topology.yaml` 的 `global` 模块中新增一行 `systemd_mode: "user"`。该 `systemd_mode` 参数用于设置是否使用 `systemd user` 模式。如果不设置该参数,其默认值为 `system`,表示需要使用 sudo 权限。 + + 此外,由于 no-sudo 模式下,普通用户 `tidb` 没有权限使用 `/data` 目录作为 `deploy_dir` 和 `data_dir`,因此,你需要选择一个普通用户可以访问的路径。以下示例使用了相对路径,最终使用的路径为 `/home/tidb/data/tidb-deploy` 和 `/home/tidb/data/tidb-data`。拓扑文件的其余部分与旧版本一致。 ```yaml global: @@ -82,7 +82,7 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 ## 手动修复检查项 -执行 `tiup cluster check topology.yaml --user tidb` 会有一些失败的检查项。以下是一个示例: +执行 `tiup cluster check topology.yaml --user tidb` 会产生失败的检查项。示例如下: ```bash Node Check Result Message @@ -101,7 +101,7 @@ Node Check Result Message 192.168.124.27 service Fail service firewalld is running but should be stopped ``` -由于在 no-sudo 模式下,`tidb` 用户没有 sudo 权限,执行 `tiup cluster check topology.yaml --apply --user tidb` 会因为权限不足导致无法自动修复失败的检查项,所以需要使用 `root` 用户在部署机器上手动执行以下操作。 +由于在 no-sudo 模式下,`tidb` 用户没有 sudo 权限,执行 `tiup cluster check topology.yaml --apply --user tidb` 会导致无法自动修复失败的检查项,因此你需要使用 `root` 用户在部署机器上手动执行以下操作。 1. 安装 numactl 工具。 @@ -121,7 +121,7 @@ Node Check Result Message echo never > /sys/kernel/mm/transparent_hugepage/enabled ``` -4. 开启 irqbalance service。 +4. 开启 `irqbalance` service。 ```shell systemctl start irqbalance @@ -146,7 +146,7 @@ Node Check Result Message sysctl -p ``` -7. 配置 tidb 用户的 limits.conf 文件。 +7. 配置 `tidb` 用户的 `limits.conf` 文件。 ```shell cat << EOF >>/etc/security/limits.conf @@ -161,7 +161,7 @@ Node Check Result Message ## 部署集群 -为了使用上述步骤准备好的 `tidb` 用户而避免重新创建新的用户,执行 deploy 命令时需要加上 `--user tidb`,即: +为了使用上述步骤准备好的 `tidb` 用户而避免重新创建新的用户,执行 `deploy` 命令时需要加上 `--user tidb`,即: ```shell tiup cluster deploy mycluster v8.1.0 topology.yaml --user tidb From 83d9203fd33ec52e472576e45f9442efdf13a52b Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Tue, 11 Feb 2025 15:20:37 +0800 Subject: [PATCH 11/21] Update TOC.md --- TOC.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TOC.md b/TOC.md index 6a500e80f91f..ea0e15563824 100644 --- a/TOC.md +++ b/TOC.md @@ -496,7 +496,7 @@ - TiUP 组件文档 - [tiup-playground 运行本地测试集群](/tiup/tiup-playground.md) - [tiup-cluster 部署运维生产集群](/tiup/tiup-cluster.md) - - [tiup-cluster no-sudo 模式部署运维生产集群](/tiup/tiup-cluster-no-sudo-mode.md) + - [使用 no-sudo 模式部署运维生产集群](/tiup/tiup-cluster-no-sudo-mode.md) - [tiup-mirror 定制离线镜像](/tiup/tiup-mirror.md) - [tiup-bench 进行 TPCC/TPCH 压力测试](/tiup/tiup-bench.md) - [TiDB Operator](/tidb-operator-overview.md) From c3ed6a2f462c9e737ce6880e7e5c3a272b3a67ba Mon Sep 17 00:00:00 2001 From: houfaxin Date: Tue, 11 Feb 2025 22:26:43 +0800 Subject: [PATCH 12/21] Update tiup-cluster-no-sudo-mode.md --- tiup/tiup-cluster-no-sudo-mode.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 3a9d94b31e4d..f1918f8fb738 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -159,9 +159,9 @@ Node Check Result Message EOF ``` -## 部署集群 +## 部署和管理集群 -为了使用上述步骤准备好的 `tidb` 用户而避免重新创建新的用户,执行 `deploy` 命令时需要加上 `--user tidb`,即: +为了使用上述步骤准备好的 `tidb` 用户而避免重新创建新的用户,执行 `deploy` 命令时需要加上 `--user tidb`,示例如下: ```shell tiup cluster deploy mycluster v8.1.0 topology.yaml --user tidb From f48dec66749dcdb6d1f6adf140c053dcec8e6bff Mon Sep 17 00:00:00 2001 From: Yujie-Xie <1398010062@qq.com> Date: Fri, 14 Feb 2025 10:48:57 +0800 Subject: [PATCH 13/21] add new command --- tiup/tiup-cluster-no-sudo-mode.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index f1918f8fb738..03cae0335f91 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -51,7 +51,15 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 └─3358 /usr/bin/pulseaudio --daemonize=no --log-target=journal ``` - 执行 `systemctl --user`。如果没有报错,说明 `systemd user` 模式已经正常启动。 + 执行 `systemctl --user`。如果没有报错,说明 `systemd user` 模式已经正常启动。 + + 3. 使用 `root` 用户执行以下命令,为systemd用户实例启用驻留。 + + ```bash + loginctl enable-linger tidb + ``` + + 您可以阅读 systemd 文档 [systemd 用户实例的自动启动](https://wiki.archlinux.org/title/Systemd/User#Automatic_start-up_of_systemd_user_instances)进行参考。 3. 在中控机使用 ssh-keygen 生成密钥,并将公钥复制到其他部署机器,完成 SSH 互信。 From 725810f0cd1271e4d07b391f836f15934cce18c7 Mon Sep 17 00:00:00 2001 From: Yujie-Xie <1398010062@qq.com> Date: Fri, 14 Feb 2025 10:52:55 +0800 Subject: [PATCH 14/21] format optimization --- tiup/tiup-cluster-no-sudo-mode.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 03cae0335f91..03ed87b90b58 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -53,13 +53,13 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 执行 `systemctl --user`。如果没有报错,说明 `systemd user` 模式已经正常启动。 - 3. 使用 `root` 用户执行以下命令,为systemd用户实例启用驻留。 + 3. 使用 `root` 用户执行以下命令,为 systemd 用户实例启用驻留。 ```bash loginctl enable-linger tidb ``` - 您可以阅读 systemd 文档 [systemd 用户实例的自动启动](https://wiki.archlinux.org/title/Systemd/User#Automatic_start-up_of_systemd_user_instances)进行参考。 + 您可以阅读 systemd 文档 [systemd 用户实例的自动启动](https://wiki.archlinux.org/title/Systemd/User#Automatic_start-up_of_systemd_user_instances) 以了解更多。 3. 在中控机使用 ssh-keygen 生成密钥,并将公钥复制到其他部署机器,完成 SSH 互信。 From 78dca1a99794ff293a0a1d7ed40af75c1eff1836 Mon Sep 17 00:00:00 2001 From: Yujie <34276395+Yujie-Xie@users.noreply.github.com> Date: Fri, 14 Feb 2025 11:08:57 +0800 Subject: [PATCH 15/21] Apply suggestions from code review Co-authored-by: xixirangrang --- tiup/tiup-cluster-no-sudo-mode.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 03ed87b90b58..4382f6eb2d2f 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -53,13 +53,13 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 执行 `systemctl --user`。如果没有报错,说明 `systemd user` 模式已经正常启动。 - 3. 使用 `root` 用户执行以下命令,为 systemd 用户实例启用驻留。 + 3. 使用 `root` 用户执行以下命令,为 systemd 用户 `tidb` 启用驻留。 ```bash loginctl enable-linger tidb ``` - 您可以阅读 systemd 文档 [systemd 用户实例的自动启动](https://wiki.archlinux.org/title/Systemd/User#Automatic_start-up_of_systemd_user_instances) 以了解更多。 + 更多详情,请参考 [systemd 用户实例的自动启动](https://wiki.archlinux.org/title/Systemd/User#Automatic_start-up_of_systemd_user_instances)。 3. 在中控机使用 ssh-keygen 生成密钥,并将公钥复制到其他部署机器,完成 SSH 互信。 From 49cd46609e57aadba4606f33e8e1524ad8b2ab88 Mon Sep 17 00:00:00 2001 From: Yujie <34276395+Yujie-Xie@users.noreply.github.com> Date: Fri, 14 Feb 2025 18:09:10 +0800 Subject: [PATCH 16/21] Update tiup/tiup-cluster-no-sudo-mode.md --- tiup/tiup-cluster-no-sudo-mode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 4382f6eb2d2f..8cf840c077b9 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -201,7 +201,7 @@ tiup cluster upgrade mycluster v8.2.0 ## 常见问题 -### 启动 user@.service 时出现以下错误:`Failed to fully start up daemon: Permission denied` +### 启动 user@.service 时出现以下错误:`Trying to run as user instance, but $XDG_RUNTIME_DIR is not set.` 该错误的原因可能是因为 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。 From 4a72fb902b9a969ab8c56aac69d42499159285c5 Mon Sep 17 00:00:00 2001 From: Yujie <34276395+Yujie-Xie@users.noreply.github.com> Date: Wed, 19 Feb 2025 13:35:35 +0800 Subject: [PATCH 17/21] Apply suggestions from code review Co-authored-by: Lilian Lee --- tiup/tiup-cluster-no-sudo-mode.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 8cf840c077b9..9b3f9403532c 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -1,6 +1,6 @@ --- title: 使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 -summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 +summary: 了解如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群。 --- # 使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 @@ -13,7 +13,7 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 ## 准备用户并配置 SSH 互信 -1. 以 `tidb` 用户为例,你需要依次登录到所有的部署目标机器,并以 `root` 用户使用如下命令创建一个普通用户 `tidb`。在 no-sudo 模式下,不需要为 `tidb` 用户配置 sudo 免密,即无需将 `tidb` 用户加入 `sudoers` 中。 +1. 以 `tidb` 用户为例。依次登录所有的部署目标机器,并以 `root` 用户使用如下命令创建一个普通用户 `tidb`。在 no-sudo 模式下,不需要为 `tidb` 用户配置 sudo 免密,即无需将 `tidb` 用户加入 `sudoers` 文件中。 ```bash adduser tidb @@ -51,17 +51,17 @@ summary: 介绍如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群 └─3358 /usr/bin/pulseaudio --daemonize=no --log-target=journal ``` - 执行 `systemctl --user`。如果没有报错,说明 `systemd user` 模式已经正常启动。 + 3. 执行 `systemctl --user`。如果没有报错,说明 `systemd` user 模式已经正常启动。 - 3. 使用 `root` 用户执行以下命令,为 systemd 用户 `tidb` 启用驻留。 +3. 使用 `root` 用户执行以下命令,为 systemd 用户 `tidb` 启用驻留。 - ```bash - loginctl enable-linger tidb - ``` + ```bash + loginctl enable-linger tidb + ``` - 更多详情,请参考 [systemd 用户实例的自动启动](https://wiki.archlinux.org/title/Systemd/User#Automatic_start-up_of_systemd_user_instances)。 + 更多详情,参见 [systemd 用户实例的自动启动](https://wiki.archlinux.org/title/Systemd/User#Automatic_start-up_of_systemd_user_instances)。 -3. 在中控机使用 ssh-keygen 生成密钥,并将公钥复制到其他部署机器,完成 SSH 互信。 +4. 在中控机上使用 `ssh-keygen` 生成密钥,并将公钥复制到其他部署机器,完成 SSH 互信。 ## 准备部署拓扑文件 From ea4106c1752cf80a00749345aa89edc2bea4f075 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Wed, 19 Feb 2025 15:29:48 +0800 Subject: [PATCH 18/21] Update wording --- tiup/tiup-cluster-no-sudo-mode.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 9b3f9403532c..4c9571818409 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -51,7 +51,7 @@ summary: 了解如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群。 └─3358 /usr/bin/pulseaudio --daemonize=no --log-target=journal ``` - 3. 执行 `systemctl --user`。如果没有报错,说明 `systemd` user 模式已经正常启动。 + 3. 执行 `systemctl --user`。如果没有报错,说明 `systemd user` 模式已正常启动。 3. 使用 `root` 用户执行以下命令,为 systemd 用户 `tidb` 启用驻留。 @@ -73,7 +73,7 @@ summary: 了解如何使用 TiUP no-sudo 模式部署运维 TiDB 线上集群。 2. 编辑拓扑文件。 - 相比以往的模式,使用 no-sudo 模式的 TiUP 时,需要在 `topology.yaml` 的 `global` 模块中新增一行 `systemd_mode: "user"`。该 `systemd_mode` 参数用于设置是否使用 `systemd user` 模式。如果不设置该参数,其默认值为 `system`,表示需要使用 sudo 权限。 + 相比以往的模式,使用 no-sudo 模式的 TiUP 时,需要在 `topology.yaml` 的 `global` 模块中新增一行 `systemd_mode: "user"`。`systemd_mode` 参数用于设置是否使用 `systemd user` 模式。如果不设置该参数,其默认值为 `system`,表示需要使用 sudo 权限。 此外,由于 no-sudo 模式下,普通用户 `tidb` 没有权限使用 `/data` 目录作为 `deploy_dir` 和 `data_dir`,因此,你需要选择一个普通用户可以访问的路径。以下示例使用了相对路径,最终使用的路径为 `/home/tidb/data/tidb-deploy` 和 `/home/tidb/data/tidb-data`。拓扑文件的其余部分与旧版本一致。 From 6102cfaa6bfebb80e215b6a97b2826d9e49b79e6 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Wed, 19 Feb 2025 15:36:33 +0800 Subject: [PATCH 19/21] Apply suggestions from code review --- tiup/tiup-cluster-no-sudo-mode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index 4c9571818409..b9c6f2454013 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -109,7 +109,7 @@ Node Check Result Message 192.168.124.27 service Fail service firewalld is running but should be stopped ``` -由于在 no-sudo 模式下,`tidb` 用户没有 sudo 权限,执行 `tiup cluster check topology.yaml --apply --user tidb` 会导致无法自动修复失败的检查项,因此你需要使用 `root` 用户在部署机器上手动执行以下操作。 +由于在 no-sudo 模式下,`tidb` 用户没有 sudo 权限,执行 `tiup cluster check topology.yaml --apply --user tidb` 会导致无法自动修复失败的检查项。你需要使用 `root` 用户在部署机器上手动执行以下操作: 1. 安装 numactl 工具。 From 5076c197ee9e7dba489bfd734bad23fa7ef866ba Mon Sep 17 00:00:00 2001 From: Yujie <34276395+Yujie-Xie@users.noreply.github.com> Date: Wed, 19 Feb 2025 16:01:48 +0800 Subject: [PATCH 20/21] Apply suggestions from code review Co-authored-by: Lilian Lee --- tiup/tiup-cluster-no-sudo-mode.md | 2 +- tiup/tiup-cluster-topology-reference.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index b9c6f2454013..cbd81c846a28 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -203,7 +203,7 @@ tiup cluster upgrade mycluster v8.2.0 ### 启动 user@.service 时出现以下错误:`Trying to run as user instance, but $XDG_RUNTIME_DIR is not set.` -该错误的原因可能是因为 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。 +该错误的原因可能是 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。 要解决该问题,你可以使用以下命令检查 `/etc/pam.d/system-auth.ued` 文件是否已包含 `pam_systemd.so` 模块的配置。如果没有,则将 `session optional pam_systemd.so` 附加到文件末尾。 diff --git a/tiup/tiup-cluster-topology-reference.md b/tiup/tiup-cluster-topology-reference.md index f913d6a7f943..86f22bb4b260 100644 --- a/tiup/tiup-cluster-topology-reference.md +++ b/tiup/tiup-cluster-topology-reference.md @@ -40,7 +40,7 @@ summary: 介绍通过 TiUP 部署或扩容 TiDB 集群时提供的拓扑文件 - `user`:以什么用户来启动部署的集群,默认值:"tidb",如果 `` 字段指定的用户在目标机器上不存在,会自动尝试创建 - `group`:自动创建用户时指定用户所属的用户组,默认和 `` 字段值相同,若指定的组不存在,则自动创建 -- `systemd_mode`: 部署集群过程中在目标机器上使用的 `systemd` 模式,默认值为 `system`。若设置为 `user`,则表示在目标机器上不使用 sudo 权限,即使用 [TiUP no-sudo 模式](/tiup/tiup-cluster-no-sudo-mode.md)。 +- `systemd_mode`:部署集群过程中在目标机器上使用的 `systemd` 模式,默认值为 `system`。若设置为 `user`,则表示在目标机器上不使用 sudo 权限,即使用 [TiUP no-sudo 模式](/tiup/tiup-cluster-no-sudo-mode.md)。 - `ssh_port`:指定连接目标机器进行操作的时候使用的 SSH 端口,默认值:22 - `enable_tls`:是否对集群启用 TLS。启用之后,组件之间、客户端与组件之间都必须使用生成的 TLS 证书进行连接,默认值:false - `listen_host`:默认使用的监听 IP。如果为空,每个实例会根据其 `host` 字段是否包含 `:` 来自动设置为 `::` 或 `0.0.0.0`。tiup-cluster v1.14.0 引入该配置 From d9af02cc44a8e47fc4e776db0dc67aba33069628 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Wed, 19 Feb 2025 16:09:52 +0800 Subject: [PATCH 21/21] Update wording --- tiup/tiup-cluster-no-sudo-mode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tiup/tiup-cluster-no-sudo-mode.md b/tiup/tiup-cluster-no-sudo-mode.md index cbd81c846a28..ff59bf9b143f 100644 --- a/tiup/tiup-cluster-no-sudo-mode.md +++ b/tiup/tiup-cluster-no-sudo-mode.md @@ -201,7 +201,7 @@ tiup cluster upgrade mycluster v8.2.0 ## 常见问题 -### 启动 user@.service 时出现以下错误:`Trying to run as user instance, but $XDG_RUNTIME_DIR is not set.` +### 启动 user@.service 时出现报错 `Trying to run as user instance, but $XDG_RUNTIME_DIR is not set.` 该错误的原因可能是 `/etc/pam.d/system-auth.ued` 文件中缺少 `pam_systemd.so`。