在區域性 MIG 中為 VM 設定目標分配型態

如果您使用區域性代管執行個體群組 (MIG),可以將該 MIG 的目標分配型態設為下列其中一個選項:

  • EVEN (預設):群組會建立及刪除 VM,在所選可用區中達到並維持相同的 VM 數量。在EVEN分布中,任何兩個可用區之間的 VM 數量差異不會超過 1。建議用於高可用性的服務工作負載。
  • BALANCED:群組會優先在有可用資源的可用區建立 VM,同時盡可能平均分配 VM 到所選可用區,盡量降低可用區故障的影響。建議用於高可用性服務或批次工作負載。
  • ANY:群組會挑選可用區來建立 VM 執行個體,在現有資源限制內滿足要求的 VM 數量,並盡可能提高未使用的可用區預留項目使用率。建議用於不需要高可用性的批次工作負載。
  • 任何單一可用區:群組會在單一可用區內建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預留項目來選擇可用區。如果工作負載需要在 VM 之間進行大量通訊,建議搭配使用 密集執行個體配置政策。

如要在區域性代管執行個體群組中使用預留 VM,請在每個適用可用區中建立名稱相同的預留項目。接著,在群組的執行個體範本中,依名稱指定這些預留項目。

如要選擇形狀,請參閱比較表、用途和分布形狀的運作方式。

建立區域性 MIG 時,請設定目標分配型態,或更新現有區域性 MIG 的目標型態。

事前準備

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

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設區域和可用區。
  • Terraform

    如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。

    1. 安裝 Google Cloud CLI。

    2. 設定 gcloud CLI,使用您的聯合身分。

      詳情請參閱「 使用聯合身分登入 gcloud CLI」。

    3. 為使用者帳戶建立本機驗證憑證:

      gcloud auth application-default login

      如果傳回驗證錯誤,請確認您已 使用聯合身分登入 gcloud CLI。

    詳情請參閱「 為本機開發環境設定驗證機制」。

    REST

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

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

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

限制

  • 您只能在建立 MIG 時選取可用區。
  • 如果您在 MIG 的執行個體範本或有狀態設定中指定的資源,並非所有選定可用區都提供,則適用下列限制:

    • 您必須將目標分配型態設為 BALANCED、ANY 或 ANY_SINGLE_ZONE。
    • 您必須確保 MIG 所需的任何資源 (例如現有磁碟、機器類型或 GPU) 至少在其中一個所選可用區中可用。
    • 如要將 MIG 的設定 (例如執行個體範本) 更新為無法在所有選定可用區中例項化的設定,請先從所有不支援的可用區移除代管執行個體,再套用新設定。
  • 如要將目標分配型態設為 BALANCED 或 ANY_SINGLE_ZONE,必須停用主動式執行個體重新分配功能。

  • 如果將目標分配型態設為 BALANCED、ANY 或 ANY_SINGLE_ZONE,則適用下列限制:

    • 不支援具有兩個版本的Canary更新。
    • 如果整個區域中要求的資源有限,群組可能會在資源已無法使用的可用區中排定 VM 執行個體建立作業。您可以嘗試縮減及擴大群組規模,在其他可用區取得要求的資源。
    • 使用 SUBSTITUTE 替換方法的滾動式更新,會嘗試在與過時機器相同的可用區中建立新的更新執行個體,即使該可用區沒有資源可容納新版本的要求也一樣。如要解決這個問題,您可以從受限可用區刪除過時的 VM,然後按照刪除的 VM 數量增加群組大小。群組會根據最新範本,在有可用容量的可用區中建立執行個體。
    • 如要將群組的執行個體範本更新為指定資源的範本,但該資源並非在所有選定可用區中都可用,則必須先從不支援的可用區移除代管執行個體,再設定新範本。
  • 如果將目標分配型態設為 ANY_SINGLE_ZONE,且群組在單一可用區中已有 VM,則只能在該可用區中建立其他 VM。如要使用其他可用區,必須先將群組縮減至零個 VM。

  • 如要佈建一組單一租戶 VM,必須將 MIG 的目標分配型態設為 EVEN。在與 MIG 相同的可用區中建立節點群組,並在 MIG 的執行個體範本中設定 MIG 的節點相似度。

建立具有目標分配型態的群組

如要建立群組、選取可用區,以及設定目標分布型態,請使用 Cloud de Confiance console、gcloud CLI、Terraform 或 REST。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組) 頁面

  2. 按一下 [Create Instance Group] (建立執行個體群組) 以建立新的執行個體群組。
  3. 選取其中一個新增代管執行個體群組選項:無狀態 (預設) 或有狀態。
  4. 指定執行個體群組的名稱,並視需要提供說明。
  5. 為執行個體群組選擇執行個體範本,或建立新的範本。
  6. 指定這個群組中的 VM 數量。如果是高可用性工作負載,請務必佈建充足的 VM,以便在可用區失效時維持應用程式運作。
  7. 在「Location」(位置) 下,選取 [Multiple zones] (多區域)。
  8. 選擇區域,並選取要使用的可用區。

    • 如要讓 MIG 使用區域中的所有可用區,請選取所有可用區。
    • 請注意,區域 MIG 建立後,即無法更新為使用其他可用區。
  9. 選擇目標分配型態。

    如果選取「Any single zone」(任何單一可用區) 或「Balanced」(平衡),請勿在「Instance redistribution」(執行個體重新分配) 專區選取「Allow instance redistribution」(允許重新分配執行個體)。

  10. 繼續進行其餘的 MIG 建立程序。

gcloud

使用 gcloud compute instance-groups managed create 指令,並加入 --target-distribution-shape 旗標。

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template TEMPLATE \
    --size SIZE \
    --region REGION \
    --zones ZONES \
    --target-distribution-shape SHAPE

更改下列內容:

  • INSTANCE_GROUP_NAME:執行個體群組的名稱。
  • TEMPLATE:要用於群組的執行個體範本名稱。
  • SIZE:執行個體群組的目標大小。
  • REGION:群組所在的區域。
  • ZONES (選用):要部署 VM 執行個體的區域可用區清單。根據預設,Compute Engine 會為您選取三個可用區。

    • 如要讓 MIG 使用區域中的所有可用區,請指定所有可用區。您可以使用下列指令,取得區域中的可用區清單:

      gcloud compute zones list --filter=region:REGION --format='list(NAME)'
    • 請注意,區域性 MIG 建立後,即無法更新為使用其他可用區。

  • SHAPE:目標分配型態。可能的值如下:

    • even (預設):群組會建立及刪除 VM,在所選可用區中達到並維持相同的 VM 數量。在EVEN分布中,任何兩個可用區之間的 VM 數量差異不會超過 1。建議用於高可用性的服務工作負載。
    • balanced:群組會優先在有可用資源的可用區建立 VM,同時盡可能平均分配 VM 到所選可用區,盡量降低可用區故障的影響。建議用於高可用性服務或批次工作負載。
    • any:群組會挑選可用區來建立 VM 執行個體,在現有資源限制內滿足要求的 VM 數量,並盡可能提高未使用的可用區預留項目使用率。建議用於不需要高可用性的批次工作負載。
    • any-single-zone:群組會在單一可用區內建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預留項目來選擇可用區。如果工作負載需要在 VM 之間進行大量通訊,建議搭配使用 密集執行個體配置政策。

舉例來說,如要建立目標分配型態為平衡的區域性 MIG,請將 --target-distribution-shape 旗標設為 balanced。

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --target-distribution-shape balanced \
    --instance-redistribution-type none

Terraform

如果您尚未建立執行個體範本,請建立執行個體範本,指定 MIG 中每個 VM 的機型、開機磁碟映像檔、網路和其他 VM 屬性。

如要建立區域性 MIG,請使用 google_compute_region_instance_group_manager 資源。

下列範例會建立目標分配型態為 BALANCED 的區域性 MIG。

resource "google_compute_region_instance_group_manager" "default" {
  name                             = "example-rmig"
  region                           = "us-east1"
  distribution_policy_zones        = ["us-east1-b", "us-east1-c"]
  distribution_policy_target_shape = "BALANCED"
  update_policy {
    type                         = "PROACTIVE"
    minimal_action               = "REFRESH"
    instance_redistribution_type = "NONE"
    max_unavailable_fixed        = 3
  }
  target_size        = 30
  base_instance_name = "instance"
  version {
    instance_template = google_compute_instance_template.default.id
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

REST

呼叫 regionInstanceGroupManagers.insert 方法。在要求主體中加入 distributionPolicy 屬性,並設定其 targetShape 欄位。

POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
    "name": INSTANCE_GROUP_NAME,
    "instanceTemplate": "global/instanceTemplates/TEMPLATE",
    "targetSize": SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE1"},
            {"zone": "zones/ZONE2"},
            {"zone": "zones/ZONE3"},
        ],
        "targetShape": "SHAPE"
    }
}

更改下列內容:

  • PROJECT_ID:這項要求的專案 ID。
  • REGION:執行個體群組的區域。
  • INSTANCE_GROUP_NAME:執行個體群組的名稱。
  • TEMPLATE:要用於執行個體群組的執行個體範本名稱。
  • SIZE:執行個體群組的目標大小。
  • ZONE:要部署 VM 執行個體的區域內可用區名稱。
    • 如要讓 MIG 使用區域中的所有可用區,請指定所有可用區。您可以呼叫 regions.get 方法,取得區域中的可用區清單。
    • 請注意,區域性 MIG 建立後,即無法更新為使用其他可用區。
  • SHAPE:目標分配型態。可能的值如下:
    • EVEN (預設):群組會建立及刪除 VM,在所選可用區中達到並維持相同的 VM 數量。在EVEN分布中,任何兩個可用區之間的 VM 數量差異不會超過 1。建議用於高可用性的服務工作負載。
    • BALANCED:群組會優先在有可用資源的可用區建立 VM,同時盡可能平均分配 VM 到所選可用區,盡量降低可用區故障的影響。建議用於高可用性服務或批次工作負載。
    • ANY:群組會挑選可用區來建立 VM 執行個體,在現有資源限制內滿足要求的 VM 數量,並盡可能提高未使用的可用區預留項目使用率。建議用於不需要高可用性的批次工作負載。
    • ANY_SINGLE_ZONE:群組會在單一可用區內建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預留項目來選擇可用區。如果工作負載需要在 VM 之間進行大量通訊,建議搭配使用 密集執行個體配置政策。

變更現有群組的目標分配型態

您可以變更現有區域性 MIG 的目標分配型態,但有下列限制:

  • 如要將目標分配型態變更為 BALANCED 或 ANY_SINGLE_ZONE,請先停用主動式重新分配功能。
  • 如要將目標分配型態變更為 EVEN,且目前的執行個體分配不平均,則必須先停用主動式重新分配功能。
  • 如果您將形狀變更為 EVEN,並想重新啟用主動重新分配功能,則必須先手動重新平衡群組。
  • 如果您想將目標分布型態變更為 EVEN,但執行個體範本指定的資源並非在所有選定可用區都支援,則必須先將群組的執行個體範本更新為在所有選定可用區都支援的範本。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組) 頁面

  2. 在清單的「Name」(名稱) 欄中,按一下要變更目標分布形態的執行個體群組名稱。
  3. 按一下「Edit」(編輯),即可修改這個代管執行個體群組。
  4. 按一下「地區」展開該部分。
  5. 在「Target distribution shape」(目標分配型態) 清單中,選取所需型態。
  6. 點選「儲存」來套用變更。

gcloud

使用 gcloud compute instance-groups managed update 指令,並加入 --target-distribution-shape 旗標。

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --target-distribution-shape SHAPE

更改下列內容:

  • INSTANCE_GROUP_NAME:執行個體群組的名稱。
  • SHAPE:目標分配型態。可能的值如下:
    • even (預設):群組會建立及刪除 VM,在所選可用區中達到並維持相同的 VM 數量。在EVEN分布中,任何兩個可用區之間的 VM 數量差異不會超過 1。建議用於高可用性的服務工作負載。
    • balanced:群組會優先在有可用資源的可用區建立 VM,同時盡可能平均分配 VM 到所選可用區,盡量降低可用區故障的影響。建議用於高可用性服務或批次工作負載。
    • any:群組會挑選可用區來建立 VM 執行個體,在現有資源限制內滿足要求的 VM 數量,並盡可能提高未使用的可用區預留項目使用率。建議用於不需要高可用性的批次工作負載。
    • any-single-zone:群組會在單一可用區內建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預留項目來選擇可用區。如果工作負載需要在 VM 之間進行大量通訊,建議搭配使用 密集執行個體配置政策。

REST

呼叫 regionInstanceGroupManagers.patch 方法。在要求主體中,加入 distributionPolicy 屬性並設定其 targetShape 欄位。

PATCH https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
    "distributionPolicy": {
        "targetShape": "SHAPE"
    }
}

更改下列內容:

  • PROJECT_ID:這項要求的專案 ID。
  • REGION:執行個體群組的區域。
  • INSTANCE_GROUP_NAME:執行個體群組的名稱。
  • SHAPE:目標分配型態。可能的值如下:
    • EVEN (預設):群組會建立及刪除 VM,在所選可用區中達到並維持相同的 VM 數量。在EVEN分布中,任何兩個可用區之間的 VM 數量差異不會超過 1。建議用於高可用性的服務工作負載。
    • BALANCED:群組會優先在有可用資源的可用區建立 VM,同時盡可能平均分配 VM 到所選可用區,盡量降低可用區故障的影響。建議用於高可用性服務或批次工作負載。
    • ANY:群組會挑選可用區來建立 VM 執行個體,在現有資源限制內滿足要求的 VM 數量,並盡可能提高未使用的可用區預留項目使用率。建議用於不需要高可用性的批次工作負載。
    • ANY_SINGLE_ZONE:群組會在單一可用區內建立所有 VM 執行個體。系統會根據硬體支援、目前的資源和配額可用性,以及相符的預留項目來選擇可用區。如果工作負載需要在 VM 之間進行大量通訊,建議搭配使用 密集執行個體配置政策。

查看已設定的執行個體分布政策

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組) 頁面

    如果您已有執行個體群組,頁面會列出這些群組。
  2. 按一下要檢查的執行個體群組名稱。系統隨即開啟一個頁面,頁面中包含執行個體群組的屬性及群組包含之執行個體的清單。
  3. 按一下「詳細資料」。
  4. 在「Location」(位置) 部分,找到「Target distribution shape」(目標分配型態)。

gcloud

執行 gcloud compute instance-groups managed describe 指令。

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --region REGION

指令會傳回群組的詳細資料,包括 distributionPolicy.targetShape 欄位:

...
distributionPolicy:
  targetShape: BALANCED
  zones:
  - zone: https://www.s3nsapis.fr/compute/v1/projects/my-project/zones/us-central1-f
  ...
name: my-group
region: https://www.s3nsapis.fr/compute/v1/projects/my-project/regions/us-central1
...

REST

建構對 regionInstanceGroupManagers.get 方法的 GET 要求。

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

更改下列內容:

  • PROJECT_ID:這項要求的專案 ID
  • REGION:執行個體群組的區域
  • INSTANCE_GROUP_NAME:執行個體群組名稱

目標分配型態會傳回至 distributionPolicy.targetShape 欄位。例如:

{
  "name": "my-instance-group",
  "distributionPolicy": {
    "targetShape": "BALANCED",
  },
  "targetSize": 50,
  ...
}

雖然分配政策會顯示您符合設定的目標型態,但您也可以查看特定 MIG 的執行階段執行個體在各可用區的分配情形,或多個 MIG 的匯總資料。如需查看執行個體分布情形的操作說明,請參閱「監控 MIG 中的執行個體分布情形」。

後續步驟