TiUPを使用した DMクラスタ展開のトポロジコンフィグレーションファイル
TiDBデータ移行(DM)クラスターをデプロイまたは拡張するには、クラスタートポロジを記述するトポロジファイル( サンプル )を提供する必要があります。
同様に、クラスター トポロジを変更するには、トポロジ ファイルを変更する必要があります。違いは、クラスターがデプロイされた後は、トポロジ ファイル内のフィールドの一部しか変更できないことです。このドキュメントでは、トポロジ ファイルの各セクションと、各セクションの各フィールドについて説明します。
ファイル構造
TiUPを使用した DM クラスターの展開のトポロジ構成ファイルには、次のセクションが含まれる場合があります。
- グローバル : クラスターのグローバル構成。構成項目の一部はクラスターのデフォルト値を使用し、各インスタンスで個別に構成できます。
- サーバー構成 : コンポーネントのグローバル構成。各コンポーネントを個別に構成できます。インスタンスに同じキーの構成項目がある場合は、インスタンスの構成項目が有効になります。
- マスターサーバー : DM マスター インスタンスの構成。この構成では、DMコンポーネントのマスター サービスがデプロイされるマシンを指定します。
- ワーカーサーバー : DM ワーカー インスタンスの構成。この構成では、DMコンポーネントのワーカー サービスがデプロイされるマシンを指定します。
- 監視サーバー : Prometheus インスタンスがデプロイされるマシンを指定します。TiUPは複数の Prometheus インスタンスのデプロイをサポートしていますが、最初のインスタンスのみが使用されます。
- グラファナサーバー : Grafana インスタンスの構成。構成では、Grafana インスタンスがデプロイされるマシンを指定します。
- アラートマネージャサーバー : Alertemanager インスタンスの構成。構成では、Alertmanager インスタンスがデプロイされるマシンを指定します。
global
globalセクションはクラスターのグローバル構成に対応し、次のフィールドがあります。
user: デプロイされたクラスターを起動するユーザー。デフォルト値は「tidb」です。2<user>に指定されたユーザーがターゲット マシンに存在しない場合、 TiUP は自動的にユーザーの作成を試みます。group: ユーザーが自動的に作成されるときにユーザーが属するユーザー グループ。デフォルト値は<user>フィールドと同じです。指定されたグループが存在しない場合は、自動的に作成されます。ssh_port: 操作のためにターゲットマシンに接続するための SSH ポート。デフォルト値は「22」です。deploy_dir: 各コンポーネントのデプロイメント ディレクトリ。デフォルト値は「deploy」です。構築ルールは次のとおりです。- 絶対パス
deploy_dirがインスタンス レベルで構成されている場合、実際のデプロイメント ディレクトリはインスタンスに構成されているdeploy_dirになります。 - 各インスタンスに対して
deploy_dir設定しない場合、デフォルト値は相対パス<component-name>-<component-port>になります。 global.deploy_dirが絶対パスに設定されている場合、コンポーネントは<global.deploy_dir>/<instance.deploy_dir>ディレクトリにデプロイされます。global.deploy_dir相対パスに設定されている場合、コンポーネントは/home/<global.user>/<global.deploy_dir>/<instance.deploy_dir>ディレクトリにデプロイされます。
- 絶対パス
data_dir: データディレクトリ。デフォルト値は「data」です。構築ルールは次のとおりです。- 絶対パス
data_dirがインスタンス レベルで構成されている場合、実際のデータ ディレクトリはインスタンスに構成されているdata_dirになります。 - 各インスタンスで
data_dirが設定されていない場合、デフォルト値は<global.data_dir>なります。 data_dirが相対パスに設定されている場合、コンポーネントデータは<deploy_dir>/<data_dir>に保存されます。<deploy_dir>の構築ルールについては、deploy_dirフィールドの構築ルールを参照してください。
- 絶対パス
log_dir: データディレクトリ。デフォルト値は「log」です。構築ルールは次のとおりです。- インスタンス レベルで絶対パス
log_dirが設定されている場合、実際のログ ディレクトリはインスタンスに設定されているlog_dirになります。 - 各インスタンスについて、ユーザーが
log_dir設定しない場合、デフォルト値は<global.log_dir>なります。 log_dir相対パスの場合、コンポーネントログは<deploy_dir>/<log_dir>に保存されます。<deploy_dir>の構築ルールについては、deploy_dirフィールドの構築ルールを参照してください。
- インスタンス レベルで絶対パス
os: ターゲット マシンのオペレーティング システム。このフィールドは、ターゲット マシンにプッシュされるコンポーネントをどのオペレーティング システムに適合させるかを制御します。デフォルト値は「linux」です。arch: ターゲット マシンの CPUアーキテクチャ。このフィールドは、ターゲット マシンにプッシュされるバイナリ パッケージをどのプラットフォームに適合させるかを制御します。サポートされている値は「amd64」と「arm64」です。デフォルト値は「amd64」です。resource_control: ランタイム リソース制御。このフィールドのすべての設定は、systemd のサービス ファイルに書き込まれます。デフォルトでは制限はありません。制御できるリソースは次のとおりです。memory_limit: 実行時に最大メモリを制限します。たとえば、「2G」は最大 2 GB のメモリが使用できることを意味します。cpu_quota: 実行時の最大 CPU 使用率を制限します。たとえば、「200%」などです。io_read_bandwidth_max: ディスク読み取りの最大 I/O 帯域幅を制限します。たとえば、"/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0:0 100M"です。io_write_bandwidth_max: ディスク書き込みの最大 I/O 帯域幅を制限します。たとえば、"/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0:0 100M"です。limit_core: コアダンプのサイズを制御します。
global構成例:
global:
user: "tidb"
resource_control:
memory_limit: "2G"
この例では、構成では、クラスターを起動するためにtidbユーザーが使用され、各コンポーネントの実行時に最大 2 GB のメモリに制限されることが指定されています。
server_configs
server_configs 、サービスを設定し、各コンポーネントの設定ファイルを生成するために使用されます。 globalセクションと同様に、 server_configsセクションの設定は、インスタンス内の同じキーを持つ設定によって上書きできます。 server_configsには主に次のフィールドが含まれます。
master: DM マスター サービスに関連する構成。サポートされているすべての構成項目については、 DMマスターコンフィグレーションファイル参照してください。worker: DM ワーカー サービスに関連する構成。サポートされているすべての構成項目については、 DM-workerコンフィグレーションファイル参照してください。
server_configs構成例は次のとおりです。
server_configs:
master:
log-level: info
rpc-timeout: "30s"
rpc-rate-limit: 10.0
rpc-rate-burst: 40
worker:
log-level: info
master_servers
master_servers DMコンポーネントのマスター ノードがデプロイされるマシンを指定します。各マシンのサービス構成を指定することもできますmaster_serversは配列です。各配列要素には、次のフィールドが含まれます。
host: デプロイ先のマシンを指定します。フィールド値は IP アドレスであり、必須です。ssh_port: 操作のためにターゲット マシンに接続するための SSH ポートを指定します。フィールドが指定されていない場合は、セクションglobalのssh_port使用されます。name: DM マスター インスタンスの名前を指定します。名前はインスタンスごとに一意である必要があります。そうでない場合、クラスターをデプロイできません。port: DM マスターがサービスを提供するポートを指定します。デフォルト値は「8261」です。peer_port: DM マスター間の通信用のポートを指定します。デフォルト値は「8291」です。deploy_dir: デプロイメント ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、デプロイメント ディレクトリはglobalセクションのdeploy_dir構成に従って生成されます。data_dir: データ ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、データ ディレクトリはglobalセクションのdata_dir構成に従って生成されます。log_dir: ログ ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、ログ ディレクトリはglobalセクションのlog_dir構成に従って生成されます。numa_node: インスタンスに NUMA ポリシーを割り当てます。このフィールドを指定する前に、ターゲット マシンにヌマクトルインストールされていることを確認する必要があります。このフィールドを指定すると、cpubind および membind ポリシーはヌマクトル使用して割り当てられます。このフィールドは文字列型です。フィールド値は、"0,1" などの NUMA ノードの ID です。config: このフィールドの設定ルールは、セクションserver_configsのmasterと同じです。6 が指定された場合、セクションconfigconfig設定がserver_configsmasterの設定とマージされ (2 つのフィールドが重複している場合は、このフィールドの設定が有効になります)、設定ファイルが生成され、セクションhostで指定されたマシンに配布されます。os:hostフィールドで指定されたマシンのオペレーティング システム。フィールドが指定されていない場合、デフォルト値はglobalセクションで構成されたos値になります。arch:hostフィールドで指定されたマシンのアーキテクチャ。フィールドが指定されていない場合、デフォルト値はglobalセクションで構成されたarch値になります。resource_control: このサービスに対するリソース制御。このフィールドが指定された場合、このフィールドの設定はセクションglobalのresource_controlの設定とマージされ (2 つのフィールドが重複している場合は、このフィールドの設定が有効になります)、systemd の設定ファイルが生成され、セクションhostで指定されたマシンに配布されます。このフィールドの設定ルールは、セクションglobalのresource_controlと同じです。v1_source_path: v1.0.x からアップグレードする場合、このフィールドに V1 ソースの構成ファイルが配置されているディレクトリを指定できます。
master_serversセクションでは、デプロイメントが完了した後は、次のフィールドを変更することはできません。
hostnameportpeer_portdeploy_dirdata_dirlog_dirarchosv1_source_path
master_servers構成例は次のとおりです。
master_servers:
- host: 10.0.1.11
name: master1
ssh_port: 22
port: 8261
peer_port: 8291
deploy_dir: "/dm-deploy/dm-master-8261"
data_dir: "/dm-data/dm-master-8261"
log_dir: "/dm-deploy/dm-master-8261/log"
numa_node: "0,1"
# The following configs are used to overwrite the `server_configs.master` values.
config:
log-level: info
rpc-timeout: "30s"
rpc-rate-limit: 10.0
rpc-rate-burst: 40
- host: 10.0.1.18
name: master2
- host: 10.0.1.19
name: master3
worker_servers
worker_servers DMコンポーネントのマスター ノードがデプロイされるマシンを指定します。各マシンのサービス構成を指定することもできますworker_serversは配列です。各配列要素には、次のフィールドが含まれます。
host: デプロイ先のマシンを指定します。フィールド値は IP アドレスであり、必須です。ssh_port: 操作のためにターゲット マシンに接続するための SSH ポートを指定します。フィールドが指定されていない場合は、セクションglobalのssh_port使用されます。name: DM ワーカー インスタンスの名前を指定します。名前はインスタンスごとに一意である必要があります。そうでない場合、クラスターをデプロイできません。port: DM-worker がサービスを提供するポートを指定します。デフォルト値は「8262」です。deploy_dir: デプロイメント ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、デプロイメント ディレクトリはglobalセクションのdeploy_dir構成に従って生成されます。data_dir: データ ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、データ ディレクトリはglobalセクションのdata_dir構成に従って生成されます。log_dir: ログ ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、ログ ディレクトリはglobalセクションのlog_dir構成に従って生成されます。numa_node: インスタンスに NUMA ポリシーを割り当てます。このフィールドを指定する前に、ターゲット マシンにヌマクトルインストールされていることを確認する必要があります。このフィールドを指定すると、cpubind および membind ポリシーはヌマクトル使用して割り当てられます。このフィールドは文字列型です。フィールド値は、"0,1" などの NUMA ノードの ID です。config: このフィールドの設定ルールは、セクションserver_configsのworkerと同じです。6 が指定された場合、セクションconfigconfig設定がserver_configsworkerの設定とマージされ (2 つのフィールドが重複している場合は、このフィールドの設定が有効になります)、設定ファイルが生成され、セクションhostで指定されたマシンに配布されます。os:hostフィールドで指定されたマシンのオペレーティング システム。フィールドが指定されていない場合、デフォルト値はglobalセクションで構成されたos値になります。arch:hostフィールドで指定されたマシンのアーキテクチャ。フィールドが指定されていない場合、デフォルト値はglobalセクションで構成されたarch値になります。resource_control: このサービスに対するリソース制御。このフィールドが指定された場合、このフィールドの設定はセクションglobalのresource_controlの設定とマージされ (2 つのフィールドが重複している場合は、このフィールドの設定が有効になります)、systemd の設定ファイルが生成され、セクションhostで指定されたマシンに配布されます。このフィールドの設定ルールは、セクションglobalのresource_controlと同じです。
worker_serversセクションでは、デプロイメントが完了した後は、次のフィールドを変更することはできません。
hostnameportdeploy_dirdata_dirlog_dirarchos
worker_servers構成例は次のとおりです。
worker_servers:
- host: 10.0.1.12
ssh_port: 22
port: 8262
deploy_dir: "/dm-deploy/dm-worker-8262"
log_dir: "/dm-deploy/dm-worker-8262/log"
numa_node: "0,1"
# config is used to overwrite the `server_configs.worker` values
config:
log-level: info
- host: 10.0.1.19
monitoring_servers
monitoring_servers Prometheus サービスがデプロイされるマシンを指定します。マシン上のサービス構成を指定することもできますmonitoring_serversは配列です。各配列要素には、次のフィールドが含まれます。
host: デプロイ先のマシンを指定します。フィールド値は IP アドレスであり、必須です。ssh_port: 操作のためにターゲット マシンに接続するための SSH ポートを指定します。フィールドが指定されていない場合は、セクションglobalのssh_port使用されます。port: Prometheus がサービスを提供するポートを指定します。デフォルト値は「9090」です。deploy_dir: デプロイメント ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、デプロイメント ディレクトリはglobalセクションのdeploy_dir構成に従って生成されます。data_dir: データ ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、データ ディレクトリはglobalセクションのdata_dir構成に従って生成されます。log_dir: ログ ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、ログ ディレクトリはglobalセクションのlog_dir構成に従って生成されます。numa_node: インスタンスに NUMA ポリシーを割り当てます。このフィールドを指定する前に、ターゲット マシンにヌマクトルインストールされていることを確認する必要があります。このフィールドが指定されている場合、cpubind および membind ポリシーはヌマクトル使用して割り当てられます。このフィールドは文字列型です。フィールド値は、"0,1" などの NUMA ノードの ID です。storage_retention: Prometheus 監視データの保持時間を指定します。デフォルト値は「15d」です。rule_dir: 完全な*.rules.ymlのファイルが配置されているローカル ディレクトリを指定します。指定されたディレクトリ内のファイルは、クラスター構成の初期化フェーズ中に Prometheus ルールとしてターゲット マシンに送信されます。remote_config: Prometheus データをリモートに書き込むか、リモートからデータを読み取ることをサポートします。このフィールドには 2 つの構成があります。remote_write: Prometheusドキュメント<remote_write>を参照してください。remote_read: Prometheusドキュメント<remote_read>を参照してください。
external_alertmanagers:external_alertmanagersフィールドが設定されている場合、Prometheus はクラスター外の Alertmanager に設定動作を通知します。このフィールドは配列であり、各要素は外部 Alertmanager であり、hostフィールドとweb_portフィールドで構成されます。os:hostフィールドで指定されたマシンのオペレーティング システム。フィールドが指定されていない場合、デフォルト値はglobalセクションで構成されたos値になります。arch:hostフィールドで指定されたマシンのアーキテクチャ。フィールドが指定されていない場合、デフォルト値はglobalセクションで構成されたarch値になります。resource_control: このサービスに対するリソース制御。このフィールドが指定された場合、このフィールドの設定はセクションglobalのresource_controlの設定とマージされ (2 つのフィールドが重複している場合は、このフィールドの設定が有効になります)、systemd の設定ファイルが生成され、セクションhostで指定されたマシンに配布されます。このフィールドの設定ルールは、セクションglobalのresource_controlと同じです。
monitoring_serversセクションでは、デプロイメントが完了した後は、次のフィールドを変更することはできません。
hostportdeploy_dirdata_dirlog_dirarchos
monitoring_servers構成例は次のとおりです。
monitoring_servers:
- host: 10.0.1.11
rule_dir: /local/rule/dir
remote_config:
remote_write:
- queue_config:
batch_send_deadline: 5m
capacity: 100000
max_samples_per_send: 10000
max_shards: 300
url: http://127.0.0.1:8003/write
remote_read:
- url: http://127.0.0.1:8003/read\
external_alertmanagers:
- host: 10.1.1.1
web_port: 9093
- host: 10.1.1.2
web_port: 9094
grafana_servers
grafana_servers Grafana サービスがデプロイされるマシンを指定します。マシン上のサービス構成を指定することもできますgrafana_serversは配列です。各配列要素には、次のフィールドが含まれます。
host: デプロイ先のマシンを指定します。フィールド値は IP アドレスであり、必須です。ssh_port: 操作のためにターゲット マシンに接続するための SSH ポートを指定します。フィールドが指定されていない場合は、セクションglobalのssh_port使用されます。port: Grafana がサービスを提供するポートを指定します。デフォルト値は「3000」です。deploy_dir: デプロイメント ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、デプロイメント ディレクトリはglobalセクションのdeploy_dir構成に従って生成されます。os:hostフィールドで指定されたマシンのオペレーティング システム。フィールドが指定されていない場合、デフォルト値はglobalセクションで構成されたos値になります。arch:hostフィールドで指定されたマシンのアーキテクチャ。フィールドが指定されていない場合、デフォルト値はglobalセクションで構成されたarch値になります。username: Grafana ログイン画面のユーザー名を指定します。password: Grafana の対応するパスワードを指定します。dashboard_dir: 完全なdashboard(*.json)のファイルが配置されているローカル ディレクトリを指定します。指定されたディレクトリ内のファイルは、クラスター構成の初期化フェーズ中に Grafana ダッシュボードとしてターゲット マシンに送信されます。resource_control: このサービスに対するリソース制御。このフィールドが指定された場合、このフィールドの設定はセクションglobalのresource_controlの設定とマージされ (2 つのフィールドが重複している場合は、このフィールドの設定が有効になります)、systemd の設定ファイルが生成され、セクションhostで指定されたマシンに配布されます。このフィールドの設定ルールは、セクションglobalのresource_controlと同じです。
注記:
dashboard_dirフィールドがgrafana_serversに設定されている場合、クラスターの名前を変更するtiup cluster renameコマンドを実行した後、次の操作を実行する必要があります。
- ローカルの
dashboardsディレクトリで、datasourceフィールドの値を新しいクラスター名に更新します (datasourceクラスター名に基づいて名前が付けられます)。tiup cluster reload -R grafanaコマンドを実行します。
grafana_serversでは、デプロイメントが完了した後は、次のフィールドを変更できません。
hostportdeploy_dirarchos
grafana_servers構成例は次のとおりです。
grafana_servers:
- host: 10.0.1.11
dashboard_dir: /local/dashboard/dir
alertmanager_servers
alertmanager_servers Alertmanager サービスが展開されるマシンを指定します。各マシンのサービス構成を指定することもできますalertmanager_serversは配列です。各配列要素には、次のフィールドが含まれます。
host: デプロイ先のマシンを指定します。フィールド値は IP アドレスであり、必須です。ssh_port: 操作のためにターゲット マシンに接続するための SSH ポートを指定します。フィールドが指定されていない場合は、セクションglobalのssh_port使用されます。web_port: Alertmanager が Web サービスを提供するポートを指定します。デフォルト値は「9093」です。cluster_port: 1 つの Alertmanager と他の Alertmanager 間の通信ポートを指定します。デフォルト値は「9094」です。deploy_dir: デプロイメント ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、デプロイメント ディレクトリはglobalセクションのdeploy_dir構成に従って生成されます。data_dir: データ ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、データ ディレクトリはglobalセクションのdata_dir構成に従って生成されます。log_dir: ログ ディレクトリを指定します。フィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、ログ ディレクトリはglobalセクションのlog_dir構成に従って生成されます。numa_node: インスタンスに NUMA ポリシーを割り当てます。このフィールドを指定する前に、ターゲット マシンにヌマクトルインストールされていることを確認する必要があります。このフィールドが指定されている場合、cpubind および membind ポリシーはヌマクトル使用して割り当てられます。このフィールドは文字列型です。フィールド値は、"0,1" などの NUMA ノードの ID です。config_file: ローカル ファイルを指定します。指定されたファイルは、クラスター構成の初期化フェーズ中に Alertmanager の構成としてターゲット マシンに送信されます。os:hostフィールドで指定されたマシンのオペレーティング システム。フィールドが指定されていない場合、デフォルト値はglobalセクションで構成されたos値になります。arch:hostフィールドで指定されたマシンのアーキテクチャ。フィールドが指定されていない場合、デフォルト値はglobalセクションで構成されたarch値になります。resource_control: このサービスに対するリソース制御。このフィールドが指定された場合、このフィールドの設定はセクションglobalのresource_controlの設定とマージされ (2 つのフィールドが重複している場合は、このフィールドの設定が有効になります)、systemd の設定ファイルが生成され、フィールドhostで指定されたマシンに配布されます。このフィールドの設定ルールは、セクションglobalのresource_controlと同じです。
alertmanager_serversでは、デプロイメントが完了した後は、次のフィールドを変更できません。
hostweb_portcluster_portdeploy_dirdata_dirlog_dirarchos
alertmanager_servers構成の例は次のとおりです。
alertmanager_servers:
- host: 10.0.1.11
config_file: /local/config/file
- host: 10.0.1.12
config_file: /local/config/file