tiup cluster check
正式な本番環境では、環境が稼働する前に、一連のチェックを実行して、クラスターが最高のパフォーマンスを発揮していることを確認する必要があります。手動チェック手順を簡素化するために、 TiUP クラスタ は、指定されたクラスターのターゲット マシンのハードウェアおよびソフトウェア環境が正常に動作するための要件を満たしているかどうかを確認するcheck
コマンドを提供します。
チェック項目一覧
オペレーティング システムのバージョン
展開されたマシンのオペレーティング システムのディストリビューションとバージョンを確認します。サポートされているバージョンの一覧については、 OSおよびプラットフォームの要件参照してください。
CPU EPOLLEX限定
対象マシンのCPUがEPOLLEXCLUSIVEをサポートしているかどうかを確認します。
ヌマクトル
ターゲット マシンにnumactl
インストールされているかどうかを確認します。ターゲット マシンに結合コアが設定されている場合は、 numactl
インストールする必要があります。
システム時間
対象マシンのシステム時刻が同期されているかどうかを確認します。対象マシンのシステム時刻と中央制御マシンのシステム時刻を比較し、偏差が一定のしきい値(500 ミリ秒)を超える場合はエラーを報告します。
システムのタイムゾーン
対象マシンのシステム タイム ゾーンが同期されているかどうかを確認します。これらのマシンのタイム ゾーン構成を比較し、タイム ゾーンが一致していない場合はエラーを報告します。
時刻同期サービス
ターゲット マシンで時刻同期サービスが設定されているかどうかを確認します。つまり、ntpd が実行されているかどうかを確認します。
スワップパーティション
ターゲット マシンでスワップ パーティションが有効になっているかどうかを確認します。スワップ パーティションを無効にすることをお勧めします。
カーネルパラメータ
次のカーネル パラメータの値を確認します。
net.ipv4.tcp_tw_recycle
: 0net.ipv4.tcp_syncookies
: 0net.core.somaxconn
: 32768vm.swappiness
: 0vm.overcommit_memory
: 0 または 1fs.file-max
: 1000000
透過的な巨大ページ (THP)
ターゲット マシンで THP が有効になっているかどうかを確認します。THP を無効にすることをお勧めします。
システム制限
/etc/security/limits.conf
ファイルの制限値を確認します。
<deploy-user> soft nofile 1000000
<deploy-user> hard nofile 1000000
<deploy-user> soft stack 10240
<deploy-user>
は TiDB クラスターを展開して実行するユーザーであり、最後の列はシステムに必要な最小値です。
カーネル
SELinux を無効にするか、許可モードに設定する必要があります。現在のステータスを確認するには、 強制取得(8)ユーティリティを使用します。
SELinux が無効になっていない場合は、 /etc/selinux/config
ファイルを開き、 SELINUX=
で始まる行を見つけて、 SELINUX=disabled
に変更します。この変更を行った後、システムを再起動する必要があります。再起動しないと、 enforcing
またはpermissive
からdisabled
への切り替えは有効にならないためです。
一部のシステム (Ubuntu など) では、 /etc/selinux/config
ファイルが存在せず、getenforce ユーティリティがインストールされていない可能性があります。その場合は、この手順をスキップできます。
ファイアウォール
FirewallD サービスが有効になっているかどうかを確認します。FirewallD サービスを無効にするか、TiDB クラスター内の各サービスに権限ルールを追加することをお勧めします。
irqバランス
irqbalance サービスが有効になっているかどうかを確認します。irqbalance サービスを有効にすることをお勧めします。
ディスクマウントオプション
ext4 パーティションのマウント オプションを確認します。マウント オプションに nodelalloc オプションと noatime オプションが含まれていることを確認します。
ポートの使用
トポロジで定義されているポート (自動補完のデフォルト ポートを含む) が、ターゲット マシン上のプロセスによってすでに使用されているかどうかを確認します。
注記:
ポート使用状況チェックでは、クラスターがまだ起動されていないことを前提としています。クラスターがすでにデプロイされ起動されている場合、ポートは使用中であるはずなので、クラスターでのポート使用状況チェックは失敗します。
CPUコア数
対象マシンの CPU 情報を確認します。本番クラスターの場合、CPU 論理コアの数は 16 以上が推奨されます。
注記:
CPU コア数はデフォルトではチェックされません。チェックを有効にするには、コマンドに
-enable-cpu
オプションを追加する必要があります。
メモリサイズ
対象マシンのメモリサイズを確認します。本番クラスターの場合、合計メモリ容量は 32 GB 以上が推奨されます。
注記:
メモリ サイズはデフォルトではチェックされません。チェックを有効にするには、コマンドに
-enable-mem
オプションを追加する必要があります。
Fioディスクパフォーマンステスト
フレキシブル I/O テスター (fio) を使用して、次の 3 つのテスト項目を含む、 data_dir
が配置されているディスクのパフォーマンスをテストします。
- fio_randread_write_latency
- fio_randread_write
- fio_randread
注記:
fio ディスク パフォーマンス テストはデフォルトでは実行されません。テストを実行するには、コマンドに
-enable-disk
オプションを追加する必要があります。
構文
tiup cluster check <topology.yml | cluster-name> [flags]
- クラスターがまだデプロイされていない場合は、クラスターをデプロイするために使用されるトポロジー.ymlファイルを渡す必要があります。このファイルの内容に従って、 tiup-cluster は対応するマシンに接続してチェックを実行します。
- クラスターがすでにデプロイされている場合は、チェック オブジェクトとして
<cluster-name>
使用できます。 - 既存のクラスターのスケールアウト YAML ファイルをチェックする場合は、チェック オブジェクトとして
<scale-out.yml>
と<cluster-name>
両方を使用できます。
注記:
チェックに
<cluster-name>
使用する場合は、コマンドに--cluster
オプションを追加する必要があります。
オプション
- 適用する
- 失敗したチェック項目を自動的に修復しようとします。現在、 tiup-cluster は次のチェック項目のみを修復しようとします。
- カーネル
- ファイアウォール
- irqバランス
- カーネルパラメータ
- システム制限
- THP (透過的な巨大ページ)
- データ型:
BOOLEAN
- このオプションは、値
false
でデフォルトで無効になっています。このオプションを有効にするには、このオプションをコマンドに追加し、値true
を渡すか、値を渡さないようにします。
注記:
tiup cluster check
、次のコマンド形式を使用して、既存のクラスターのscale-out.yml
ファイルの修復もサポートされています。
tiup cluster check <cluster-name> scale-out.yml --cluster --apply --user root [-p] [-i /home/root/.ssh/gcp_rsa]
- クラスタ
チェックがデプロイ済みのクラスターに対するものであることを示します。
データ型:
BOOLEAN
このオプションは、値
false
でデフォルトで無効になっています。このオプションを有効にするには、このオプションをコマンドに追加し、値true
を渡すか、値を渡さないようにします。コマンド形式:
tiup cluster check <topology.yml | cluster-name> --cluster [flags]
注記:
tiup cluster check <cluster-name>
コマンドを使用する場合は、--cluster
オプションtiup cluster check <cluster-name> --cluster
追加する必要があります。
tiup cluster check
では、次のコマンド形式を使用して、既存のクラスターのscale-out.yml
ファイルをチェックすることもサポートされています。
tiup cluster check <cluster-name> scale-out.yml --cluster --user root [-p] [-i /home/root/.ssh/gcp_rsa]
-N、--ノード
- チェックするノードを指定します。このオプションの値は、ノード ID のコンマ区切りリストです。ノード ID は、
tiup cluster display
コマンドによって返されるクラスター ステータス テーブルの最初の列から取得できます。 - データ型:
STRINGS
- コマンドでこのオプションが指定されていない場合、デフォルトですべてのノードがチェックされます。
注記:
-R, --role
オプションを同時に指定した場合は、-N, --node
と-R, --role
両方の指定に一致するサービス ノードのみがチェックされます。
-R, --役割
- チェックするロールを指定します。このオプションの値は、ノード ロールのコンマ区切りリストです。1
tiup cluster display
によって返されるクラスター ステータス テーブルの 2 番目の列からノードのロールを取得できます。 - データ型:
STRINGS
- コマンドでこのオプションが指定されていない場合、すべてのロールがデフォルトでチェックされます。
注記:
-N, --node
オプションを同時に指定した場合は、-N, --node
と-R, --role
両方の指定に一致するサービス ノードのみがチェックされます。
--CPUを有効にする
- CPU コア数のチェックを有効にします。
- データ型:
BOOLEAN
- このオプションは、値
false
でデフォルトで無効になっています。このオプションを有効にするには、このオプションをコマンドに追加し、値true
を渡すか、値を渡さないようにします。
--ディスクを有効にする
- fio ディスク パフォーマンス テストを有効にします。
- データ型:
BOOLEAN
- このオプションは、値
false
でデフォルトで無効になっています。このオプションを有効にするには、このオプションをコマンドに追加し、値true
を渡すか、値を渡さないようにします。
--enable-mem
- メモリサイズのチェックを有効にします。
- データ型:
BOOLEAN
- このオプションは、値
false
でデフォルトで無効になっています。このオプションを有効にするには、このオプションをコマンドに追加し、値true
を渡すか、値を渡さないようにします。
--u、--ユーザー
- ターゲット マシンに接続するためのユーザー名を指定します。指定されたユーザーは、ターゲット マシン上でパスワード不要の sudo ルート権限を持っている必要があります。
- データ型:
STRING
- このオプションがコマンドで指定されていない場合は、コマンドを実行するユーザーがデフォルト値として使用されます。
注記:
このオプションは、
-cluster
オプションが false の場合にのみ有効です。それ以外の場合、このオプションの値は、クラスター展開のトポロジ ファイルに指定されたユーザー名に固定されます。
-i, --identity_file
- ターゲット マシンに接続するためのキー ファイルを指定します。
- データ型:
STRING
- このオプションは、
~/.ssh/id_rsa
(デフォルト値) が渡されるとデフォルトで有効になります。
注記:
このオプションは、
--cluster
オプションが false の場合にのみ有効です。それ以外の場合、このオプションの値は${TIUP_HOME}/storage/cluster/clusters/<cluster-name>/ssh/id_rsa
に固定されます。
-p, --パスワード
- ターゲットマシンに接続するときにパスワードを使用してログインします。
- クラスターに
--cluster
オプションが追加された場合、パスワードはクラスターがデプロイされたときにトポロジ ファイルで指定されたユーザーのパスワードになります。 - クラスターにオプション
--cluster
追加されていない場合、パスワードはオプション-u/--user
で指定されたユーザーのパスワードになります。
- クラスターに
- データ型:
BOOLEAN
- このオプションは、値
false
でデフォルトで無効になっています。このオプションを有効にするには、このオプションをコマンドに追加し、値true
を渡すか、値を渡さないようにします。
-h, --help
- 関連するコマンドのヘルプ情報を出力します。
- データ型:
BOOLEAN
- このオプションは、値
false
でデフォルトで無効になっています。このオプションを有効にするには、このオプションをコマンドに追加し、値true
を渡すか、値を渡さないようにします。
出力
次のフィールドを含むテーブル:
Node
: ターゲットノードCheck
: チェック項目Result
: チェック結果 (合格、警告、不合格)Message
: 結果の説明