このドキュメントでは、コンパクト プレースメント ポリシーを作成して適用することで、仮想マシン(VM)インスタンス間のネットワーク レイテンシを短縮する方法について説明します。
コンパクト プレースメント ポリシーでは、VM を互いに物理的に近い位置に配置するよう指定します。これにより、ハイ パフォーマンス コンピューティング(HPC)、機械学習(ML)、データベース サーバーのワークロードなどを実行する際に、パフォーマンスを向上させ、VM 間のネットワーク レイテンシを短縮できます。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
) -
予約を作成する: Compute 管理者(
roles/compute.admin
) - プレースメント ポリシーを作成する: プロジェクトに対する
compute.resourcePolicies.create
-
既存の VM にプレースメント ポリシーを適用する: プロジェクトに対する
compute.instances.addResourcePolicies
-
VM を作成する:
- プロジェクトに対する
compute.instances.create
- カスタム イメージを使用して VM を作成する: イメージに対する
compute.images.useReadOnly
- スナップショットを使用して VM を作成する: スナップショットに対する
compute.snapshots.useReadOnly
- インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する
compute.instanceTemplates.useReadOnly
- レガシー ネットワークを VM に割り当てる: プロジェクトに対する
compute.networks.use
- VM の静的 IP アドレスを指定する: プロジェクトに対する
compute.addresses.use
- レガシー ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトに対する
compute.networks.useExternalIp
- VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する
compute.subnetworks.use
- VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する
compute.subnetworks.useExternalIp
- VM の VM インスタンス メタデータを設定する: プロジェクトに対する
compute.instances.setMetadata
- VM にタグを設定する: VM に対する
compute.instances.setTags
- VM にラベルを設定する: VM に対する
compute.instances.setLabels
- VM が使用するサービス アカウントを設定する: VM に対する
compute.instances.setServiceAccount
- VM に新しいディスクを作成する: プロジェクトに対する
compute.disks.create
- 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する
compute.disks.use
- 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する
compute.disks.useReadOnly
- プロジェクトに対する
-
予約を作成する: プロジェクトに対する
compute.reservations.create
- インスタンス テンプレートを作成する: プロジェクトに対する
compute.instanceTemplates.create
-
リージョンまたはゾーンのマネージド インスタンス グループ(MIG)を作成する: プロジェクトに対する
compute.instanceGroupManagers.create
- VM の詳細を表示する: プロジェクトに対する
compute.instances.get
最大距離値。これにより、ネットワーク レイテンシの要件が厳しい場合に VM 間の距離を制御できます。ポリシーを適用する VM のマシンタイプとゾーンに応じて、次の条件が適用されます。
ゾーンに使用可能な容量がある場合、最大距離が大きい(
3
など)コンパクト プレースメント ポリシーでは、VM 同士がより近い位置に配置されることがあります。ゾーンの容量が不足している場合、最大距離が小さい(
1
など)コンパクト プレースメント ポリシーでは、一部の VM にこのポリシーが適用されない可能性が高くなります。
また、最大距離の値は、コンパクト プレースメント ポリシーを適用できる VM の数と、VM のホスト メンテナンス ポリシーに影響します。詳細については、コンパクト プレースメント ポリシーの制限事項をご覧ください。
VM の固定数。これにより、特定の数の VM に適用する場合にのみコンパクト プレースメント ポリシーが有効になります。指定された数を超える VM にコンパクト プレースメント ポリシーを適用しようとすると、エラーが発生します。VM の固定数が設定されたコンパクト プレースメント ポリシーを予約に適用することはできません。
POLICY_NAME
: 作成するポリシーの名前。REGION
: ポリシーを作成するリージョン。コンパクト プレースメント ポリシーを既存の VM に適用する場合は、VM が配置されているゾーンを含むリージョンにポリシーを作成します。VM の配置距離を適切に制御するには、
gcloud beta compute resource-policies create group-placement
コマンドを使用して--max-distance
フラグを指定します。gcloud beta compute resource-policies create group-placement POLICY_NAME \ --collocation=collocated \ --max-distance=MAX_DISTANCE \ --region=REGION
MAX_DISTANCE
は、VM の最大距離の構成に置き換えます。この値は1
と3
の間にする必要があります。前者は、ネットワーク レイテンシを最小化するために VM を同じラックに配置するように指定します。後者は、VM を隣接するクラスタに配置するように指定します。コンパクト プレースメント ポリシーを予約に適用する場合は、1
の値を指定できません。特定の数の VM に適用する場合にのみコンパクト プレースメント ポリシーを有効にするには、
--vm-count
フラグを指定します。gcloud compute resource-policies create group-placement POLICY_NAME \ --collocation=collocated \ --region=REGION \ --vm-count=VM_COUNT
VM_COUNT
は、コンパクト プレースメント ポリシーを適用できる VM の正確な数に置き換えます。この値は1
から、コンパクト プレースメント ポリシーを適用できる VM の最大数までの範囲にする必要があります。PROJECT_ID
: プレースメント ポリシーを作成するプロジェクトの ID。REGION
: ポリシーを作成するリージョン。コンパクト プレースメント ポリシーを既存の VM に適用する場合は、VM が配置されているゾーンを含むリージョンにポリシーを作成します。POLICY_NAME
: 作成するコンパクト プレースメント ポリシーの名前。VM の配置距離を適切に制御するには、
beta.resourcePolicies.insert
メソッドにPOST
リクエストを送信します。リクエスト本文に、maxDistance
フィールドを含めます。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "POLICY_NAME", "groupPlacementPolicy": { "collocation": "COLLOCATED", "maxDistance": "MAX_DISTANCE" } }
MAX_DISTANCE
は、VM の最大距離の構成に置き換えます。この値は1
と3
の間にする必要があります。前者は、ネットワーク レイテンシを最小化するために VM を同じラックに配置するように指定します。後者は、VM を隣接するクラスタに配置するように指定します。コンパクト プレースメント ポリシーを予約に適用する場合は、1
の値を指定できません。特定の数の VM に適用する場合にのみコンパクト プレースメント ポリシーを有効にするには、リクエスト本文に
vmCount
フィールドを含めます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "POLICY_NAME", "groupPlacementPolicy": { "collocation": "COLLOCATED", "vmCount": "VM_COUNT" } }
VM_COUNT
は、コンパクト プレースメント ポリシーを適用できる VM の正確な数に置き換えます。この値は1
から、コンパクト プレースメント ポリシーを適用できる VM の最大数までの範囲にする必要があります。- コンパクト プレースメント ポリシーを既存の VM に適用する。
- コンパクト プレースメント ポリシーを使用して VM を作成する。
- コンパクト プレースメント ポリシーを使用して VM を一括作成する。
- コンパクト プレースメント ポリシーを使用して予約を作成する。
- コンパクト プレースメント ポリシーを使用してインスタンス テンプレートを作成する。
- MIG の VM にコンパクト プレースメント ポリシーを適用する。
VM とコンパクト プレースメント ポリシーは同じリージョンに配置する必要があります。たとえば、プレースメント ポリシーがリージョン
us-central1
にある場合、VM はus-central1
のゾーンに配置する必要があります。VM を別のリージョンに移行する必要がある場合は、ゾーンまたはリージョン間で VM を移動するをご覧ください。VM は、サポートされているマシンシリーズとホスト メンテナンス ポリシーを使用する必要があります。VM に変更を加える必要がある場合は、次のいずれかまたは両方を行います。
VM の固定数を指定するコンパクト プレースメント ポリシーを適用する場合は、ホストエラー後に自動的に再起動されないように VM を更新する必要があります。
既存の VM にコンパクト プレースメント ポリシーを適用するには、
--resource-policies
フラグを指定してgcloud compute instances add-resource-policies
コマンドを使用します。gcloud compute instances add-resource-policies VM_NAME \ --resource-policies=POLICY_NAME \ --zone=ZONE
次のように置き換えます。
VM_NAME
: 既存の VM の名前。POLICY_NAME
: 既存のコンパクト プレースメント ポリシーの名前。ZONE
: VM が配置されているゾーン。
コンパクト プレースメント ポリシーを既存の VM に適用するには、
instances.addResourcePolicies
メソッドにPOST
リクエストを送信します。リクエスト本文に、resourcePolicies
フィールドを含めます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addResourcePolicies { "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] }
次のように置き換えます。
PROJECT_ID
: コンパクト プレースメント ポリシーと VM が存在するプロジェクトの ID。ZONE
: VM が存在するゾーン。コンパクト プレースメント ポリシーが配置されているリージョン内である必要があります。VM_NAME
: 既存の VM の名前。REGION
: コンパクト プレースメント ポリシーが存在するリージョン。POLICY_NAME
: 既存のコンパクト プレースメント ポリシーの名前。
VM_NAME
: 作成する VM の名前。MACHINE_TYPE
: コンパクト プレースメント ポリシーでサポートされているマシンタイプ。MAINTENANCE_POLICY
: VM のホスト メンテナンス ポリシー。指定したコンパクト プレースメント ポリシーが1
または2
の最大距離値を使用する場合、指定できるのはTERMINATE
のみです。それ以外の場合は、MIGRATE
またはTERMINATE
を指定できます。POLICY_NAME
: 既存のコンパクト プレースメント ポリシーの名前。コンパクト プレースメント ポリシーで VM の固定数を指定する場合は、--no-restart-on-failure
フラグを指定する必要があります。これは、ホストエラー後に VM が自動的に再起動されないことを示します。ZONE
: VM を作成するゾーン。PROJECT_ID
: コンパクト プレースメント ポリシーを含むプロジェクトの ID。ZONE
: VM を作成するゾーンとマシンタイプが存在するゾーン。コンパクト プレースメント ポリシーのリージョン内で使用可能なマシンタイプのみを指定できます。VM_NAME
: 作成する VM の名前。MACHINE_TYPE
: コンパクト プレースメント ポリシーでサポートされているマシンタイプ。REGION
: コンパクト プレースメント ポリシーが存在するリージョン。POLICY_NAME
: 既存のコンパクト プレースメント ポリシーの名前。コンパクト プレースメント ポリシーで VM の固定数を指定する場合、scheduling
フィールドでautomaticRestart
フィールドをfalse
に設定する必要があります。これは、ホストエラー後に VM が自動的に再起動されないことを示します。MAINTENANCE_POLICY
: VM のホスト メンテナンス ポリシー。指定したコンパクト プレースメント ポリシーが1
または2
の最大距離値を使用する場合、指定できるのはTERMINATE
のみです。それ以外の場合は、MIGRATE
またはTERMINATE
を指定できます。COUNT
: 作成する VM の数。指定されたコンパクト プレースメント ポリシーのサポートされている VM の最大数を超えることはできません。MACHINE_TYPE
: コンパクト プレースメント ポリシーでサポートされているマシンタイプ。MAINTENANCE_POLICY
: VM のホスト メンテナンス ポリシー。指定したコンパクト プレースメント ポリシーが1
または2
の最大距離値を使用する場合、指定できるのはTERMINATE
のみです。それ以外の場合は、MIGRATE
またはTERMINATE
を指定できます。NAME_PATTERN
: 作成する VM の名前パターン。ハッシュ文字(#
)を使用して一連の数字に置き換えます。たとえば、vm-#
を指定すると、vm-1
やvm-2
といった名前の VM が、COUNT
で指定された VM の最大数まで作成されます。POLICY_NAME
: 既存のコンパクト プレースメント ポリシーの名前。コンパクト プレースメント ポリシーで VM の固定数を指定する場合は、--no-restart-on-failure
フラグを指定する必要があります。これは、VM がホストエラー後に自動的に再起動されないことを示します。ZONE
: VM を一括作成するゾーン。PROJECT_ID
: コンパクト プレースメント ポリシーを含むプロジェクトの ID。ZONE
: VM を一括作成するゾーン。COUNT
: 作成する VM の数。指定されたコンパクト プレースメント ポリシーのサポートされている VM の最大数を超えることはできません。MACHINE_TYPE
: コンパクト プレースメント ポリシーでサポートされているマシンタイプ。NAME_PATTERN
: 作成する VM の名前パターン。ハッシュ文字(#
)を使用して一連の数字に置き換えます。たとえば、vm-#
を指定すると、vm-1
やvm-2
といった名前の VM が、COUNT
で指定された VM の最大数まで作成されます。REGION
: コンパクト プレースメント ポリシーが存在するリージョン。POLICY_NAME
: 既存のコンパクト プレースメント ポリシーの名前。コンパクト プレースメント ポリシーで VM の固定数を指定する場合、scheduling
フィールドでautomaticRestart
フィールドをfalse
に設定する必要があります。これは、VM がホストエラー後に自動的に再起動されないことを示します。MAINTENANCE_POLICY
: VM のホスト メンテナンス ポリシー。指定したコンパクト プレースメント ポリシーが1
または2
の最大距離値を使用する場合、指定できるのはTERMINATE
のみです。それ以外の場合は、MIGRATE
またはTERMINATE
を指定できます。VM には、予約に適用されたものと同じコンパクト プレースメント ポリシーを指定する必要があります。
VM は、その予約を明示的に対象として使用する必要があります。詳細については、特定の予約から VM を使用するをご覧ください。
このセクションで説明するように、プロパティを直接指定して予約を作成します。
このドキュメントの説明に沿ってコンパクト プレースメント ポリシーを含むインスタンス テンプレートを作成し、新しく作成したインスタンス テンプレートを指定して単一プロジェクトの予約を作成します。
RESERVATION_NAME
: 予約の名前。MACHINE_TYPE
: コンパクト プレースメント ポリシーでサポートされているマシンタイプ。POLICY_NAME
: 既存のコンパクト プレースメント ポリシーの名前。VM の固定数を持つコンパクト プレースメント ポリシーを指定することはできません。この条件を満たしていない場合、予約の作成は失敗します。NUMBER_OF_VMS
: 予約する VM の数。指定されたコンパクト プレースメント ポリシーのサポートされている VM の最大数を超えることはできません。ZONE
: VM を予約するゾーン。VM を予約できるのは、指定したコンパクト プレースメント ポリシーのリージョン内のゾーンに限られます。PROJECT_ID
: コンパクト プレースメント ポリシーを含むプロジェクトの ID。ZONE
: VM を予約するゾーン。VM を予約できるのは、指定したコンパクト プレースメント ポリシーのリージョン内のゾーンに限られます。RESERVATION_NAME
: 予約の名前。REGION
: コンパクト プレースメント ポリシーが存在するリージョン。POLICY_NAME
: 既存のコンパクト プレースメント ポリシーの名前。VM の固定数を持つコンパクト プレースメント ポリシーを指定することはできません。この条件を満たしていない場合、予約の作成は失敗します。NUMBER_OF_VMS
: 予約する VM の数。指定されたコンパクト プレースメント ポリシーのサポートされている VM の最大数を超えることはできません。MACHINE_TYPE
: コンパクト プレースメント ポリシーでサポートされているマシンタイプ。INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。MACHINE_TYPE
: コンパクト プレースメント ポリシーでサポートされているマシンタイプ。MAINTENANCE_POLICY
: VM のホスト メンテナンス ポリシー。指定したコンパクト プレースメント ポリシーが1
または2
の最大距離値を使用する場合、指定できるのはTERMINATE
のみです。それ以外の場合は、MIGRATE
またはTERMINATE
を指定できます。POLICY_NAME
: 既存のコンパクト プレースメント ポリシーの名前。コンパクト プレースメント ポリシーで VM の固定数を指定する場合は、--no-restart-on-failure
フラグを指定する必要があります。これは、インスタンス テンプレートを使用して作成された VM が、ホストエラー後に自動的に再起動されないことを示します。グローバル インスタンス テンプレートを作成するには:
instanceTemplates.insert
メソッド。リージョン インスタンス テンプレートを作成するには:
regionInstanceTemplates.insert
メソッド。PROJECT_ID
: インスタンス テンプレートに適用するコンパクト プレースメント ポリシーが配置されているプロジェクトの ID。INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。IMAGE
またはIMAGE_FAMILY
: 次のいずれかを指定します。IMAGE
: OS イメージの特定のバージョン。例:debian-10-buster-v20200309
IMAGE_FAMILY
: イメージ ファミリー。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-10
を指定すると、Debian 10 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
MACHINE_TYPE
: コンパクト プレースメント ポリシーでサポートされているマシンタイプ。POLICY_NAME
: 既存のコンパクト プレースメント ポリシーの名前。コンパクト プレースメント ポリシーで VM の固定数を指定する場合、scheduling
フィールドでautomaticRestart
フィールドをfalse
に設定する必要があります。これは、インスタンス テンプレートを使用して作成された VM が、ホストエラー後に自動的に再起動されないことを示します。MAINTENANCE_POLICY
: VM のホスト メンテナンス ポリシー。指定したコンパクト プレースメント ポリシーが1
または2
の最大距離値を使用する場合、指定できるのはTERMINATE
のみです。それ以外の場合は、MIGRATE
またはTERMINATE
を指定できます。MIG_NAME
: 作成する MIG の名前。REGION
: MIG を作成するリージョン。コンパクト プレースメント ポリシーが存在するリージョンと一致している必要があります。SIZE
: MIG のサイズ。INSTANCE_TEMPLATE_NAME
: コンパクト プレースメント ポリシーを指定する既存のインスタンス テンプレートの名前。PROJECT_ID
: コンパクト プレースメント ポリシーと、プレースメント ポリシーを指定するインスタンス テンプレートがあるプロジェクトの ID。REGION
: MIG を作成するリージョン。コンパクト プレースメント ポリシーが存在するリージョンと一致している必要があります。MIG_NAME
: 作成する MIG の名前。INSTANCE_TEMPLATE_NAME
: コンパクト プレースメント ポリシーを指定する既存のインスタンス テンプレートの名前。SIZE
: MIG のサイズ。MIG_NAME
: 既存の MIG の名前。REGION
: MIG が配置されているリージョン。コンパクト プレースメント ポリシーは、同じリージョン内の MIG にのみ適用できます。INSTANCE_TEMPLATE_NAME
: コンパクト プレースメント ポリシーを指定する既存のインスタンス テンプレートの名前。PROJECT_ID
: MIG、コンパクト プレースメント ポリシー、プレースメント ポリシーを指定するインスタンス テンプレートがあるプロジェクトの ID。REGION
: MIG が配置されているリージョン。コンパクト プレースメント ポリシーは、同じリージョン内の MIG にのみ適用できます。MIG_NAME
: 既存の MIG の名前。INSTANCE_TEMPLATE_NAME
: コンパクト プレースメント ポリシーを指定する既存のインスタンス テンプレートの名前。VM_NAME
: 既存の VM の名前。ZONE
: VM が配置されているゾーン。/CCCCCCC/xxxxxx/xxxx
: 2 つの VM は同じクラスタに配置されます。これは、最大距離値2
に相当します。同じクラスタに配置された VM では、ネットワーク レイテンシが低くなります。/CCCCCCC/BBBBBB/xxxx
: 2 つの VM は同じラックに配置されます。これは、最大距離値1
に相当します。同じラックに配置された VM では、同じクラスタに配置された VM よりもネットワーク レイテンシが低くなります。/CCCCCCC/BBBBBB/AAAA
: 2 つの VM が同じホストを共有しています。同じホストに配置された VM では、ネットワーク レイテンシが可能な限り最小限に抑えられます。PROJECT_ID
: VM が配置されているプロジェクトのプロジェクト ID。ZONE
: VM が配置されているゾーン。VM_NAME
: プレースメント ポリシーを指定する既存の VM の名前。/CCCCCCC/xxxxxx/xxxx
: 2 つの VM は同じクラスタに配置されます。これは、最大距離値2
に相当します。同じクラスタに配置された VM では、ネットワーク レイテンシが低くなります。/CCCCCCC/BBBBBB/xxxx
: 2 つの VM は同じラックに配置されます。これは、最大距離値1
に相当します。同じラックに配置された VM では、同じクラスタに配置された VM よりもネットワーク レイテンシが低くなります。/CCCCCCC/BBBBBB/AAAA
: 2 つの VM が同じホストを共有しています。同じホストに配置された VM では、ネットワーク レイテンシが可能な限り最小限に抑えられます。プレースメント ポリシーを表示する方法を学習する。
プレースメント ポリシーを置換、削除、消去する方法を学習する。
プレースメント ポリシーを指定する VM で、次の操作を行う方法を学習する。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
必要なロール
コンパクト プレースメント ポリシーを作成して VM に適用するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与の詳細については、アクセス権の管理をご覧ください。
これらの事前定義ロールには、コンパクト プレースメント ポリシーを作成して VM に適用するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
コンパクト プレースメント ポリシーを作成して VM に適用するには、次の権限が必要です。
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
コンパクト プレースメント ポリシーを作成する
コンパクト プレースメント ポリシーを作成するときに、必要に応じて次のいずれかまたは両方を指定できます。
コンパクト プレースメント ポリシーを作成するには、gcloud CLI または REST を使用します。
gcloud
コンパクト プレースメント ポリシーを作成するには、
--collocation=collocated
フラグを指定してgcloud compute resource-policies create group-placement
コマンドを使用します。gcloud compute resource-policies create group-placement POLICY_NAME \ --collocation=collocated \ --region=REGION
次のように置き換えます。
必要に応じて、以下のいずれかまたは両方の操作を行うことができます。
REST
コンパクト プレースメント ポリシーを作成するには、
resourcePolicies.insert
メソッドにPOST
リクエストを送信します。リクエストの本文にcollocation
フィールドを含め、COLLOCATED
に設定します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "POLICY_NAME", "groupPlacementPolicy": { "collocation": "COLLOCATED" } }
次のように置き換えます。
必要に応じて、以下のいずれかまたは両方の操作を行うことができます。
コンパクト プレースメント ポリシーを適用する
コンパクト プレースメント ポリシーは既存の VM に適用できます。VM、インスタンス テンプレート、MIG、VM の予約を作成するときに適用することもできます。
コンパクト プレースメント ポリシーを指定する Compute Engine リソースを作成するには、次のいずれかの方法を選択します。
コンパクト プレースメント ポリシーが VM に適用されたら、同じポリシーを指定している他の VM との関連で VM の物理的な場所を確認することができます。
コンパクト プレースメント ポリシーを既存の VM に適用する
コンパクト プレースメント ポリシーを既存の VM に適用する前に、次のことを確認してください。
上記以外の場合、VM にコンパクト プレースメント ポリシーを適用すると失敗します。VM にすでにプレースメント ポリシーが指定されていて、そのプレースメント ポリシーを置き換える場合は、VM のプレースメント ポリシーを置き換えるをご覧ください。
コンパクト プレースメント ポリシーを既存の VM に適用するには、次のいずれかのオプションを選択します。
gcloud
REST
コンパクト プレースメント ポリシーを使用して VM を作成する
コンパクト プレースメント ポリシーを使用する VM は、プレースメント ポリシーと同じリージョン内のゾーンにのみ作成できます。
コンパクト プレースメント ポリシーを指定する VM を作成するには、次のいずれかを選択します。
gcloud
コンパクト プレースメント ポリシーを指定する VM を作成するには、
--resource-policies
フラグを指定してgcloud compute instances create
コマンドを使用します。gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --maintenance-policy=MAINTENANCE_POLICY \ --resource-policies=POLICY_NAME \ --zone=ZONE
次のように置き換えます。
REST
コンパクト プレースメント ポリシーを指定する VM を作成するには、
instances.insert
メソッドにPOST
リクエストを送信します。リクエスト本文に、resourcePolicies
フィールドを含めます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ], "scheduling": { "onHostMaintenance": "MAINTENANCE_POLICY" } }
次のように置き換えます。
VM を作成する構成オプションの詳細については、VM インスタンスを作成して起動するをご覧ください。
コンパクト プレースメント ポリシーを使用して VM を一括作成する
コンパクト プレースメント ポリシーを使用して VM を一括作成できるのは、プレースメント ポリシーと同じリージョン内のみです。
コンパクト プレースメント ポリシーを指定する VM を一括作成するには、次のいずれかのオプションを選択します。
gcloud
コンパクト プレースメント ポリシーを指定する VM を一括で作成するには、
--resource-policies
フラグを指定してgcloud compute instances bulk create
コマンドを使用します。たとえば、単一のゾーンで VM を一括作成し、VM の名前パターンを指定するには、次のコマンドを実行します。
gcloud compute instances bulk create \ --count=COUNT \ --machine-type=MACHINE_TYPE \ --maintenance-policy=MAINTENANCE_POLICY \ --name-pattern=NAME_PATTERN \ --resource-policies=POLICY_NAME \ --zone=ZONE
次のように置き換えます。
REST
コンパクト プレースメント ポリシーを指定する VM を一括作成するには、
instances.bulkInsert
メソッドにPOST
リクエストを送信します。リクエスト本文に、resourcePolicies
フィールドを含めます。たとえば、単一のゾーンで VM を一括作成し、VM の名前パターンを指定するには、次のように
POST
リクエストを送信します。POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { "count": "COUNT", "machineType": "MACHINE_TYPE", "namePattern": "NAME_PATTERN", "instanceProperties": { "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ], "scheduling": { "onHostMaintenance": "MAINTENANCE_POLICY" } } }
次のように置き換えます。
VM を一括作成するための構成オプションの詳細については、VM を一括作成するをご覧ください。
コンパクト プレースメント ポリシーを使用して予約を作成する
コンパクト プレースメント ポリシーを指定するオンデマンドの単一プロジェクトの予約を作成する場合は、明示的に対象となる予約を作成する必要があります。予約を使用する VM を作成する場合は、次の点を確認してください。
コンパクト プレースメント ポリシーを使用して単一プロジェクトの予約を作成するには、次のいずれかの方法を選択します。
プロパティを直接指定してコンパクト プレースメント ポリシーを含む単一プロジェクトの予約を作成するには、次のいずれかを選択します。
gcloud
プロパティを直接指定してコンパクト プレースメント ポリシーを含む単一プロジェクトの予約を作成するには、
--require-specific-reservation
フラグと--resource-policies
フラグを指定してgcloud compute reservations create
コマンドを使用します。gcloud compute reservations create RESERVATION_NAME \ --machine-type=MACHINE_TYPE \ --require-specific-reservation \ --resource-policies=policy=POLICY_NAME \ --vm-count=NUMBER_OF_VMS \ --zone=ZONE
次のように置き換えます。
REST
プロパティを直接指定してコンパクト プレースメント ポリシーを含む単一プロジェクトの予約を作成するには、
reservations.insert
メソッドにPOST
リクエストを送信します。リクエストの本文で、resourcePolicies
フィールドと、specificReservationRequired
フィールドをtrue
に設定します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations { "name": "RESERVATION_NAME", "resourcePolicies": { "policy" : "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" }, "specificReservation": { "count": "NUMBER_OF_VMS", "instanceProperties": { "machineType": "MACHINE_TYPE", } }, "specificReservationRequired": true }
次のように置き換えます。
単一プロジェクトの予約の構成オプションと作成方法の詳細については、単一プロジェクトの予約を作成するをご覧ください。
コンパクト プレースメント ポリシーを使用してインスタンス テンプレートを作成する
リージョン インスタンス テンプレートを作成する場合は、コンパクト プレースメント ポリシーと同じリージョンにテンプレートを作成する必要があります。そうしないと、インスタンス テンプレートの作成は失敗します。
インスタンス テンプレートを作成すると、それを使用して次のことができます。
コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを作成するには、次のいずれかのオプションを選択します。
gcloud
コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを作成するには、
--resource-policies
フラグを指定してgcloud compute instance-templates create
コマンドを使用します。たとえば、コンパクト プレースメント ポリシーを指定するグローバル インスタンス テンプレートを作成するには、次のコマンドを実行します。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=MACHINE_TYPE \ --maintenance-policy=MAINTENANCE_POLICY \ --resource-policies=POLICY_NAME
次のように置き換えます。
REST
コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを作成するには、次のいずれかのメソッドに
POST
リクエストを送信します。リクエストの本文で
resourcePolicies
フィールドを指定します。たとえば、コンパクト プレースメント ポリシーを指定するグローバル インスタンス テンプレートを作成するには、次のように
POST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "POLICY_NAME" ], "scheduling": { "onHostMaintenance": "MAINTENANCE_POLICY" } } }
次のように置き換えます。
インスタンス テンプレートを作成するための構成オプションの詳細については、インスタンス テンプレートを作成するをご覧ください。
MIG の VM にコンパクト プレースメント ポリシーを適用する
コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを作成すると、そのテンプレートを使用して次のことができます。
コンパクト プレースメント ポリシーを MIG に適用する場合は、任意の単一ゾーンの分配形態でリージョン MIG を作成するか、このリージョン MIG にポリシーを適用することをおすすめします。これにより、VM を作成してリージョン MIG をスケールアウトする必要がある場合は、予約、割り当て、ハードウェア要件に基づいて VM を作成するゾーンが選択されます。
コンパクト プレースメント ポリシーを使用して MIG を作成する
コンパクト プレースメント ポリシーを指定する VM は、VM がプレースメント ポリシーと同じリージョンにある場合にのみ作成できます。
コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを使用して MIG を作成するには、次のいずれかの方法を選択します。
gcloud
コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを使用して MIG を作成するには、
--template
フラグを指定してgcloud compute instance-groups managed create
コマンドを使用します。たとえば、任意の単一ゾーンの分配形態を持つリージョン MIG を作成するには、次のコマンドを実行します。
gcloud compute instance-groups managed create MIG_NAME \ --region=REGION \ --size=SIZE \ --target-distribution-shape=any-single-zone \ --template=INSTANCE_TEMPLATE_NAME
次のように置き換えます。
REST
コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを使用して MIG を作成するには、
instanceGroupManagers.insert
メソッドまたはregionInstanceGroupManagers.insert
メソッドにPOST
リクエストを送信します。たとえば、デフォルトの VM プロパティと任意の単一ゾーンの分配形態でリージョン MIG を作成するには、次のように
POST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "name": "MIG_NAME", "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "distributionPolicy": { "targetShape": "ANY_SINGLE_ZONE" }, "targetSize": SIZE }
次のように置き換えます。
MIG を作成するための構成オプションの詳細については、MIG を作成するための基本的なシナリオをご覧ください。
既存の MIG にコンパクト プレースメント ポリシーを適用する
コンパクト プレースメント ポリシーを既存の MIG に適用できるのは、MIG がプレースメント ポリシーと同じリージョンにある場合、またはゾーン MIG の場合はプレースメント ポリシーと同じリージョン内のゾーンにある場合のみです。
コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを使用するように MIG を更新するには、次のいずれかのオプションを選択します。
gcloud
コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを使用するように MIG を更新するには、
gcloud compute instance-groups managed rolling-action start-update
コマンドを使用します。たとえば、コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを使用するようにリージョン MIG を更新し、MIG の既存の VM をテンプレートのプロパティを指定する新しい VM に置き換えるには、次のコマンドを実行します。
gcloud compute instance-groups managed rolling-action start-update MIG_NAME \ --region=REGION \ --type=proactive \ --version=template=INSTANCE_TEMPLATE_NAME
次のように置き換えます。
REST
コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを使用するように MIG を更新し、テンプレートのプロパティとプレースメント ポリシーを MIG 内の既存の VM に自動的に適用するには、
instanceGroupManagers.insert
またはregionInstanceGroupManagers.insert
メソッドにPATCH
リクエストを送信します。たとえば、コンパクト プレースメント ポリシーを指定するインスタンス テンプレートを使用するようにリージョン MIG を更新し、MIG の既存の VM をテンプレートのプロパティを指定する新しい VM に置き換えるには、次の
PATCH
リクエストを送信します。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME { "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "updatePolicy": { "type": "PROACTIVE" } }
次のように置き換えます。
MIG 内の VM を更新するための構成オプションの詳細については、MIG 内の VM に新しい構成を更新して適用するをご覧ください。
VM の物理的な位置を確認する
VM にコンパクト プレースメント ポリシーを適用すると、同じポリシーを指定する他の VM との関連でコンパクト プレースメント ポリシーが物理的な位置にどのように影響したかを確認できます。これにより、コンパクト プレースメント ポリシーが VM に正しく適用されたかどうかを判断し、どの VM が互いに最も近いかをマッピングできます。
他の VM との関係でプレースメント ポリシーを指定する VM の物理的な場所を確認するには、次のいずれかのオプションを選択します。
gcloud
コンパクト プレースメント ポリシーを指定する VM の物理的な位置を表示するには、
--format
フラグを指定してgcloud compute instances describe
コマンドを使用します。gcloud compute instances describe VM_NAME \ --format="table[box,title=VM-Position](resourcePolicies.scope():sort=1,resourceStatus.physicalHost:label=location)" \ --zone=ZONE
次のように置き換えます。
出力は次のようになります。
VM-Position RESOURCE_POLICIES: us-central1/resourcePolicies/example-policy'] PHYSICAL_HOST: /CCCCCCC/BBBBBB/AAAA
PHYSICAL_HOST
フィールドの値は 3 つの部分で構成されます。それぞれ、VM が配置されているクラスタ、ラック、ホストを表します。同一のコンパクト プレースメント ポリシーを指定する 2 つの VM の位置を比較すると、
PHYSICAL_HOST
フィールドで VM が共有する部分が多いほど相互に配置される位置は近くなります。たとえば、2 つの VM の両方でPHYSICAL_HOST
フィールドに次のサンプル値のいずれかを指定するとします。REST
コンパクト プレースメント ポリシーを指定する VM の物理的な位置を表示するには、
instances.get
メソッドにGET
リクエストを送信します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
次のように置き換えます。
出力は次のようになります。
{ ... "resourcePolicies": [ "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/resourcePolicies/example-policy" ], "resourceStatus": { "physicalHost": "/xxxxxxxx/xxxxxx/xxxxx" }, ... }
physicalHost
フィールドの値は 3 つの部分で構成されます。それぞれ、VM が配置されているクラスタ、ラック、ホストを表します。同一のコンパクト プレースメント ポリシーを指定する 2 つの VM の位置を比較すると、
physicalHost
フィールドで VM が共有する部分が多いほど相互に配置される位置は近くなります。たとえば、2 つの VM の両方でphysicalHost
フィールドに次のサンプル値のいずれかを指定するとします。次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-11-19 UTC。
-