このドキュメントでは、スプレッド プレースメント ポリシーを作成して適用することで、仮想マシン(VM)インスタンスの信頼性を向上させる方法について説明します。
スプレッド プレースメント ポリシーでは、VM を異なるアベイラビリティ ドメインに分散することを指定します。この分散は、ハードウェア エラーなどのロケーション固有の中断を軽減するのに役立ちます。また、Hadoop Distributed File System(HDFS)、Cassandra、Kafka などの大規模な分散レプリケート ワークロードを実行する場合に便利です。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、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.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.instanceTemplates.create
-
マネージド インスタンス グループ(MIG)を作成する: プロジェクトに対する
compute.instanceGroupManagers.create
POLICY_NAME
: スプレッド プレースメント ポリシーの名前。DOMAIN_COUNT
: VM を配置するアベイラビリティ ドメインの個別の数。値は1
と8
の範囲で指定してください。REGION
: プレースメント ポリシーを作成するリージョン。PROJECT_ID
: プレースメント ポリシーを作成するプロジェクトの ID。REGION
: プレースメント ポリシーを作成するリージョン。POLICY_NAME
: スプレッド プレースメント ポリシーの名前。DOMAIN_COUNT
: VM を配置するアベイラビリティ ドメインの個別の数。値は1
と8
の範囲で指定してください。- 既存の VM にポリシーを適用する。
- VM の作成時にポリシーを適用する。
- VM を一括作成するときにポリシーを適用する。
- インスタンス テンプレートの作成時にポリシーを適用する。
- MIG 内の VM にポリシーを適用する。
スプレッド プレースメント ポリシーで複数のアベイラビリティ ドメインを指定する場合は、VM を停止せずに VM にポリシーを適用できます。ただし、VM を別のアベイラビリティ ドメインに再配置しなければならないことがあります。このプロセス中、Compute Engine はホスト メンテナンス ポリシーに基づいて VM を停止するか、ライブ マイグレーションを実行します。
VM とスプレッド プレースメント ポリシーは同じリージョンに配置する必要があります。たとえば、プレースメント ポリシーがリージョン
us-central1
にある場合、VM はus-central1
のゾーンに配置する必要があります。VM を別のリージョンに移行する必要がある場合は、ゾーンまたはリージョン間で VM を移動するをご覧ください。VM_NAME
: 既存の VM の名前。POLICY_NAME
: 既存のスプレッド プレースメント ポリシーの名前。ZONE
: VM が配置されているゾーン。PROJECT_ID
: スプレッド プレースメント ポリシーと VM を含むプロジェクトの ID。ZONE
: VM が配置されているゾーン。VM_NAME
: 既存の VM の名前。REGION
: スプレッド プレースメント ポリシーが存在するリージョン。POLICY_NAME
: 既存のスプレッド プレースメント ポリシーの名前。VM_NAME
: 作成する VM の名前。MACHINE_TYPE
: VM のマシンタイプ。POLICY_NAME
: 既存のスプレッド プレースメント ポリシーの名前。ZONE
: VM インスタンスを作成するゾーン。PROJECT_ID
: スプレッド プレースメント ポリシーを含むプロジェクトの ID。ZONE
: VM を作成するゾーンとマシンタイプが存在するゾーン。指定できるのは、スプレッド プレースメント ポリシーのリージョン内のゾーンのみです。VM_NAME
: 作成する VM の名前。MACHINE_TYPE
: VM のマシンタイプ。IMAGE_PROJECT
: イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE
: 次のいずれかを指定します。OS イメージの特定のバージョン。例:
debian-12-bookworm-v20240617
。イメージ ファミリー。
family/IMAGE_FAMILY
の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12
を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
REGION
: スプレッド プレースメント ポリシーが存在するリージョン。POLICY_NAME
: 既存のスプレッド プレースメント ポリシーの名前。スプレッド プレースメント ポリシーを使用して VM を一括作成できるのは、プレースメント ポリシーと同じリージョン内のみです。
スプレッド プレースメント ポリシーを使用して VM を一括作成する場合は、必要に応じて VM を作成するアベイラビリティ ドメインを指定できます。すべての VM を 1 つのドメインに作成しないでください。作成すると、単一のハードウェア エラーがすべての VM に影響するリスクを軽減できません。
COUNT
: 作成する VM の数。MACHINE_TYPE
: VM のマシンタイプ。NAME_PATTERN
: VM の名前パターン。VM 名の一連の数字を置き換えるには、一連のハッシュ(#
)文字を使用します。たとえば、名前パターンにvm-#
を使用すると、vm-1
、vm-2
で始まり、COUNT
で指定された VM の数まで続く名前の VM が生成されます。POLICY_NAME
: 既存のスプレッド プレースメント ポリシーの名前。ZONE
: VM を一括作成するゾーン。PROJECT_ID
: スプレッド プレースメント ポリシーを含むプロジェクトの ID。ZONE
: VM を一括作成するゾーン。COUNT
: 作成する VM の数。NAME_PATTERN
: VM の名前パターン。VM 名の一連の数字を置き換えるには、一連のハッシュ(#
)文字を使用します。たとえば、名前パターンにvm-#
を使用すると、vm-1
、vm-2
で始まり、COUNT
で指定された VM の数まで続く名前の VM が生成されます。MACHINE_TYPE
: VM のマシンタイプ。IMAGE_PROJECT
: イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE
: 次のいずれかを指定します。OS イメージの特定のバージョン。例:
debian-12-bookworm-v20240617
。イメージ ファミリー。
family/IMAGE_FAMILY
の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12
を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
POLICY_NAME
: 既存のスプレッド プレースメント ポリシーの名前。リージョン インスタンス テンプレートを作成する場合は、スプレッド プレースメント ポリシーと同じリージョンにテンプレートを作成します。そうしないと、インスタンス テンプレートの作成は失敗します。
インスタンス テンプレートを作成するときに、VM を作成するアベイラビリティ ドメインを必要に応じて指定できます。すべての VM を 1 つのドメインに作成しないでください。作成すると、単一のハードウェア エラーがすべての VM に影響するリスクを軽減できません。
INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。MACHINE_TYPE
: インスタンス テンプレートを使用して作成された VM のマシンタイプ。POLICY_NAME
: 既存のスプレッド プレースメント ポリシーの名前。グローバル インスタンス テンプレートを作成するには:
instanceTemplates.insert
メソッド。リージョン インスタンス テンプレートを作成するには:
regionInstanceTemplates.insert
メソッド。PROJECT_ID
: スプレッド プレースメント ポリシーを含むプロジェクトの ID。INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。IMAGE_PROJECT
: イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE
: 次のいずれかを指定します。OS イメージの特定のバージョン。例:
debian-12-bookworm-v20240617
。イメージ ファミリー。
family/IMAGE_FAMILY
の形式にする必要があります。これにより、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12
を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
MACHINE_TYPE
: インスタンス テンプレートを使用して作成された VM のマシンタイプ。POLICY_NAME
: 既存のスプレッド プレースメント ポリシーの名前。INSTANCE_GROUP_NAME
: 作成する MIG の名前。SIZE
: MIG のサイズ。INSTANCE_TEMPLATE_NAME
: スプレッド プレースメント ポリシーを指定する既存のグローバル インスタンス テンプレートの名前。ZONE
: MIG を作成するゾーン。スプレッド プレースメント ポリシーが適用されているリージョン内である必要があります。ゾーン MIG を作成する:
instanceGroupManagers.insert
メソッド。リージョン MIG を作成する:
regionInstanceGroupManagers.insert
メソッド。PROJECT_ID
: スプレッド プレースメント ポリシーと、プレースメント ポリシーを指定するインスタンス テンプレートがあるプロジェクトの ID。ZONE
: MIG を作成するゾーン。スプレッド プレースメント ポリシーが適用されているリージョン内である必要があります。INSTANCE_GROUP_NAME
: 作成する MIG の名前。SIZE
: MIG のサイズ。INSTANCE_TEMPLATE_NAME
: スプレッド プレースメント ポリシーを指定する既存のグローバル インスタンス テンプレートの名前。INSTANCE_GROUP_NAME
: 既存の MIG の名前。INSTANCE_TEMPLATE_NAME
: スプレッド プレースメント ポリシーを指定する既存のグローバル インスタンス テンプレートの名前。ZONE
: MIG が配置されているゾーン。スプレッド プレースメント ポリシーは、プレースメント ポリシーと同じリージョン内の MIG にのみ適用できます。ゾーン MIG を更新する:
instanceGroupManagers.insert
メソッドリージョン MIG を更新する:
regionInstanceGroupManagers.insert
メソッド。PROJECT_ID
: 既存の MIG、スプレッド プレースメント ポリシー、スプレッド プレースメント ポリシーを指定するインスタンス テンプレートの作成に使用したプロジェクトの ID。ZONE
: MIG が配置されているゾーン。スプレッド プレースメント ポリシーは、プレースメント ポリシーと同じリージョン内の MIG にのみ適用できます。INSTANCE_GROUP_NAME
: 既存の MIG の名前。INSTANCE_TEMPLATE_NAME
: スプレッド プレースメント ポリシーを指定する既存のグローバル インスタンス テンプレートの名前。プレースメント ポリシーを表示する方法を学習する。
プレースメント ポリシーを置換、削除、消去する方法を学習する。
プレースメント ポリシーを指定する 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 に適用するために必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。この事前定義ロールには、スプレッド プレースメント ポリシーを作成して VM に適用するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
スプレッド プレースメント ポリシーを作成して VM に適用するには、次の権限が必要です。
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
スプレッド プレースメント ポリシーを作成する
VM へのスプレッド プレースメント ポリシーの適用をテストする場合を除いて、複数のアベイラビリティ ドメインを含むスプレッド プレースメント ポリシーを作成することをおすすめします。これにより、単一のハードウェア エラーによってすべての VM が影響を受けるリスクを軽減できます。詳細については、スプレッド プレースメント ポリシーについてをご覧ください。
スプレッド プレースメント ポリシーを作成するには、次のいずれかのオプションを選択します。
gcloud
スプレッド プレースメント ポリシーを作成するには、
--availability-domain-count
フラグを指定してgcloud compute resource-policies create group-placement
コマンドを使用します。gcloud compute resource-policies create group-placement POLICY_NAME \ --availability-domain-count=DOMAIN_COUNT \ --region=REGION
次のように置き換えます。
REST
スプレッド プレースメント ポリシーを作成するには、
resourcePolicies.insert
メソッドにPOST
リクエストを送信します。リクエスト本文に、availabilityDomainCount
フィールドを含めます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "POLICY_NAME", "groupPlacementPolicy": { "availabilityDomainCount": DOMAIN_COUNT } }
次のように置き換えます。
スプレッド プレースメント ポリシーを適用する
スプレッド プレースメント ポリシーは、既存の VM または MIG に適用できます。VM、インスタンス テンプレート、MIG を作成するときに適用することもできます。
スプレッド プレースメント ポリシーを Compute Engine リソースに適用するには、次のいずれかの方法を選択します。
VM にスプレッド プレースメント ポリシーを適用したら、VM の詳細を表示して
availabilityDomain
フィールドの値を確認することで、VM が配置されているアベイラビリティ ドメインを確認できます。既存の VM にポリシーを適用する
既存の VM にスプレッド プレースメント ポリシーを適用する前に、次のことを考慮してください。
VM を配置するアベイラビリティ ドメインを指定する場合は、プロパティを更新して、プレースメント ポリシーを VM に適用します。VM のプロパティを更新する場合は、
resourcePolicies
フィールドとscheduling.availabilityDomain
フィールドを含めてください。既存の VM にスプレッド プレースメント ポリシーを適用するには、次のいずれかを選択します。
gcloud
既存の VM にスプレッド プレースメント ポリシーを適用するには、
gcloud compute instances add-resource-policies
コマンドを使用します。gcloud compute instances add-resource-policies VM_NAME \ --resource-policies=POLICY_NAME \ --zone=ZONE
次のように置き換えます。
REST
スプレッド プレースメント ポリシーを既存の VM に適用するには、
instances.addResourcePolicies
メソッドにPOST
リクエストを送信します。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" ] }
次のように置き換えます。
VM の作成時にポリシーを適用する
スプレッド プレースメント ポリシーを指定する VM は、プレースメント ポリシーと同じリージョンにのみ作成できます。
スプレッド プレースメント ポリシーを指定する VM を作成するには、次のいずれかを選択します。
gcloud
スプレッド プレースメント ポリシーを指定する VM を作成するには、
--resource-policies
フラグを指定してgcloud compute instances create
コマンドを使用します。gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME \ --zone=ZONE
次のように置き換えます。
VM を作成するアベイラビリティ ドメインを指定する場合は、
--availability-domain
フラグを含めます。gcloud compute instances create VM_NAME \ --availability-domain=DOMAIN_NUMBER \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME \ --zone=ZONE
DOMAIN_NUMBER
は、VM を配置するアベイラビリティ ドメインの数に置き換えます。値は、1
以上、スプレッド プレースメント ポリシーで指定されたドメイン数以下にする必要があります。スプレッド プレースメント ポリシーのドメイン数を確認するには、プレースメント ポリシーの詳細を表示します。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", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] }
次のように置き換えます。
VM を作成するアベイラビリティ ドメインを指定する場合は、リクエスト本文に
availabilityDomain
フィールドを含めます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ], "scheduling": { "availabilityDomain": DOMAIN_NUMBER } }
DOMAIN_NUMBER
は、VM を配置するアベイラビリティ ドメインの数に置き換えます。値は、1
以上、スプレッド プレースメント ポリシーで指定されたドメイン数以下にする必要があります。スプレッド プレースメント ポリシーのドメイン数を確認するには、プレースメント ポリシーの詳細を表示します。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 \ --name-pattern=NAME_PATTERN \ --resource-policies=POLICY_NAME \ --zone=ZONE
次のように置き換えます。
VM を一括作成するアベイラビリティ ドメインを指定する場合は、
--availability-domain
フラグを含めます。gcloud compute instances bulk create \ --availability-domain=DOMAIN_NUMBER \ --count=COUNT \ --machine-type=MACHINE_TYPE \ --name-pattern=NAME_PATTERN \ --resource-policies=POLICY_NAME \ --zone=ZONE
DOMAIN_NUMBER
は、VM を配置するアベイラビリティ ドメインの数に置き換えます。値は、1
以上、スプレッド プレースメント ポリシーで指定されたドメイン数以下にする必要があります。スプレッド プレースメント ポリシーのドメイン数を確認するには、プレースメント ポリシーの詳細を表示します。REST
スプレッド プレースメント ポリシーを指定する VM を一括作成するには、
instances.bulkInsert
メソッドにPOST
を行います。リクエスト本文に、resourcePolicies
フィールドを含めます。たとえば、単一のゾーンで VM を一括作成し、VM の名前パターンを指定するには、次のように
POST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { "count": "COUNT", "namePattern": "NAME_PATTERN", "instanceProperties": { "machineType": "MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "POLICY_NAME" ] } }
次のように置き換えます。
VM を一括作成するアベイラビリティ ドメインを指定する場合は、リクエスト本文に
availabilityDomain
フィールドを含めます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { "count": "COUNT", "namePattern": "NAME_PATTERN", "instanceProperties": { "machineType": "MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "POLICY_NAME" ], "scheduling": { "availabilityDomain": DOMAIN_NUMBER } } }
DOMAIN_NUMBER
は、VM を配置するアベイラビリティ ドメインの数に置き換えます。値は、1
以上、スプレッド プレースメント ポリシーで指定されたドメイン数以下にする必要があります。スプレッド プレースメント ポリシーのドメイン数を確認するには、プレースメント ポリシーの詳細を表示します。VM を一括作成するための構成オプションの詳細については、VM を一括作成するをご覧ください。
インスタンス テンプレートの作成時にポリシーを適用する
スプレッド プレースメント ポリシーを指定するインスタンス テンプレートを作成する前に、次の点を確認してください。
スプレッド プレースメント ポリシーを指定するインスタンス テンプレートを作成すると、そのテンプレートを使用して次のことができます。
スプレッド プレースメント ポリシーを指定するインスタンス テンプレートを作成するには、次のいずれかのオプションを選択します。
gcloud
スプレッド プレースメント ポリシーを指定するインスタンス テンプレートを作成するには、
--resource-policies
フラグを指定してgcloud compute instance-templates create
コマンドを使用します。たとえば、スプレッド プレースメント ポリシーを指定するグローバル インスタンス テンプレートを作成するには、次のコマンドを実行します。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME
次のように置き換えます。
VM を作成するアベイラビリティ ドメインを指定する場合は、
--availability-domain
フラグを含めます。gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --availability-domain=DOMAIN_NUMBER \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME
DOMAIN_NUMBER
は、VM を作成するアベイラビリティ ドメインの数に置き換えます。値は、1
以上、プレースメント ポリシーで指定されたドメイン数以下にする必要があります。スプレッド プレースメント ポリシーのドメイン数を確認するには、プレースメント ポリシーの詳細を表示します。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" ] } }
次のように置き換えます。
VM を作成するアベイラビリティ ドメインを指定する場合は、リクエスト本文に
availabilityDomain
フィールドを含めます。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": { "availabilityDomain": DOMAIN_NUMBER } } }
DOMAIN_NUMBER
は、VM を作成するアベイラビリティ ドメインの数に置き換えます。値は、1
以上、プレースメント ポリシーで指定されたドメイン数以下にする必要があります。スプレッド プレースメント ポリシーのドメイン数を確認するには、プレースメント ポリシーの詳細を表示します。インスタンス テンプレートを作成するための構成オプションの詳細については、インスタンス テンプレートを作成するをご覧ください。
MIG 内の VM にポリシーを適用する
スプレッド プレースメント ポリシーを指定するインスタンス テンプレートを作成すると、そのテンプレートを使用して次のことができます。
MIG の作成時にポリシーを適用する
スプレッド プレースメント ポリシーを指定する VM は、VM がプレースメント ポリシーと同じリージョンにある場合にのみ作成できます。
スプレッド プレースメント ポリシーを指定するインスタンス テンプレートを使用して MIG を作成するには、次のいずれかの方法を選択します。
gcloud
スプレッド プレースメント ポリシーを指定するインスタンス テンプレートを使用して MIG を作成するには、
gcloud compute instance-groups managed create
コマンドを使用します。たとえば、スプレッド プレースメント ポリシーを指定するグローバル インスタンス テンプレートを使用してゾーン MIG を作成するには、次のコマンドを実行します。
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size=SIZE \ --template=INSTANCE_TEMPLATE_NAME \ --zone=ZONE
次のように置き換えます。
REST
スプレッド プレースメント ポリシーを指定するインスタンス テンプレートを使用して MIG を作成するには、次のいずれかのメソッドに
POST
リクエストを送信します。たとえば、スプレッド プレースメント ポリシーを指定するグローバル インスタンス テンプレートを使用してゾーン MIG を作成するには、次のように
POST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE, "versions": [ { "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME" } ] }
次のように置き換えます。
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 INSTANCE_GROUP_NAME \ --version=template=INSTANCE_TEMPLATE_NAME \ --zone=ZONE
次のように置き換えます。
REST
スプレッド プレースメント ポリシーを指定するインスタンス テンプレートを使用するように MIG を更新し、テンプレートのプロパティとプレースメント ポリシーを MIG 内の既存の VM に自動的に適用するには、次のいずれかのメソッドに
PATCH
リクエストを行います。たとえば、スプレッド プレースメント ポリシーを指定するグローバル インスタンス テンプレートを使用するようにゾーン MIG を更新し、MIG の既存の VM をテンプレートのプロパティを指定する新しい VM に置き換えるには、次の
PATCH
リクエストを送信します。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME { "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME" }
次のように置き換えます。
MIG 内の VM を更新するための構成オプションの詳細については、MIG 内の VM に新しい構成を更新して適用するをご覧ください。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-23 UTC。
-