📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

TiUP No-sudo モードを使用してオンライン TiDBクラスタをデプロイおよび管理

このドキュメントでは、 TiUP no-sudo モードを使用してクラスターをデプロイする方法について説明します。

注記:

CentOS の場合、CentOS 8 以降のバージョンのみがサポートされます。

ユーザーを準備し、SSH相互信頼を構成する

このドキュメントでは、 tidbユーザーを例に挙げます。

  1. すべてのターゲット マシンにrootユーザーとしてログインし、 tidbという名前のユーザーを作成し、このユーザーのシステム リソース制限を次のように構成します。

    注記:

    no-sudo モードでは、 tidbユーザーに対してパスワードなしの sudo を構成する必要はありません。つまり、 tidbユーザーをsudoersファイルに追加する必要はありません。

    1. tidbユーザーを追加します:

      adduser tidb
    2. tidbユーザーのリソース制限を構成します。

      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
  2. 各ターゲットマシンで、ユーザーtidbsystemd userモードを起動します。この手順は必須ですので、スキップしないでください。

    1. 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/systemd
    2. rootユーザーを使用してユーザー サービスを開始します。

      $ 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=journal
    3. systemctl --user実行します。エラーが発生しない場合は、 systemd userモードが正常に開始されたことを示します。

  3. rootユーザーを使用して次のコマンドを実行し、 systemd ユーザーtidbの lingering を有効にします。

    loginctl enable-linger tidb loginctl show-user -p Linger tidb # This should show: Linger=yes

    参考として、systemd のドキュメントsystemd ユーザーインスタンスの自動起動読んでみてください。

  4. 制御マシンでssh-keygen使用してキーを生成します。

    ssh-keygen
  5. SSH 信頼を確立するには、公開キーをクラスター内の他のマシンにコピーします。

    • tidbユーザーにパスワードを設定している場合は、 ssh-copy-idコマンドを使用して公開キーをターゲット マシンにコピーできます。

      ssh-copy-id tidb@host

      hostターゲット マシンのホスト名に置き換え、クラスター内の他の各マシンでこのコマンドを実行する必要があります。

    • 別の方法で公開鍵をコピーする場合は、コピー後に/home/tidb/.ssh/authorized_keysファイルの権限を必ず確認してください。

      chown -R tidb:tidb /home/tidb/.ssh/authorized_keys chmod 600 /home/tidb/.ssh/authorized_keys

トポロジファイルを準備する

  1. 次のコマンドを実行してトポロジ ファイルを生成します。

    tiup cluster template > topology.yaml
  2. トポロジ ファイルを編集します。

    通常モードと比較して、 TiUPをno-sudoモードで使用する場合は、 topology.yamlファイルのglobalモジュールにsystemd_mode: "user"行目を追加する必要があります。7パラメータsystemd_modesystemd 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

このページは役に立ちましたか?