ゾーン内でインスタンスを物理的に配置する場所を制御できます。次のプレースメント ポリシーを利用できます。
- スプレッド: ホストのシステム障害の影響を軽減するためにインスタンスを分散させる場合には、スプレッド ポリシーを使用します。
- コンパクト: インスタンス間のネットワーク レイテンシを低くするため、相互に近い場所にインスタンスを配置する場合は、コンパクト ポリシーを使用します。
始める前に
- このガイドのコマンドラインの例を使用する場合、以下を行ってください。
- gcloud コマンドライン ツールの最新バージョンをインストールするか、最新バージョンに更新します。
- デフォルトのリージョンとゾーンを設定します。
- このガイドの API の例を使用する場合、API アクセスを設定します。
制限
プレースメント ポリシーには次の制限があります。
- スプレッド:
- ポリシーごとに最大 8 個のインスタンス
- さまざまな数のインスタンスに適用可能
- N1、N2、N2D、C2 マシンタイプのみをサポート
- コンパクト
- ポリシーごとに最大 22 個のインスタンス
- 一定数のインスタンスに適用
- C2 マシンタイプのみをサポート
- ライブ マイグレーションはサポート対象外。また、プレースメント ポリシーが構成されているインスタンスは、ホスト メンテナンス時に
TERMINATE
に設定する必要あり
- スプレッドとコンパクトの両方:
プレースメント ポリシーの定義と適用
インスタンスの相対位置を制御するには、次の操作を行います。
- インスタンスに必要なプレースメント構成でプレースメント ポリシーを作成します。次のいずれかのポリシータイプを作成できます。
- 1 つ以上のインスタンスにプレースメント ポリシーを適用します。同じポリシーを共有するインスタンスは、ポリシーの定義に従って相互に配置されます。
スプレッド プレースメント ポリシーを作成する
複数の異なるアベイラビリティ ドメインにインスタンスを配置するスプレッド プレースメント ポリシーを作成するには、このポリシーでインスタンスの分離に使用するアベイラビリティ ドメインの数を指定します。
gcloud
gcloud
ツールを使用してポリシーを作成します。
gcloud compute resource-policies create group-placement POLICY_NAME \ --availability-domain-count DOMAIN_COUNT \ --region REGION \ --project PROJECT_ID
次のように置き換えます。
POLICY_NAME
: 新しいポリシーの名前DOMAIN_COUNT
: このポリシーがインスタンスの分離に使用するホスト ハードウェアと物理ネットワークのセット数REGION
: このポリシーを使用する VM インスタンスを作成するリージョンPROJECT_ID
: プロジェクト ID。
API
Cloud Console の [API とサービス] で resourcePolicies.insert
メソッドを使用して、スプレッド プレースメント ポリシーを作成します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "POLICY_NAME", "groupPlacementPolicy": { "availabilityDomainCount": DOMAIN_COUNT } }
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。REGION
: このポリシーを使用する VM インスタンスを作成するリージョンPOLICY_NAME
: 新しいポリシーの名前DOMAIN_COUNT
: このポリシーがインスタンスの分離に使用するホスト ハードウェアと物理ネットワークのセット数
コンパクト プレースメント ポリシーを作成する
インスタンスを相互に近い同じネットワーク インフラストラクチャに配置するコンパクト プレースメント ポリシーを作成するには、COLLOCATED
ポリシーとそのポリシーに含める VM インスタンスの数を指定します。
gcloud
gcloud
ツールを使用してポリシーを作成します。
gcloud compute resource-policies create group-placement POLICY_NAME \ --collocation COLLOCATED \ --vm-count VM_COUNT \ --region REGION \ --project PROJECT_ID
次のように置き換えます。
POLICY_NAME
: 新しいポリシーの名前。VM_COUNT
: ポリシーに含める VM インスタンスの数。コンパクト ポリシーの場合は、この数のインスタンスにポリシーを適用する必要があります。REGION
: このポリシーを使用する VM インスタンスを作成するリージョン。PROJECT_ID
: プロジェクト ID。
API
Cloud Console の [API とサービス] で resourcePolicies.insert
メソッドを使用してスプレッド プレースメント ポリシーを作成します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "POLICY_NAME", "groupPlacementPolicy": { "vmCount": VM_COUNT, "collocation": "COLLOCATED" } }
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。REGION
: このポリシーを使用する VM インスタンスを作成するリージョン。POLICY_NAME
: 新しいポリシーの名前。VM_COUNT
: ポリシーに含める VM インスタンスの数。コンパクト ポリシーの場合は、この数のインスタンスにポリシーを適用する必要があります。
インスタンスへのプレースメント ポリシーの適用
新しいインスタンスにプレースメント ポリシーを適用できます。
新しいインスタンスへのプレースメント ポリシーの適用
プレースメント ポリシーを作成したら、1 つ以上のインスタンスに適用します。同じポリシーを共有するインスタンスは、ポリシーの定義に従って相互に配置されます。
gcloud
新しいインスタンスを作成するときに --resource-policies
フラグを指定して、インスタンスにプレースメント ポリシーを適用します。コンパクトなプレースメント ポリシーの場合、--maintenance-policy=TERMINATE --no-restart-on-failure
を含める必要があります。
gcloud compute instances create VM_NAME \ --zone ZONE \ --resource-policies POLICY_NAME \ --image-family IMAGE_FAMILY \ --image-project IMAGE_PROJECT \ --project PROJECT_ID \ [[--maintenance-policy=TERMINATE]] \ [[--no-restart-on-failure]]
次のように置き換えます。
VM_NAME
: 新しいインスタンスの名前。ZONE
: 新しいインスタンスを作成するゾーン。このゾーンは、プレースメント ポリシーと同じリージョンに存在する必要があります。POLICY_NAME
: このインスタンスに適用するプレースメント ポリシーの名前。1 つのインスタンスに複数のプレースメント ポリシーを適用できます。IMAGE_FAMILY
: 使用可能なイメージ ファミリーのいずれか。IMAGE_PROJECT
: イメージが属するイメージ プロジェクト。PROJECT_ID
: プロジェクト ID。
API
新しいインスタンスを作成するときに resourcePolicies
プロパティを指定し、インスタンスにプレースメント ポリシーを適用します。コンパクトなプレースメント ポリシーの場合、"onHostMaintenance": "TERMINATE"
と "automaticRestart": false
を含める必要があります。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "machineTypes/MACHINE_TYPE" "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT" }], "network": "global/networks/default" }], "scheduling": { "onHostMaintenance": "TERMINATE", "automaticRestart": false }, "disks": [{ "autoDelete": "true", "boot": "true", "type": "PERSISTENT", "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }], "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] }
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。ZONE
: 新しいインスタンスを作成するゾーン。このゾーンは、プレースメント ポリシーと同じリージョンに存在する必要があります。VM_NAME
: 新しいインスタンスの名前。MACHINE_TYPE
: インスタンスのマシンタイプ。IMAGE_PROJECT
: イメージが属するイメージ プロジェクト。IMAGE_FAMILY
: 使用可能なイメージ ファミリーのいずれか。REGION
: プレースメント ポリシーを作成したリージョン。POLICY_NAME
: このインスタンスに適用するプレースメント ポリシーの名前。1 つのインスタンスに複数のプレースメント ポリシーを適用できます。
次のステップ
- インスタンスのステータスと使用するタイミングを確認する。
- インスタンスに接続する。
- サービスの中断にも対応できる堅牢なシステムを設計するためのヒントを確認する。