管理自動配置器


如果您使用代管執行個體群組 (MIG),請參閱本文,瞭解如何建立、設定及刪除 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」。

建立自動配置器

隨著您想要使用的自動調度資源政策不同,建立自動配置器的方式也會略有差異。如需建立自動配置器的操作說明,請參閱:

取得自動配置器相關資訊

如要取得特定自動配置器的詳細資訊,請使用 Console、gcloud compute instance-groups managed describe 子指令,或區域地區自動配置器 REST 資源的 get 方法。

主控台

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

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

  2. 在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
  3. 按一下 [Details] (詳細資料) 即可查看群組的詳細資料,包括群組的自動調度資源設定。

gcloud

使用 instance-groups managed describe 指令

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME

如果群組已附加自動配置器,這個指令會傳回自動配置器的詳細資料:

...
autoscaler:
  autoscalingPolicy:
    coolDownPeriodSec: 60
    cpuUtilization:
      utilizationTarget: 0.6
    maxNumReplicas: 20
    minNumReplicas: 10
    mode: ON
    scaleInControl:
      timeWindowSec: 300
      maxScaledInReplicas:
        fixed: 3
        calculated: 3
...

REST

請使用 instanceGroupManagers.get 方法。如果是區域 MIG,請將 zones/ZONE 替換為 regions/REGION

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

如果群組已附加自動調度器,要求會傳回自動調度器資源的連結。

200 OK

{
  ...
  "status": {
    ...
    "autoscaler": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group"
  },
}

如要擷取自動配置器資源的詳細資料,請使用區域 MIG 的 autoscalers.get 方法,或區域 MIG 的 regionAutoscalers.get 方法

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/example-autoscaler
200 OK

{
 "kind": "compute#autoscaler",
 "id": "8744945839459481093",
 "creationTimestamp": "2018-09-28T13:02:50.553-07:00",
 "name": "example-group",
 "target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/instanceGroupManagers/example-group",
 "autoscalingPolicy": {
  "minNumReplicas": 10,
  "maxNumReplicas": 20,
  "mode": "ON",
  "scaleInControl": {
    "timeWindowSec": 60,
    "maxScaledInReplicas": {
      "calculated": 3,
      "percent": 15
    }
  },
  "coolDownPeriodSec": 60,
  "cpuUtilization": {
   "utilizationTarget": 0.6
  }
 },
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c",
 "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group",
 "status": "ACTIVE"
}

更新自動配置器

更新自動配置器後,變更可能需要一段時間才會生效,新的自動配置器設定可能需要數分鐘,才會反映在系統上。

主控台

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

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

  2. 在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
  3. 按一下「編輯」即可查看及更新群組目前的設定,包括群組的自動調度資源設定。
  4. 完成時請按一下 [Save] (儲存)。

gcloud

使用 update-autoscaling 指令

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
        --max-num-replicas MAX_NUM ...

如需建立自動調度器的操作說明,請參閱建立自動調度器

REST

如要更新自動配置器資源,請使用區域 MIG 的 autoscalers.patch 方法,或區域 MIG 的 regionAutoscalers.patch 方法。提供要求主體,並在其中包含新的設定。

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler

{
 "autoscalingPolicy": {
  "maxNumReplicas": 20
 }
}
200 OK

{
 "kind": "compute#operation",
 "id": "4244494732310423322",
 "name": "operation-1556912627871-58800f8216ed7-74ab1720-7d360603",
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f",
 "operationType": "compute.autoscalers.patch",
 "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler",
 "targetId": "340775527929467142",
 "status": "RUNNING",
 ...
}

執行任何會修改資料的要求時,系統均會傳回 zoneOperationsregionOperations 資源,您可查詢作業來檢查變更的狀態。

使用預測式自動調度資源功能

預測式自動調度資源功能會使用歷來資料,在預期負載出現前擴充群組。如果工作負載符合下列條件,這項功能就能發揮最佳效用:

  • 應用程式需要很長時間才能初始化,例如您設定的初始化期間超過 2 分鐘。
  • 工作負載會隨著每日或每週週期而有規律地變化。

詳情請參閱根據預測結果執行資源調度

關閉或限制自動配置器

關閉自動配置器來暫時避免自動配置器為 MIG 進行資源調度,或限制自動配置器,使其只能為 MIG 進行向外擴充的資源調度。這項功能相當適合用於下列作業:

  • 在不受資源規模縮減干擾的情況下調查 VM 執行個體。
  • 重新設定 MIG 的多個屬性,且進行部分重新設定期間,系統不會觸發資源調度動作。
  • 維持 MIG 容量,以在將工作負載重新導向至新的 MIG 時,可快速復原。
  • 稍後再啟用預測式自動調度資源。預測式自動調度資源功能需要自動調度資源政策,才能開始收集負載記錄,以做為預測依據。即使自動調度資源模式設為 OFF,自動調度器仍會偵測這項記錄。

如果重新啟用自動配置器,自動配置器會自動恢復正常運作狀態。

請按照本節的說明設定自動調度器的模式。可用的模式如下:

  • 關閉:暫時停用自動調度資源功能。使用此模式可防止系統自動變更 MIG 的大小。自動調度資源設定會保持不變,以供日後重新啟用自動調度資源功能。
  • 僅向外擴充:將自動調度資源限制為僅限新增 VM 執行個體。使用此模式可避免群組縮小,並讓群組可在負載增加時佈建額外的 VM。
  • 開啟:根據政策啟用所有自動調度資源作業。

主控台

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

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

  2. 在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。
  3. 按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。
  4. 在「Autoscaling」(自動調度資源) 下,設定「Autoscaling mode」(自動調度資源模式) 來停用或限制自動調度資源,或重新開啟自動配置器。
  5. 完成時請按一下 [Save] (儲存)。

gcloud

如要停用、限制或重新啟用自動配置器,請使用 update-autoscaling 指令搭配 --mode 旗標。

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
        --mode MODE 

更改下列內容:

  • MODE
    • off 會停用自動配置器,但會保持其設定。
    • only-scale-out,將自動調度器限制為只能新增 VM 執行個體
    • on 會根據本身的政策重新啟用所有自動配置器活動

REST

如要更新自動配置器資源模式,請使用區域 MIG 的 autoscalers.patch 方法,或區域 MIG 的 regionAutoscalers.patch 方法。提供要求主體,並在其中包含 autoscalingPolicy.mode 屬性。

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1-f/autoscalers?autoscaler=my-autoscaler

{
  "autoscalingPolicy": {
    "mode":"MODE"
  }
}

更改下列內容:

  • MODE
    • OFF 會停用自動配置器,但會保持其設定。
    • ONLY_SCALE_OUT,將自動配置器限制為只能新增執行個體
    • ON 會根據本身的政策重新啟用所有自動配置器活動

將自動調度資源模式設為 ONLY_SCALE_OUT 時,自動調度器的行為如下:

  • 無論負載減少或自動調度資源設定變更,自動調度器都不會減少 MIG 的 targetSize 值。
  • 如果您手動變更區域 MIG 的目標大小,且該大小小於自動調度器建議的大小,自動調度器就會覆寫您手動提供的大小。
  • 您無法手動變更地區 MIG 的目標大小。
  • 如果自動調度資源模式設為 ONLY_SCALE_OUT,且您將 autoscalingPolicy.maxNumReplicas 欄位設為低於群組目前 targetSize 值的值,自動調度資源不會減少群組中的執行個體數量。自動調度器會照常持續重新計算群組的建議大小,並可能減少群組的建議大小,以符合新的上限,但群組不會縮減。
  • autoscalers.status」欄位會回報警告:「Autoscaling operates in a restricted mode: ONLY_SCALE_OUT.」(自動調度資源功能處於受限模式:ONLY_SCALE_OUT)。

將自動調度資源模式設為 OFF 時,自動調度資源的行為如下:

  • 自動調度器不會因應負載或自動調度器設定的變更,變更 MIG 的 targetSize 值。自動調度器會照常持續重新計算群組的建議大小,並可能為了符合新的上限而縮減群組的建議大小,但不會縮減群組。
  • 您可以手動變更可用區或區域性 MIG 的目標大小。自動調度資源政策的 minNumReplicasmaxNumReplicas 值不會影響您設定的大小。
  • 如果您為啟用主動式執行個體重新分配功能的地區 MIG 停用自動調度資源功能,且 MIG 的執行個體在各區域間分布不均,則群組會主動刪除或建立區域中的執行個體,以重新建立均勻分布的狀態。
  • autoscalers.status」欄位會顯示警告:「Autoscaling operates in a restricted mode: OFF.」(自動調度資源功能處於受限模式:關閉)。

控管自動調度資源的向內縮減率

如果您的工作負載需要數分鐘才能啟動,請設定縮減資源配置的控制功能,藉此降低資源配置驟降事件引發的回應延遲和服務中斷風險。具體來說,如果您預期負載下降後很快就會暴增,可以限制縮減率。限制縮減率可防止自動調度器減少的 MIG 大小超過工作負載可容許的 VM 執行個體數量。

設定向內縮減控制項

您可以視需要設定向內縮減控制項。根據預設,縮小控制項不會設定。如果未設定,自動調度器仍會依預設穩定機制運作。也就是說,系統會將建議大小維持在可處理穩定期觀察到的尖峰負載的程度。

主控台

如要為自動調度資源的 MIG 設定縮減控制項,請按照下列步驟操作:

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

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

  2. 在清單中按一下自動調度 MIG 的名稱,開啟該群組的總覽頁面。

  3. 按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。

  4. 在「Autoscaling」(自動調度資源) 下方,按一下「Scale-in controls」(向內縮減控制項),然後選取「Enable scale-in controls」(啟用向內縮減控制項)

  5. 在「Don't scale in by more than」(縮減規模時,移除的執行個體數量不得超過) 下方,指定一次可從群組中移除的執行個體數量或百分比上限。

  6. 在「Over the course of」(在以下時間內) 下方,指定可從群組中移除執行個體的頻率。

  7. 按一下 [儲存]

gcloud

建立或更新自動調度器時,您可以設定縮減控制項。

建立自動調度器時設定縮減控制項

為 MIG 建立自動調度器時,請使用 gcloud compute instance-groups managed set-autoscaling 指令搭配 --scale-in-control 標記,設定縮減控制項。舉例來說,請使用下列指令為 example-group 設定自動調度資源功能:

gcloud compute instance-groups managed set-autoscaling INSTANCE_GROUP_NAME \
    --target-cpu-utilization 0.6 \
    --max-num-replicas 50 \
    --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW

更新自動調度器時設定縮減控制項

使用 --scale-in-control 旗標搭配 gcloud compute instance-groups managed update-autoscaling 指令,更新 MIG 現有自動調整程式中的縮減控制項。舉例來說,如要為 example-group 的現有自動調度資源設定縮減控制項,請使用下列指令:

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
    --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW

更改下列內容:

  • INSTANCE_GROUP_NAME:要更新的 MIG 名稱。
  • MAX_SCALE_IN_REPLICAS:可從尖峰大小扣除的 VM 數量上限,取自指定的尾端時間範圍。系統會一次擴充指定數量的 VM 執行個體,因此服務應能承受一次失去這麼多 VM。您可以指定 VM 數量或百分比。請使用 % 符號表示百分比,例如:50%
  • TIME_WINDOW:用於取得尖峰大小的尾隨時間範圍。自動調度資源功能不會將副本數縮減至低於這段時間內尖峰大小的副本數上限。請以秒為單位指定這個值,且必須介於 [60, 3600] 間隔內。

舉例來說,假設您將時間範圍設為 1800 秒 (30 分鐘)。計算 MIG 目前的建議大小時,自動調度器會使用下列邏輯:

  • 取用過去 30 分鐘的尖峰大小 (例如 100 個 VM)
  • max-scaled-in-replicas 為例 (例如 10 部 VM)
  • 將建議大小的下限設為:尖峰大小減去 max-scaled-in-replicas (100 - 10 = 90 部 VM)

REST

區域地區自動調度資源的 autoscalingPolicy.scaleInControl 結構中設定 maxScaledInReplicastimeWindowSec 欄位,即可設定縮減控制項。這些欄位沒有預設值,您必須為這兩個欄位提供值。

建立或更新自動調度器時,您可以設定縮減控制項。

建立自動調度器時設定縮減控制項

如果是區域 MIG,請使用 autoscalers.insert 方法。如果是區域 MIG,請使用 regionAutoscalers.insert 方法

POST
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers

{
  "name": "AUTOSCALER_NAME",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME",
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleInControl": {
      "maxScaledInReplicas": {
           "fixed": MAX_SCALE_IN_REPLICAS
      },
      "timeWindowSec": TIME_WINDOW
    }
  }
}

如要進一步瞭解如何建立自動調度器,請參閱下列文章:

更新自動調度器時設定縮減控制項

如果是區域 MIG,請使用 autoscalers.patch 方法。如果是區域 MIG,請使用 regionAutoscalers.patch 方法

PATCH
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleInControl": {
      "maxScaledInReplicas": {
           "fixed": MAX_SCALE_IN_REPLICAS
      },
      "timeWindowSec": TIME_WINDOW
    }
  }
}

更改下列內容:

  • AUTOSCALER_NAME:要建立的自動調度程式名稱。您可以將自動調度器命名為要使用的 MIG,也可以命名為其他名稱。
  • INSTANCE_GROUP_NAME:要新增自動調度資源功能的 MIG 名稱。如果是區域 MIG,請將 zones/ZONE 替換為 regions/REGION
  • MAX_SCALE_IN_REPLICAS:可從建議目標大小上限扣除的 VM 數量上限,取自指定的尾端時間範圍。系統會一次擴充指定數量的 VM 執行個體,因此您的服務應能承受一次失去這麼多 VM。您可以指定 VM 數量或百分比。使用 maxScaledInReplicas.percentage 指定百分比值。
  • TIME_WINDOW:用來取得建議大小上限的後方時間範圍。自動調度資源不會將副本數調降至低於建議尖峰大小,且降幅不會超過允許的上限。請在 [60, 3600] 間隔內以秒為單位指定這個值,例如:1800

舉例來說,假設您將時間範圍設為 1800 秒 (30 分鐘)。計算 MIG 目前的建議大小時,自動調度器會使用下列邏輯:

  • 取用過去 30 分鐘的尖峰大小 (例如 100 個 VM)
  • max-scaled-in-replicas 為例 (例如 10 部 VM)
  • 將建議大小的下限設為:尖峰大小減去 max-scaled-in-replicas (100 - 10 = 90 部 VM)

如要進一步瞭解向內縮減控制項的運作方式,請參閱「瞭解自動配置器決策」。

取得向內縮減控制項的目前設定

如要取得縮減控制項的目前設定,請參閱取得自動調度器相關資訊

移除向內縮減控制項

您可以使用 Google Cloud CLI 或 Compute Engine API 移除縮減控制項,解除對縮減作業時間和規模的限制。

如果沒有縮減控制項,自動調度器仍會依預設穩定機制運作。具體來說,這項功能會維持建議大小,以滿足穩定期觀察到的尖峰負載。

主控台

如要移除自動調度資源 MIG 的向內縮減控制項,請按照下列步驟操作:

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

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

  2. 在清單中按一下自動調度 MIG 的名稱,開啟該群組的總覽頁面。

  3. 按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。

  4. 在「Autoscaling」(自動調度資源) 底下,按一下「Scale-in controls」(向內縮減控制項),然後取消勾選「Enable scale-in controls」(啟用向內縮減控制項) 核取方塊。

  5. 按一下 [儲存]

gcloud

使用 --clear-scale-in-control 旗標和 gcloud compute instance-groups managed update-autoscaling 指令移除縮減控制項。舉例來說,請使用下列指令,從 example-group 的自動調度資源設定中移除縮減控制項:

gcloud compute instance-groups managed update-autoscaling example-group \
    --clear-scale-in-control

REST

如要移除縮減控制項,請對區域性 MIG 使用 autoscalers.patch 方法,或對區域性 MIG 使用 regionAutoscalers.patch 方法,並提供縮減控制項的空白設定。

PATCH
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scaleInControl": null
  }
}

更改下列內容:

  • AUTOSCALER_NAME:要更新的自動調度程式名稱。如要取得現有自動調度器及其目標 MIG 的清單,請使用 autoscalers.aggregatedList 方法

刪除自動配置器

您可以永久刪除自動配置器資源及其記錄。如要暫時停止自動調度資源,並保留自動調度資源設定和記錄,請改為停用自動調度資源功能。

主控台

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

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

  2. 在清單中按一下 MIG 名稱,開啟該群組的總覽頁面。

  3. 按一下「編輯」即可查看群組目前的設定,包括群組的自動調度資源設定。

  4. 在「Autoscaling」(自動調度資源) 下,從「Autoscaling mode」(自動調度資源模式) 下拉式清單中選取「Delete autoscaling configuration」(刪除自動調度資源設定),即可停止自動配置器並刪除其設定。

  5. 完成時請按一下 [Save] (儲存)。

gcloud

使用 stop-autoscaling 指令停止自動配置器,並刪除其設定。

gcloud compute instance-groups managed stop-autoscaling INSTANCE_GROUP_NAME

停止自動配置器後,系統會將其從 MIG 中刪除。如要重新啟動自動配置器,則必須使用 set-autoscaling 指令重新建立自動配置器。

如果您使用 gcloud CLI 刪除 MIG,所有連結至 MIG 的自動配置器也會遭到刪除。

REST

如要停止自動調度器並刪除其設定,請使用區域 MIG 的 autoscalers.delete 方法,或使用區域 MIG 的 regionAutoscalers.delete 方法

 DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/AUTOSCALER_NAME

意見回饋

我們想要瞭解您的用途、難題和自動調度相關意見。請前往以下網址,並與我們的團隊分享您的寶貴意見:mig-discuss@google.com

後續步驟