建立並套用 VM 的擴散配置政策


本文說明如何為虛擬機器 (VM) 執行個體建立並套用擴散式放置政策,進而提高其可靠性。如要進一步瞭解配置方式政策 (包括限制和定價),請參閱配置方式政策總覽

散布式配置政策會指定 VM 應分散至不同的可用性網域。這項分發作業有助於減少特定位置中斷 (例如硬體錯誤),並可用於執行 Hadoop 分散式檔案系統 (HDFS)、Cassandra 或 Kafka 等大規模、分散式和複寫工作負載。

事前準備

  • 如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

必要的角色

如要取得建立並將擴散放置政策套用至 VM 所需的權限,請要求管理員為您授予專案的 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色包含建立並將擴散配置政策套用至 VM 所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要建立並套用 VM 的擴散放置政策,必須具備下列權限:

  • 如要建立刊登位置政策,請按照下列步驟操作: 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
    • 如要在使用舊版網路時將外部 IP 位址指派給 VM,請在專案中使用 compute.networks.useExternalIp
    • 如要為 VM 指定子網路,請在專案或所選子網路中使用 compute.subnetworks.use
    • 如要在使用虛擬私有雲網路時將外部 IP 位址指派給 VM,請在專案或所選子網路上設定 compute.subnetworks.useExternalIp
    • 如何為專案中的 VM: compute.instances.setMetadata 設定 VM 執行個體中繼資料
    • 如何為 VM 設定標記:compute.instances.setTags
    • 如何為 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 在專案中

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

建立分散配置政策

除非您想測試將擴散刊登位置政策套用至 VM,否則 Google Cloud 建議您建立含有兩個以上可用性網域的擴散刊登位置政策。這樣一來,所有 VM 都不會受到單一硬體錯誤的影響。詳情請參閱關於擴散刊登位置政策

如要建立廣告刊登位置擴散政策,請選取下列任一選項:

gcloud

如要建立廣告刊登位置擴散政策,請使用 gcloud compute resource-policies create group-placement 指令搭配 --availability-domain-count 旗標。

gcloud compute resource-policies create group-placement POLICY_NAME \
    --availability-domain-count=DOMAIN_COUNT \
    --region=REGION

更改下列內容:

  • POLICY_NAME:分散配置政策的名稱。

  • DOMAIN_COUNT:要放置 VM 的可用性網域數量。這個值的長度須介於 18 個半形字元。

  • 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
  }
}

更改下列內容:

  • PROJECT_ID:要建立刊登位置政策的專案 ID。

  • REGION:要建立刊登位置政策的區域。

  • POLICY_NAME:分散配置政策的名稱。

  • DOMAIN_COUNT:要放置 VM 的可用性網域數量。這個值的長度須介於 18 個半形字元。

套用分散配置政策

您可以將擴散放置政策套用至現有的 VM 或 MIG,也可以在建立 VM、執行個體範本或 MIG 時套用。

如要將分散配置政策套用至 Compute Engine 資源,請選取下列任一方法:

將擴散放置政策套用至 VM 後,您可以查看 VM 詳細資料並檢查 availabilityDomain 欄位的值,確認 VM 所在的可用性網域。

將政策套用至現有 VM

將散布版位政策套用至現有 VM 前,請考量下列事項:

  • 如果散布式放置政策指定多個可用性網域,您可以將政策套用至 VM,而無須停止 VM。不過,虛擬機器可能需要遷移至其他可用性網域。在此過程中,Compute Engine 會根據主機維護政策停止或即時遷移 VM。

  • VM 和散布放置政策必須位於相同區域。舉例來說,如果配置政策位於 us-central1 區域,則 VM 必須位於 us-central1 的某個區域。如果您需要將 VM 遷移至其他區域,請參閱「在可用區或區域之間移動 VM」。

如果您想指定要將 VM 放置在哪個可用性網域,請更新其屬性,將配置方式政策套用至 VM。更新 VM 的屬性時,請務必加入 resourcePoliciesscheduling.availabilityDomain 欄位。

如要將散布刊登位置政策套用至現有的 VM,請選取下列任一選項:

gcloud

如要將擴散放置政策套用至現有的 VM,請使用 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 所在區域。

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"
  ]
}

更改下列內容:

  • PROJECT_ID:散布放置政策和 VM 所在專案的 ID。

  • ZONE:VM 所在區域。

  • VM_NAME:現有 VM 的名稱。

  • REGION:分散配置政策所在的區域。

  • POLICY_NAME:現有廣告刊登位置政策的名稱。

在建立 VM 時套用政策

您只能建立 VM,指定與刊登位置政策相同的地區的散布刊登位置政策。

如要建立指定散布式放置政策的 VM,請選取下列任一選項:

gcloud

如要建立指定散布放置政策的 VM,請使用 gcloud compute instances create 指令搭配 --resource-policies 旗標。

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

更改下列內容:

  • VM_NAME:要建立的 VM 名稱。

  • MACHINE_TYPE:VM 的機器類型。

  • POLICY_NAME:現有廣告刊登位置政策的名稱。

  • ZONE:建立 VM 的區域。

您可以選擇加入 --availability-domain 旗標,指定要建立 VM 的可用性網域。

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"
  ]
}

更改下列內容:

  • PROJECT_ID:廣告刊登位置擴散政策所在專案的 ID。

  • ZONE:建立 VM 的區域,以及機器類型所在的位置。您只能在散布版位政策的區域內指定區域。

  • VM_NAME:要建立的 VM 名稱。

  • MACHINE_TYPE:VM 的機器類型。

  • IMAGE_PROJECT:包含圖片的圖片專案,例如 debian-cloud。如要進一步瞭解支援的圖像專案,請參閱「公開圖像」。

  • IMAGE:指定下列其中一個值:

    • 特定 OS 映像檔版本,例如 debian-12-bookworm-v20240617

    • 映像檔系列,其格式必須為 family/IMAGE_FAMILY。這會指定最新的非淘汰作業系統映像檔。舉例來說,如果您指定 family/debian-12,系統會使用 Debian 12 映像檔系列中的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • REGION:分散配置政策所在的區域。

  • 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,並在與放置政策相同的區域中指定分散放置政策。

  • 使用散布放置政策大量建立 VM 時,您可以選擇指定建立 VM 的雲端硬碟可用性網域。請勿在單一網域中建立所有 VM。否則,您就無法降低單一硬體錯誤影響所有 VM 的風險。

如要大量建立 VM 並指定擴散型放置政策,請選取下列任一選項:

gcloud

如要大量建立 VM 並指定散布放置政策,請使用 gcloud compute instances bulk create 指令搭配 --resource-policies 標記。

舉例來說,如要在單一可用區中大量建立 VM,並為 VM 指定名稱模式,請執行下列指令:

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

更改下列內容:

  • COUNT:要建立的 VM 數量。

  • MACHINE_TYPE:VM 的機器類型。

  • NAME_PATTERN:VM 的名稱模式。如要取代 VM 名稱中的數字序列,請使用一連串井字號 (#) 字元。舉例來說,如果將名稱模式設為 vm-#,系統就會產生名稱以 vm-1vm-2 開頭的 VM,並依 COUNT 指定的 VM 數量繼續產生。

  • POLICY_NAME:現有廣告刊登位置政策的名稱。

  • ZONE:要用於大量建立 VM 的可用區。

您可以選擇加入 --availability-domain 旗標,指定要用於大量建立 VM 的可用性網域。

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"
    ]
  }
}

更改下列內容:

  • PROJECT_ID:廣告刊登位置擴散政策所在專案的 ID。

  • ZONE:要用於大量建立 VM 的可用區。

  • COUNT:要建立的 VM 數量。

  • NAME_PATTERN:VM 的名稱模式。如要取代 VM 名稱中的數字序列,請使用一連串井字號 (#) 字元。舉例來說,如果將名稱模式設為 vm-#,系統就會產生名稱以 vm-1vm-2 開頭的 VM,並依 COUNT 指定的 VM 數量繼續產生。

  • MACHINE_TYPE:VM 的機器類型。

  • IMAGE_PROJECT:包含圖片的圖片專案,例如 debian-cloud。如要進一步瞭解支援的圖像專案,請參閱「公開圖像」。

  • IMAGE:指定下列其中一個值:

    • 特定 OS 映像檔版本,例如 debian-12-bookworm-v20240617

    • 映像檔系列,其格式必須為 family/IMAGE_FAMILY。這會指定最新的非淘汰作業系統映像檔。舉例來說,如果您指定 family/debian-12,系統會使用 Debian 12 映像檔系列中的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • POLICY_NAME:現有廣告刊登位置政策的名稱。

您可以選擇在要求主體中加入 availabilityDomain 欄位,藉此指定要用於大量建立 VM 的可用性網域。

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」。

在建立執行個體範本時套用政策

建立指定散布放置政策的執行個體範本前,請確認下列事項:

  • 如果您要建立地區執行個體範本,請在與分散放置政策相同的地區建立範本。否則,建立執行個體範本會失敗。

  • 建立執行個體範本時,您可以選擇指定建立 VM 的用戶端可用性網域。請勿在單一網域中建立所有 VM。否則,您就無法降低單一硬體錯誤影響所有 VM 的風險。

建立指定散布位置政策的執行個體範本後,您可以使用該範本執行下列操作:

如要建立指定散布放置政策的執行個體範本,請選取下列任一選項:

gcloud

如要建立指定散布放置政策的執行個體範本,請使用 gcloud compute instance-templates create 指令搭配 --resource-policies 旗標。

舉例來說,如要建立指定散布放置政策的全域執行個體範本,請執行下列指令:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

更改下列內容:

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。

  • MACHINE_TYPE:使用執行個體範本建立的 VM 的機器類型。

  • POLICY_NAME:現有廣告刊登位置政策的名稱。

您可以選擇加入 --availability-domain 旗標,指定要建立 VM 的可用性網域。

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"
    ]
  }
}

更改下列內容:

  • PROJECT_ID:廣告刊登位置擴散政策所在專案的 ID。

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。

  • IMAGE_PROJECT:包含圖片的圖片專案,例如 debian-cloud。如要進一步瞭解支援的圖像專案,請參閱「公開圖像」。

  • IMAGE:指定下列其中一個值:

    • 特定 OS 映像檔版本,例如 debian-12-bookworm-v20240617

    • 映像檔系列,其格式必須為 family/IMAGE_FAMILY。這會指定最新的非淘汰作業系統映像檔。舉例來說,如果您指定 family/debian-12,系統會使用 Debian 12 映像檔系列中的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • MACHINE_TYPE:使用執行個體範本建立的 VM 的機器類型。

  • POLICY_NAME:現有廣告刊登位置政策的名稱。

您可以選擇在要求主體中加入 availabilityDomain 欄位,藉此指定要建立 VM 的可用性網域。

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

更改下列內容:

  • INSTANCE_GROUP_NAME:要建立的 MIG 名稱。

  • SIZE:MIG 的大小。

  • INSTANCE_TEMPLATE_NAME:指定散布式放置政策的現有全球執行個體範本名稱。

  • ZONE:建立 MIG 的可用區,必須位於分散放置政策所在的區域內。

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"
    }
  ]
}

更改下列內容:

  • PROJECT_ID:散布刊登位置政策和指定刊登位置政策的執行個體範本所在專案的 ID。

  • ZONE:要建立 MIG 的可用區,必須位於分散放置政策所在的區域內。

  • INSTANCE_GROUP_NAME:要建立的 MIG 名稱。

  • SIZE:MIG 的大小。

  • 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

更改下列內容:

  • INSTANCE_GROUP_NAME:現有 MIG 的名稱。

  • INSTANCE_TEMPLATE_NAME:指定散布式放置政策的現有全球執行個體範本名稱。

  • ZONE:MIG 所在區域。您只能將分散配置政策套用至與配置政策位於同一區域的 MIG。

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"
}

更改下列內容:

  • PROJECT_ID:您用來建立現有 MIG、散布位置政策和指定散布位置政策的執行個體範本的 ID。

  • ZONE:MIG 所在區域。您只能將分散配置政策套用至與配置政策位於同一區域的 MIG。

  • INSTANCE_GROUP_NAME:現有 MIG 的名稱。

  • INSTANCE_TEMPLATE_NAME:指定散布式放置政策的現有全球執行個體範本名稱。

如要進一步瞭解如何更新 MIG 中的 VM,請參閱「更新 MIG 中的 VM 並套用新設定」。

後續步驟