使用密集配置政策來縮短延遲時間

本文說明如何建立密集配置方式政策,並套用至 Compute Engine 執行個體,藉此減少執行個體之間的網路延遲。如要進一步瞭解配置政策,包括支援的機器系列、限制和價格,請參閱「配置政策總覽」。

密集配置方式政策會指定執行個體應在實體上彼此靠近。舉例來說,當您執行高效能運算 (HPC)、機器學習 (ML) 或資料庫伺服器工作負載時,這項功能有助於提升效能,並縮短執行個體之間的網路延遲時間。

事前準備

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

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

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    2. Set a default region and zone.

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

必要的角色

如要取得建立緊密放置群組政策並套用至運算執行個體所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備建立緊湊配置政策,並套用至運算執行個體所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要建立並將緊湊配置政策套用至運算執行個體,您必須具備下列權限:

  • 如要建立刊登位置政策,請對專案具備 compute.resourcePolicies.create 權限。
  • 如要將配置政策套用至現有執行個體: compute.instances.addResourcePolicies 專案
  • 如何建立執行個體:
    • 專案的 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 設定 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
  • 如要查看執行個體的詳細資料: 按一下專案中的 compute.instances.get

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

建立密集配置政策

建立精簡版刊登位置政策前,請先考量以下事項:

  • 如要將密集配置政策套用至 M3、M2、M1、N2D 或 N2 以外的運算執行個體,建議您指定最大距離值

  • 根據預設,您無法將設有距離上限值的密集配置政策套用至 A3 Mega、A3 High 或 A3 Edge 執行個體。如要要求存取這項功能,請與帳戶團隊銷售團隊聯絡。

如要建立緊密配置政策,請選取下列任一選項:

gcloud

  • 如要將密集配置政策套用至 M3、M2、M1、N2D 或 N2 執行個體,請使用 gcloud compute resource-policies create group-placement 指令搭配 --collocation=collocated 旗標建立政策。

    gcloud compute resource-policies create group-placement POLICY_NAME \
        --collocation=collocated \
        --region=REGION
    

    更改下列內容:

    • POLICY_NAME:密集配置政策的名稱。

    • REGION:要建立放置政策的區域。

  • 如要將緊湊放置政策套用至任何其他支援的執行個體,請使用 gcloud beta compute resource-policies create group-placement 指令搭配 --collocation=collocated--max-distance 標記建立政策。

    gcloud beta compute resource-policies create group-placement POLICY_NAME \
        --collocation=collocated \
        --max-distance=MAX_DISTANCE \
        --region=REGION
    

    更改下列內容:

    • POLICY_NAME:密集配置政策的名稱。

    • MAX_DISTANCE:執行個體的最大距離設定。值必須介於 1 (指定將執行個體放在同一個機架,盡可能降低網路延遲) 和 3 (指定將執行個體放在相鄰的叢集) 之間。如要將密集配置政策套用至預留項目,或是 A4 或 A3 Ultra 執行個體,就無法指定 1 值。

    • REGION:要建立放置政策的區域。

REST

  • 如要將密集配置政策套用至 M3、M2、M1、N2D 或 N2 執行個體,請對 resourcePolicies.insert 方法發出 POST 要求,建立政策。在要求主體中加入 collocation 欄位,並將其設為 COLLOCATED

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies
    
    {
      "name": "POLICY_NAME",
      "groupPlacementPolicy": {
        "collocation": "COLLOCATED"
      }
    }
    

    更改下列內容:

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

    • REGION:要建立放置政策的區域。

    • POLICY_NAME:密集配置政策的名稱。

  • 如要將密集配置政策套用至任何其他支援的執行個體,請對 beta.resourcePolicies.insert 方法發出 POST 要求,藉此建立政策。在要求主體中加入下列內容:

    • collocation 欄位設為 COLLOCATED

    • maxDistance 欄位。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies
    
    {
      "name": "POLICY_NAME",
      "groupPlacementPolicy": {
        "collocation": "COLLOCATED",
        "maxDistance": MAX_DISTANCE
      }
    }
    

    更改下列內容:

    • PROJECT_ID:您要在當中建立放置位置政策的專案 ID。

    • REGION:要建立放置群組政策的區域。

    • POLICY_NAME:密集配置政策的名稱。

    • MAX_DISTANCE:執行個體的最大距離設定。值必須介於 1 (指定將執行個體放在同一個機架,盡可能降低網路延遲) 和 3 (指定將執行個體放在相鄰的叢集) 之間。如要將密集配置政策套用至預留項目,或是 A4 或 A3 Ultra 執行個體,就無法指定 1 值。

套用密集配置政策

您可以將緊湊放置政策套用至現有的運算執行個體或代管執行個體群組 (MIG),也可以在建立執行個體、執行個體範本、MIG 或執行個體預留項目時套用。

如要將密集配置政策套用至 Compute Engine 資源,請選取下列其中一種方法:

將緊密配置政策套用至執行個體後,您可以驗證執行個體的實體位置,瞭解該執行個體與指定相同配置政策的其他執行個體之間的關係。

將政策套用至現有的執行個體

將密集配置政策套用至現有運算執行個體前,請確認下列事項:

否則,將密集配置政策套用至執行個體就會失敗。如果執行個體已指定配置政策,且您想取代該政策,請參閱取代執行個體中的配置政策

如要將密集配置政策套用至現有執行個體,請選取下列其中一個選項:

gcloud

  1. 停止執行個體

  2. 如要將緊密放置政策套用至現有的執行個體,請使用 gcloud compute instances add-resource-policies 指令

    gcloud compute instances add-resource-policies INSTANCE_NAME \
        --resource-policies=POLICY_NAME \
        --zone=ZONE
    

    更改下列內容:

    • INSTANCE_NAME:現有執行個體的名稱。

    • POLICY_NAME:現有精簡放置政策的名稱。

    • ZONE:執行個體所在的區域。

  3. 重新啟動執行個體

REST

  1. 停止執行個體

  2. 如要將密集配置政策套用至現有的執行個體,請對 instances.addResourcePolicies 方法發出 POST 要求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addResourcePolicies
    
    {
      "resourcePolicies": [
        "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
      ]
    }
    

    更改下列內容:

    • PROJECT_ID:精簡放置政策和執行個體所在的專案 ID。

    • ZONE:執行個體所在的區域。

    • INSTANCE_NAME:現有執行個體的名稱。

    • REGION:密集配置政策所在的區域。

    • POLICY_NAME:現有精簡放置政策的名稱。

  3. 重新啟動執行個體

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

您只能在與配置政策相同的區域中,建立指定密集配置政策的運算執行個體。

如要建立指定密集配置政策的執行個體,請選取下列任一選項:

gcloud

如要建立指定緊湊放置政策的執行個體,請使用 gcloud compute instances create 指令搭配 --maintenance-policy--resource-policies 旗標。

gcloud compute instances create INSTANCE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=MAINTENANCE_POLICY \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

更改下列內容:

  • INSTANCE_NAME:要建立的執行個體名稱。

  • MACHINE_TYPE:適用於密集配置政策的支援機型

  • MAINTENANCE_POLICY:執行個體的主機維護政策。如果您指定的密集配置政策使用 12 的最大距離值,或是所選機型不支援即時遷移,則只能指定 TERMINATE。否則,您可以指定 MIGRATETERMINATE

  • POLICY_NAME:現有精簡放置政策的名稱。

  • ZONE:要建立執行個體的可用區。

REST

如要建立指定密集配置政策的執行個體,請對 instances.insert 方法發出 POST 要求。在要求主體中加入 onHostMaintenanceresourcePolicies 欄位。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "INSTANCE_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": {
    "onHostMaintenance": "MAINTENANCE_POLICY"
  }
}

更改下列內容:

  • PROJECT_ID:精簡放置政策所在的專案 ID。

  • ZONE:要建立執行個體的可用區,以及機器類型所在的可用區。您只能在密集配置政策的區域中指定區域。

  • INSTANCE_NAME:要建立的執行個體名稱。

  • MACHINE_TYPE:適用於密集配置政策的支援機型

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

  • IMAGE:指定下列其中一項:

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

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

  • REGION:密集配置政策所在的區域。

  • POLICY_NAME:現有精簡放置政策的名稱。

  • MAINTENANCE_POLICY:執行個體的主機維護政策。如果您指定的密集配置政策使用 12 的最大距離值,或是所選機型不支援即時遷移,則只能指定 TERMINATE。否則,您可以指定 MIGRATETERMINATE

如要進一步瞭解如何建立執行個體及其他選項,請參閱「建立和啟動執行個體」一文。

大量建立執行個體時套用政策

您只能使用密集配置政策,在與配置政策相同的區域中,大量建立運算執行個體。

如要大量建立指定密集配置政策的執行個體,請選取下列任一選項:

gcloud

如要大量建立執行個體並指定緊湊放置政策,請使用 gcloud compute instances bulk create 指令搭配 --maintenance-policy--resource-policies 旗標。

舉例來說,如要在單一區域中大量建立執行個體,並指定執行個體的名稱模式,請執行下列指令:

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

更改下列內容:

  • COUNT:要建立的執行個體數量,不得高於指定密集配置政策的支援執行個體數量上限

  • MACHINE_TYPE:適用於密集配置政策的支援機型

  • MAINTENANCE_POLICY:執行個體的主機維護政策。如果您指定的密集配置政策使用 12 的最大距離值,或是所選機型不支援即時遷移,則只能指定 TERMINATE。否則,您可以指定 MIGRATETERMINATE

  • NAME_PATTERN:執行個體的名稱模式。如要取代執行個體名稱中的數列,請使用一連串井字號 (#) 字元。舉例來說,使用 vm-# 做為名稱模式會產生執行個體,名稱開頭為 vm-1vm-2,並持續到 COUNT 指定的執行個體數量。

  • POLICY_NAME:現有精簡放置政策的名稱。

  • ZONE:要大量建立執行個體的可用區。

REST

如要大量建立指定密集配置政策的執行個體,請對 instances.bulkInsert 方法發出 POST 要求。在要求主體中加入 onHostMaintenanceresourcePolicies 欄位。

舉例來說,如要在單一可用區中大量建立執行個體,並指定執行個體的名稱模式,請發出下列 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": [
      "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
    ],
    "scheduling": {
      "onHostMaintenance": "MAINTENANCE_POLICY"
    }
  }
}

更改下列內容:

  • PROJECT_ID:精簡放置政策所在的專案 ID。

  • ZONE:要大量建立執行個體的可用區。

  • COUNT:要建立的執行個體數量,不得高於指定密集配置政策的支援執行個體數量上限

  • NAME_PATTERN:執行個體的名稱模式。如要取代執行個體名稱中的數列,請使用一連串井字號 (#) 字元。舉例來說,使用 vm-# 做為名稱模式會產生執行個體,名稱開頭為 vm-1vm-2,並持續到 COUNT 指定的執行個體數量。

  • MACHINE_TYPE:適用於密集配置政策的支援機型

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

  • IMAGE:指定下列其中一項:

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

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

  • REGION:密集配置政策所在的區域。

  • POLICY_NAME:現有精簡放置政策的名稱。

  • MAINTENANCE_POLICY:執行個體的主機維護政策。如果您指定的密集配置政策使用 12 的最大距離值,或是所選機器類型不支援即時遷移,則只能指定 TERMINATE。否則,您可以指定 MIGRATETERMINATE

如要進一步瞭解如何使用設定選項大量建立執行個體,請參閱「大量建立執行個體」。

建立預訂時套用政策

如要建立指定緊密放置策略的單一專案隨需預留項目,請建立明確指定的預留項目。建立執行個體來使用預留項目時,請確認下列事項:

  • 執行個體必須指定套用至預訂的相同密集配置政策。

  • 執行個體必須明確指定保留項目,才能使用該項目。詳情請參閱「從特定預訂項目使用執行個體」。

如要建立採用密集配置政策的單一專案預留項目,請選取下列其中一種方法:

如要直接指定屬性,並建立採用密集配置政策的單一專案預留項目,請選取下列其中一個選項:

控制台

  1. 前往 Google Cloud 控制台的「Reservations」(預留項目) 頁面。

    前往「Reservations」(預留項目) 頁面

  2. 按一下 「建立預留項目」。「Create a reservation」(建立預留項目) 頁面隨即顯示。

  3. 在「Name」(名稱) 欄位中,輸入預留項目的名稱。

  4. 在「Region」(區域) 和「Zone」(可用區) 清單中,選取要預留資源的區域和可用區。

  5. 在「Use with VM instance」(搭配 VM 執行個體使用) 部分,選取「Select specific reservation」(選取特定保留項目)

  6. 在「VM instances and GPUs」(VM 執行個體和 GPU) 專區中,執行以下操作:

    1. 在「Number of VM instances」(VM 執行個體數量) 欄位中,輸入要預留的 VM 數量。

    2. 指定支援密集配置政策的機器系列和類型。

  7. 在「群組配置政策」部分,按一下「選取或建立群組配置政策」清單,然後執行下列其中一項操作:

    • 如要建立精簡刊登位置政策,請完成下列步驟:

      1. 按一下「建立群組配置政策」。「建立群組配置政策」窗格隨即顯示。

      2. 在「Policy name」(政策名稱) 欄位中,輸入政策名稱。

      3. 點選「建立」

    • 如要選取現有的密集配置政策,請選取要預留執行個體所在的區域中現有的政策。

  8. 如要建立預留項目,請點選「Create」(建立)

gcloud

如要直接指定屬性,並使用精簡的放置位置政策建立單一專案預留項目,請使用 gcloud compute reservations create 指令搭配 --require-specific-reservation--resource-policies=policy 旗標。

gcloud compute reservations create RESERVATION_NAME \
    --machine-type=MACHINE_TYPE \
    --require-specific-reservation \
    --resource-policies=policy=POLICY_NAME \
    --vm-count=NUMBER_OF_INSTANCES \
    --zone=ZONE

更改下列內容:

  • RESERVATION_NAME:預訂名稱。

  • MACHINE_TYPE:適用於密集配置政策的支援機型

  • POLICY_NAME:現有精簡放置政策的名稱。

  • NUMBER_OF_INSTANCES:要預留的執行個體數量,不得高於指定密集配置政策的支援執行個體數量上限

  • 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_INSTANCES",
    "instanceProperties": {
      "machineType": "MACHINE_TYPE",
    }
  },
  "specificReservationRequired": true
}

更改下列內容:

  • PROJECT_ID:精簡放置政策所在的專案 ID。

  • ZONE:要預留執行個體的可用區。您只能在指定緊密配置方式政策的區域中,預留執行個體。

  • RESERVATION_NAME:預訂名稱。

  • REGION:密集配置政策所在的區域。

  • POLICY_NAME:現有精簡放置政策的名稱。

  • NUMBER_OF_INSTANCES:要預留的執行個體數量,不得高於指定密集配置政策的支援執行個體數量上限

  • MACHINE_TYPE:適用於密集配置政策的支援機型

如要進一步瞭解如何設定單一專案預留項目,請參閱「為單一專案建立預留項目」。

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

如要建立區域執行個體範本,範本和緊湊配置政策必須位於相同區域。否則,系統會無法建立執行個體範本。

建立指定緊密放置策略的執行個體範本後,您可以使用該範本執行下列操作:

如要建立指定緊湊配置政策的執行個體範本,請使用下列其中一種方法:

  • 如要使用新的緊湊放置群組政策建立區域執行個體範本,請使用 Google Cloud 控制台。新政策未指定距離值上限,且最多可套用至 22 個執行個體。

  • 如要建立指定現有緊湊放置政策的區域或全域執行個體範本,請使用 gcloud CLI 或 REST API。

如要建立執行個體範本,請選取下列任一選項:

控制台

  1. 前往 Google Cloud 控制台的「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本)

  2. 按一下「建立執行個體範本」。「建立執行個體範本」頁面隨即顯示。

  3. 在「Region」(區域) 欄位中,指定要建立緊湊放置群組原則和執行個體範本的區域。

  4. 在「Machine configuration」(機器設定) 區段中,指定支援密集配置政策的機器系列和類型。

  5. 在「Placement policy」(放置政策) 部分的「Placement policy」(放置政策) 清單中,選取「Compact」(緊密)。選取這個選項後,控制台會自動產生精簡的刊登位置政策,不含最大距離值,最多支援 22 個執行個體。Google Cloud

  6. 點選「建立」

gcloud

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

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

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

更改下列內容:

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

  • MACHINE_TYPE:適用於密集配置政策的支援機型

  • MAINTENANCE_POLICY:執行個體的主機維護政策。如果您指定的密集配置政策使用 12 的最大距離值,或是所選機器類型不支援即時遷移,則只能指定 TERMINATE。否則,您可以指定 MIGRATETERMINATE

  • POLICY_NAME:現有精簡放置政策的名稱。

REST

如要建立指定精簡放置政策的執行個體範本,請對下列其中一種方法發出 POST 要求:

在要求主體中加入 onHostMaintenanceresourcePolicies 欄位。

舉例來說,如要建立指定緊湊放置策略的全域執行個體範本,請發出下列 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"
    }
  }
}

更改下列內容:

  • 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:適用於密集配置政策的支援機型

  • POLICY_NAME:現有精簡放置政策的名稱。

  • MAINTENANCE_POLICY:執行個體的主機維護政策。如果您指定的密集配置政策使用 12 的最大距離值,或是所選機型不支援即時遷移,則只能指定 TERMINATE。否則,您可以指定 MIGRATETERMINATE

如要進一步瞭解如何設定選項來建立執行個體範本,請參閱「建立執行個體範本」。

將政策套用至 MIG 中的執行個體

建立執行個體範本並指定緊密放置政策後,您可以使用該範本執行下列操作:

在建立 MIG 時套用政策

只有當執行個體與配置政策位於相同地區時,您才能建立指定密集配置政策的運算執行個體。

如要使用指定密集配置政策的執行個體範本建立 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 名稱。

  • INSTANCE_TEMPLATE_NAME:現有全域執行個體範本的名稱,該範本指定了密集配置政策。

  • SIZE:MIG 的大小。

如要進一步瞭解建立 MIG 的設定選項,請參閱「建立 MIG 的基本情境」。

將政策套用至現有 MIG

只有當現有 MIG 與配置政策位於相同區域,或區域 MIG 與配置政策位於相同區域的可用區時,您才能將密集配置政策套用至現有 MIG。

如要更新 MIG,使其使用指定密集配置政策的執行個體範本,請選取下列其中一個選項:

gcloud

如要更新 MIG,使其使用指定緊密放置政策的執行個體範本,請使用 gcloud compute instance-groups managed rolling-action start-update 指令

舉例來說,如要更新區域 MIG,以使用指定緊密放置政策的執行個體範本,並將 MIG 中的現有執行個體取代為指定範本屬性的新執行個體,請執行下列指令:

gcloud compute instance-groups managed rolling-action start-update MIG_NAME \
    --version=template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

更改下列內容:

  • MIG_NAME:現有 MIG 的名稱。

  • INSTANCE_TEMPLATE_NAME:現有全域執行個體範本的名稱,該範本指定了密集配置政策。

  • ZONE:MIG 所在的可用區。您只能將密集配置政策套用至與配置政策位於同一地區的 MIG。

REST

如要更新 MIG,使其使用指定緊密放置群組政策的執行個體範本,並自動將範本和放置群組政策的屬性套用至 MIG 中的現有執行個體,請對下列其中一種方法提出 PATCH 要求:

舉例來說,如要更新區域 MIG,以使用指定緊密放置政策的全球執行個體範本,並將 MIG 中的現有執行個體取代為指定範本屬性的新執行個體,請發出下列 PATCH 要求:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
}

更改下列內容:

  • PROJECT_ID:代管執行個體群組、緊密配置政策,以及指定配置政策的執行個體範本所在的專案 ID。

  • ZONE:MIG 所在的可用區。您只能將密集配置政策套用至與配置政策位於同一地區的 MIG。

  • MIG_NAME:現有 MIG 的名稱。

  • INSTANCE_TEMPLATE_NAME:現有全域執行個體範本的名稱,該範本指定了密集配置政策。

如要進一步瞭解更新 MIG 中執行個體的設定選項,請參閱「更新 MIG 中執行個體的設定並套用新設定」。

驗證執行個體的實際位置

將緊密放置群組政策套用至 Compute 執行個體後,您就能查看該執行個體與其他執行個體之間的實體位置關係。這項比較僅限於專案中的執行個體,且這些執行個體必須指定相同的精簡放置政策。查看執行個體的實體位置有助於執行下列操作:

  • 確認政策是否已成功套用。

  • 找出彼此最接近的執行個體。

如要查看執行個體相對於指定相同密集配置政策的其他執行個體的位置,請選取下列其中一個選項:

gcloud

如要查看指定密集配置政策的執行個體實體位置,請使用 gcloud compute instances describe 指令並加上 --format 旗標。

gcloud compute instances describe INSTANCE_NAME \
    --format="table[box,title=VM-Position](resourcePolicies.scope():sort=1,resourceStatus.physicalHost:label=location)" \
    --zone=ZONE

更改下列內容:

  • INSTANCE_NAME:現有執行個體的名稱,用於指定密集配置政策。

  • ZONE:執行個體所在的區域。

輸出結果會與下列內容相似:

VM-Position

RESOURCE_POLICIES: us-central1/resourcePolicies/example-policy']
PHYSICAL_HOST: /CCCCCCC/BBBBBB/AAAA

PHYSICAL_HOST 欄位的值由三部分組成。這些部分分別代表執行個體所在的叢集、機架和主機。

在專案中比較使用相同精簡配置政策的兩個例項位置時,例項共用 PHYSICAL_HOST 欄位的部分越多,實體位置就越接近。舉例來說,假設有兩個執行個體都為 PHYSICAL_HOST 欄位指定下列其中一個範例值:

  • /CCCCCCC/xxxxxx/xxxx:這兩個執行個體會放在同一個叢集中,等於最大距離值為 2。配置在同一個叢集中的執行個體,網路延遲時間較短。

  • /CCCCCCC/BBBBBB/xxxx:這兩個執行個體位於同一個機架,因此最大距離值等於 1。與放在同一個叢集中的執行個體相比,放在同一個機架中的執行個體網路延遲時間較短。

  • /CCCCCCC/BBBBBB/AAAA:這兩個執行個體共用相同主機。配置在同一主機中的執行個體,可盡量縮短網路延遲時間。

REST

如要查看指定密集配置政策的執行個體實體位置,請向 instances.get 方法發出 GET 要求。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

更改下列內容:

  • PROJECT_ID:執行個體所在的專案 ID。

  • ZONE:執行個體所在的區域。

  • INSTANCE_NAME:現有執行個體的名稱,用於指定密集配置政策。

輸出結果會與下列內容相似:

{
  ...
  "resourcePolicies": [
    "https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/resourcePolicies/example-policy"
  ],
  "resourceStatus": {
    "physicalHost": "/xxxxxxxx/xxxxxx/xxxxx"
  },
  ...
}

physicalHost 欄位的值由三部分組成。這些部分分別代表執行個體所在的叢集、機架和主機。

在專案中比較使用相同精簡配置政策的兩個例項位置時,例項共用 physicalHost 欄位的部分越多,實體位置就越接近。舉例來說,假設有兩個執行個體都為 physicalHost 欄位指定下列其中一個範例值:

  • /CCCCCCC/xxxxxx/xxxx:這兩個執行個體會放在同一個叢集中,等於最大距離值為 2。配置在同一個叢集中的執行個體,網路延遲時間較短。

  • /CCCCCCC/BBBBBB/xxxx:這兩個執行個體位於同一個機架,因此最大距離值等於 1。與放在同一個叢集中的執行個體相比,放在同一個機架中的執行個體網路延遲時間較短。

  • /CCCCCCC/BBBBBB/AAAA:這兩個執行個體共用相同主機。配置在同一主機中的執行個體會盡可能縮短網路延遲時間。

後續步驟