TiUPを使用した DMクラスタ展開のトポロジコンフィグレーションファイル
TiDBデータ移行(DM)クラスターをデプロイまたは拡張するには、クラスタートポロジを記述するトポロジファイル( サンプル )を提供する必要があります。
同様に、クラスタトポロジを変更するには、トポロジファイルに変更を加える必要があります。違いは、クラスタのデプロイ後は、トポロジファイル内のフィールドの一部しか変更できないことです。このドキュメントでは、トポロジファイルの各セクションと、各セクション内の各フィールドについて説明します。
ファイル構造
TiUPを使用した DM クラスターのデプロイメントのトポロジ構成ファイルには、次のセクションが含まれる場合があります。
- グローバル : クラスターのグローバル設定。一部の設定項目はクラスターのデフォルト値を使用しますが、インスタンスごとに個別に設定できます。
- サーバー構成 : コンポーネントのグローバル設定。各コンポーネントを個別に設定できます。インスタンスに同じキーの設定項目がある場合、そのインスタンスの設定項目が有効になります。
- マスターサーバー : DMマスターインスタンスの構成。この構成では、DMコンポーネントのマスターサービスがデプロイされるマシンを指定します。
- ワーカーサーバー : DMワーカーインスタンスの設定。この設定では、DMコンポーネントのワーカーサービスがデプロイされるマシンを指定します。
- 監視サーバー : Prometheusインスタンスがデプロイされるマシンを指定します。TiUPは複数のPrometheusインスタンスのデプロイをサポートしていますが、最初のインスタンスのみが使用されます。
- grafana_servers : Grafanaインスタンスの設定。この設定では、Grafanaインスタンスがデプロイされるマシンを指定します。
- アラートマネージャーサーバー : Alertmanagerインスタンスの設定。この設定では、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」は最大2GBのメモリが使用できることを意味します。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 server_configsサービスの設定と各コンポーネントの設定ファイルの生成に使用されます。2 セクションと同様に、 globalセクションの設定は、インスタンス内の同じキーを持つ設定によって上書きできます。6 server_configsは主に以下のフィールドが含まれます。
master: DMマスターサービスに関連する設定。サポートされているすべての設定項目については、 DMマスターコンフィグレーションファイル参照してください。worker: DM ワーカー サービスに関連する構成。サポートされているすべての構成項目については、 DMワーカーコンフィグレーションファイル参照してください。
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ポリシーはヌマクトル使用して割り当てられます。このフィールドは文字列型です。フィールド値はNUMAノードのID(例:"0,1")です。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ワーカーがサービスを提供するポートを指定します。デフォルト値は「8262」です。deploy_dir: デプロイメントディレクトリを指定します。このフィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、デプロイメントディレクトリはglobalセクションのdeploy_dir設定に従って生成されます。data_dir: データディレクトリを指定します。このフィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、データディレクトリはセクションglobalのdata_dir設定に従って生成されます。log_dir: ログディレクトリを指定します。このフィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、ログディレクトリはセクションglobalのlog_dir設定に従って生成されます。numa_node: インスタンスにNUMAポリシーを割り当てます。このフィールドを指定する前に、ターゲットマシンにヌマクトルインストールされていることを確認する必要があります。このフィールドを指定した場合、cpubindおよびmembindポリシーはヌマクトル使用して割り当てられます。このフィールドは文字列型です。フィールド値はNUMAノードのID(例:"0,1")です。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ポリシーはヌマクトル使用して割り当てられます。このフィールドは文字列型です。フィールド値はNUMAノードのID(例:"0,1")です。storage_retention: Prometheus監視データの保持期間を指定します。デフォルト値は「15日」です。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: Alertmanager間の通信ポートを指定します。デフォルト値は「9094」です。deploy_dir: デプロイメントディレクトリを指定します。このフィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、デプロイメントディレクトリはglobalセクションのdeploy_dir設定に従って生成されます。data_dir: データディレクトリを指定します。このフィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、データディレクトリはセクションglobalのdata_dir設定に従って生成されます。log_dir: ログディレクトリを指定します。このフィールドが指定されていない場合、または相対ディレクトリとして指定されている場合、ログディレクトリはセクションglobalのlog_dir設定に従って生成されます。numa_node: インスタンスにNUMAポリシーを割り当てます。このフィールドを指定する前に、対象マシンにヌマクトルインストールされていることを確認する必要があります。このフィールドを指定した場合、cpubindおよびmembindポリシーはヌマクトル使用して割り当てられます。このフィールドは文字列型です。フィールド値はNUMAノードのID(例:"0,1")です。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