TiUP No-sudo モードを使用してオンライン TiDBクラスタをデプロイおよび管理
このドキュメントでは、 TiUP no-sudo モードを使用してクラスターをデプロイする方法について説明します。
注記:
CentOS の場合、CentOS 8 以降のバージョンのみがサポートされます。
ユーザーを準備し、SSH相互信頼を構成する
tidbユーザーを例に挙げます。すべてのターゲット マシンにログインし、次のコマンドでrootユーザーを使用してtidbという名前のユーザーを作成します。no-sudo モードでは、tidbユーザーに対してパスワードなしの sudo を構成する必要はありません。つまり、tidbユーザーをsudoersファイルに追加する必要はありません。adduser tidb各ターゲット マシンで
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 モードでは、非ルート
tidbユーザーに/dataディレクトリをdeploy_dirまたはdata_dirとして使用する権限がないため、非ルート ユーザーがアクセスできるパスを選択する必要があります。次の例では相対パスを使用しており、実際に使用されるパスは/home/tidb/data/tidb-deployと/home/tidb/data/tidb-dataです。トポロジ ファイルの残りの部分は、通常モードの場合と同じです。別のオプションとして、ルート ユーザーを使用してディレクトリを作成し、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