TiUP No-sudo モードを使用してオンライン TiDBクラスタをデプロイおよび管理
このドキュメントでは、 TiUP no-sudo モードを使用してクラスターをデプロイする方法について説明します。
注記:
CentOS の場合、CentOS 8 以降のバージョンのみがサポートされます。
ユーザーを準備し、SSH相互信頼を構成する
このドキュメントでは、 tidbユーザーを例に挙げます。
すべてのターゲット マシンに
rootユーザーとしてログインし、tidbという名前のユーザーを作成し、このユーザーのシステム リソース制限を次のように構成します。注記:
no-sudo モードでは、
tidbユーザーに対してパスワードなしの sudo を構成する必要はありません。つまり、tidbユーザーをsudoersファイルに追加する必要はありません。tidbユーザーを追加します:adduser tidbtidbユーザーのリソース制限を構成します。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のsystemd userモードを起動します。この手順は必須ですので、スキップしないでください。tidbユーザーを使用してXDG_RUNTIME_DIR環境変数を設定します。sudo -iu tidb # Switch to the tidb user mkdir -p ~/.bashrc.d echo "export XDG_RUNTIME_DIR=/run/user/$(id -u)" > ~/.bashrc.d/systemd source ~/.bashrc.d/systemdrootユーザーを使用してユーザー サービスを開始します。$ uid=$(id -u tidb) # Get the ID of the tidb user $ systemctl start user@${uid}.service $ systemctl status user@${uid}.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=journalsystemctl --user実行します。エラーが発生しない場合は、systemd userモードが正常に開始されたことを示します。
rootユーザーを使用して次のコマンドを実行し、 systemd ユーザーtidbの lingering を有効にします。loginctl enable-linger tidb loginctl show-user -p Linger tidb # This should show: Linger=yes参考として、systemd のドキュメントsystemd ユーザーインスタンスの自動起動読んでみてください。
制御マシンで
ssh-keygen使用してキーを生成します。ssh-keygenSSH 信頼を確立するには、公開キーをクラスター内の他のマシンにコピーします。
tidbユーザーにパスワードを設定している場合は、ssh-copy-idコマンドを使用して公開キーをターゲット マシンにコピーできます。ssh-copy-id tidb@hosthostターゲット マシンのホスト名に置き換え、クラスター内の他の各マシンでこのコマンドを実行する必要があります。別の方法で公開鍵をコピーする場合は、コピー後に
/home/tidb/.ssh/authorized_keysファイルの権限を必ず確認してください。chown -R tidb:tidb /home/tidb/.ssh/authorized_keys chmod 600 /home/tidb/.ssh/authorized_keys
トポロジファイルを準備する
次のコマンドを実行してトポロジ ファイルを生成します。
tiup cluster template > topology.yamlトポロジ ファイルを編集します。
通常モードと比較して、 TiUPをno-sudoモードで使用する場合は、
topology.yamlファイルのglobalモジュールにsystemd_mode: "user"行目を追加する必要があります。7パラメータsystemd_mode、systemd userモードを使用するかどうかを設定するために使用されます。このパラメータが設定されていない場合、デフォルト値はsystemで、sudo権限が必要であることを意味します。さらに、no-sudoモードでは、非rootユーザー
tidbは/dataディレクトリをdeploy_dirまたはdata_dirとして使用する権限がないため、非rootユーザーがアクセスできるパスを選択する必要があります。以下の例では相対パスを使用しており、実際に使用されるパスは/home/tidb/data/tidb-deployと/home/tidb/data/tidb-dataです。トポロジファイルの残りの部分は、通常モードと同じです。別の方法として、rootユーザーを使用してディレクトリを作成し、その後chownを使用して所有権をtidb:tidbに変更することもできます。global: user: "tidb" systemd_mode: "user" ssh_port: 22 deploy_dir: "data/tidb-deploy" data_dir: "data/tidb-data" arch: "amd64" ...
失敗したチェック項目を手動で修復する
注記:
最小インストールを使用する場合は、
tarパッケージがインストールされていることを確認してください。インストールされていない場合、tiup cluster checkコマンドは失敗します。
tiup cluster check topology.yaml --user tidb実行すると、いくつかのチェック項目が失敗する可能性があります。以下に例を示します。
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ユーザーを使用して手動で修正する必要があります。
詳細については、 TiDB環境とシステムコンフィグレーションのチェック参照してください。ドキュメントの手順SSH相互信頼とパスワードなしのsudoを手動で設定するスキップする必要があることに注意してください。
クラスターのデプロイと管理
前の手順で作成したtidbユーザーを使用し、新しいユーザーを作成しないようにするには、次のdeployコマンドを実行するときに--user tidb追加します。
tiup cluster deploy mycluster v8.5.0 topology.yaml --user tidb
注記:
上記のコマンドの
v8.5.0、デプロイする TiDB バージョンに置き換え、myclusterクラスターに付ける名前に置き換える必要があります。
クラスターを起動します。
tiup cluster start mycluster
クラスターをスケールアウトします。
tiup cluster scale-out mycluster scale.yaml --user tidb
クラスターのスケールイン:
tiup cluster scale-in mycluster -N 192.168.124.27:20160
クラスターをアップグレードします。
tiup cluster upgrade mycluster v8.2.0
FAQ
<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モジュールが含まれているかどうかを確認します。含まれていない場合は、ファイルの末尾にsession optional pam_systemd.so追加します。
grep 'pam_systemd.so' /etc/pam.d/system-auth.ued || echo 'session optional pam_systemd.so' >> /etc/pam.d/system-auth.ued