在區域 MIG 中停用及重新啟用主動式 VM 重新分配功能


區域代管執行個體群組 (MIG) 中,如要在地區的所選區域間維持平均個數的虛擬機器 (VM) 執行個體,請使用主動式執行個體重新分配功能。這項設定選項可在發生區域層級的故障時,最大化應用程式的可用性。

根據預設,系統會啟用地區性 MIG 的主動式執行個體重新分配功能。停用主動式執行個體重新分配功能後,群組就不會嘗試主動重新分配區域間的 VM。如果您需要執行下列操作,停用主動式執行個體重新分配功能就非常實用:

  • 刪除捨棄群組中的 VM,但不影響其他正在執行的 VM。舉例來說,您可以在工作完成後刪除相關批次工作站 VM,而不影響其他工作站。
  • 避免主動式重新分配功能不小心自動刪除了有狀態工作負載 VM。
  • 將 MIG 的目標分配型態設為 BALANCEDANY_SINGLE_ZONE

建立地區代管執行個體群組時,您可以停用主動式執行個體重新分配功能。您也可以為現有的區域性 MIG 啟用或停用這項功能。

事前準備

  • 如果尚未設定驗證,請先完成設定。 「驗證」是指驗證身分的程序,確認您有權存取 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. 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.
      3. REST

        如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 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.

        詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

建立停用主動式執行個體重新分配功能的群組

如要建立停用主動式執行個體重新分配功能的區域 MIG,請使用 Google Cloud consolegcloud CLI、Terraform 或 REST

主控台

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

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

  2. 按一下 [Create Instance Group] (建立執行個體群組) 以建立新的執行個體群組。
  3. 指定執行個體群組的名稱,並自行選擇是否提供相關說明。
  4. 為執行個體群組選擇執行個體範本,或建立新的範本。
  5. 指定這個群組中的 VM 數量。對於高可用性工作負載,請記得佈建足夠的 VM,以在發生區域失敗時支援您的應用程式。
  6. 在「Location」(位置) 下,選取 [Multiple zones] (多區域)。
  7. 選擇區域,並選取您要使用的可用區。
  8. 如要停用主動式執行個體重新分配,請在「Instance redistribution」(執行個體重新分配) 之下,取消選取「Allow instance redistribution」(允許重新分配執行個體) 核取方塊。
  9. 繼續進行其餘的 MIG 建立程序。

gcloud

如要建立不執行主動式執行個體重新分配功能的新地區 MIG,請使用 gcloud compute instance-groups managed create 指令,並將 --instance-redistribution-type 旗標設為 NONE

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE_NAME \
    --size TARGET_SIZE \
    --zones ZONES \
    --instance-redistribution-type NONE

更改下列內容:

  • INSTANCE_GROUP_NAME:MIG 的名稱
  • INSTANCE_TEMPLATE_NAME:要用於群組的執行個體範本名稱
  • TARGET_SIZE:群組的目標大小
  • ZONES:您要部署 VM 所在單一地區內的區域清單

例如:

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --instance-redistribution-type NONE

Terraform

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

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

如要在區域 MIG 中停用主動式執行個體重新分配功能,請加入 update_policy 區塊,並將 instance_redistribution_type 欄位設為 NONE

resource "google_compute_region_instance_group_manager" "default" {
  name                      = "example-rmig"
  region                    = "us-east1"
  distribution_policy_zones = ["us-east1-b", "us-east1-c"]
  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

如要建立不執行主動式執行個體重新分配的非自動調度資源地區 MIG,請向 regionInstanceGroupManagers.insert 方法發出 POST 要求。在要求主體中加入 updatePolicy 屬性,並將其 instanceRedistributionType 欄位設為 NONE

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
    "name": "INSTANCE_GROUP_NAME",
    "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
    "targetSize": TARGET_SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE"},
            {"zone": "zones/ZONE"}
        ]
    },
    "updatePolicy": {
        "instanceRedistributionType": "NONE"
    }
}

更改下列內容:

  • PROJECT_ID:這項要求的專案 ID
  • REGION:執行個體群組的所在地區
  • INSTANCE_GROUP_NAME:MIG 的名稱
  • INSTANCE_TEMPLATE_NAME:要用於群組的執行個體範本名稱
  • TARGET_SIZE:執行個體群組的目標大小
  • ZONE:您要部署 VM 所在單一地區內的特定區域名稱

停用主動式執行個體重新分配功能

如要停用或重新啟用主動式執行個體重新分配功能,請使用Google Cloud consolegcloud CLIREST

主控台

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

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

  2. 在清單的「Name」(名稱) 欄底下,按一下要修改的執行個體群組名稱。
  3. 按一下「編輯」,修改這個代管執行個體群組。
  4. 在「Instance redistribution」(執行個體重新分配) 之下,取消選取「Allow instance redistribution」(允許執行個體重新分配功能) 核取方塊。
  5. 按一下 [儲存]

gcloud

如要停用主動式執行個體重新分配功能,請使用 compute instance-groups managed update 指令,並將 --instance-redistribution-type 旗標設為 NONE,如下所示:

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --instance-redistribution-type NONE \
    --region REGION

更改下列內容:

  • INSTANCE_GROUP_NAME:MIG 的名稱
  • REGION:執行個體群組的所在地區

REST

如要停用主動式執行個體重新分配功能,請使用 regionInstanceGroupManagers.patch 方法,並將 instanceRedistributionType 欄位設為 NONE,如下所示:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME
  {
     "updatePolicy": {
        "instanceRedistributionType": "NONE"
     }
  }

更改下列內容:

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

啟用主動式執行個體重新分配功能

如要啟用主動式執行個體重新分配功能,請使用與停用主動式執行個體重新分配功能類似的指令,但將執行個體重新分配類型設為 PROACTIVE

如果您手動刪除或捨棄部分代管執行個體,因而造成地區間 VM 分布不均的狀態,那麼您必須先手動重新平衡群組,才能重新啟用主動式執行個體重新分配功能。任兩個區域之間的 VM 數量不應相差超過 1 個 VM。

如果 VM 在各個可用區的分布不均 (兩個可用區之間的 VM 數量相差 2 個以上),區域性 MIG 就不允許啟用主動式執行個體重新分配。這是為了防止系統從含有較多 VM 的區域意外自動刪除 VM (系統會觸發這項作業來達成分布均勻的狀態)。

後續步驟