使用含有多項信號的自動調度資源政策

建立含有多項信號的自動調度資源政策時,自動配置器會根據信號調度資源,以在代管執行個體群組 (MIG) 中提供最多虛擬機器 (VM) 執行個體。這可確保隨時都有足夠的 VM 來處理您的應用程式工作負載,並能讓您針對多個潛在瓶頸調度應用程式資源。

如要進一步瞭解不同類型的自動調度資源信號,請參閱「自動調度資源政策」。

事前準備

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

    選取這個頁面上的分頁,瞭解如何使用範例:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

    gcloud

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

      gcloud init

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

  • 設定預設地區和區域
  • REST

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

      安裝 Google Cloud CLI。

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

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

自動調度資源功能如何處理多項信號

自動調度器處理多個信號的方法如下:為每個信號計算建議的 VM 數量,然後挑選可讓 MIG 擁有最多 VM 的信號。

自動配置器可以為每一指標類型處理一項信號,但 Cloud Monitoring 指標和資源調度時間表例外。您可以為 Cloud Monitoring 指標選擇最多 5 個自動調度資源信號,並為每個 MIG 建立最多 128 個排程。舉例來說,您可以建立自動調度器,使用最多 1 個 CPU 使用率信號、最多 1 個負載平衡信號、最多 5 個自訂指標信號,以及最多 128 個調度排程。

舉例來說,您可以定義具有以下所有信號的自動調整程式:

  • cpuUtilization:目標為 0.8
  • loadBalancingUtilization:目標為 0.6
  • customMetricUtilization:針對指標 1,目標為 1000
  • customMetricUtilization:針對指標 2,目標為 2000
  • scalingSchedules
    • 每週六和週日凌晨 12 點起,至少 6 部 VM 須運作 24 小時
    • 每週一至週五上午 9 點,至少要有 15 部 VM 執行 8 小時

在這個範例中,假設自動調度器在測量時,為含有 10 個 VM 的 MIG 測得的平均用量值如下:

  • CPU 使用率 0.5
  • 0.4 負載平衡使用率
  • 指標 1:1100
  • 指標 2:2700

自動配置器會使用上述值,根據每項信號計算建議的 VM 數量:

  • 根據 CPU 使用率,為 7 個 VM
  • 7 個 VM (根據負載平衡使用率)
  • 根據指標 1,為 11 個虛擬機器。
  • 根據指標 2,為 14 個虛擬機器。
  • 根據第一個縮放排程,每週六和週日全天使用 6 部 VM
  • 根據第二個縮放排程,每週一至週五上午 9:00 至下午 5:00 會有 15 部 VM

自動調度器會選取可讓 MIG 擁有最多 VM 的信號,並將 MIG 的建議大小設為該值。在這種情況下,如果第二個排程目前處於啟用狀態,自動配置器會將代管執行個體群組:MIG 大小調整為 15 部 VM,否則會調整為 14 部 VM。

建立具有多項信號的自動配置器

視您使用的 Google Cloud 控制台、gcloud CLI 或 REST 為何,具有多項信號的自動配置器建立程序會略有差異。

控制台

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

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

  2. 在清單中按一下 MIG 名稱。

  3. 按一下 [編輯]

  4. 按一下「群組大小和自動調度資源」展開該部分。

  5. 在「Autoscaling mode」(自動調度資源模式) 清單中,確認已選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體)

  6. 在「Minimum number of instances」(執行個體數量下限) 欄位中,輸入這個 MIG 的 VM 數量下限。無論這個 MIG 的自動調度資源信號為何,系統一律會保留其大小下限。

  7. 在「執行個體數量上限」欄位中,輸入這個 MIG 的 VM 數量上限。無論這個 MIG 的自動調度資源信號產生的大小建議為何,一律不得超過其大小上限。

  8. 如要新增每個以指標為準的自動調度資源信號,請按一下「新增信號」

    • 如要根據平均 CPU 使用率建立自動調度資源信號,請在「信號類型」清單中選取「CPU 使用率」。然後輸入「目標 CPU 使用率」,並點選「完成」。 詳情請參閱根據 CPU 使用率執行資源調度
    • 如要根據 HTTP 負載平衡服務的負載能力建立自動調度資源信號,請在「信號類型」清單中選取「HTTP 負載平衡使用率」。然後輸入「目標 HTTP 負載平衡使用率」,並按一下「完成」。詳情請參閱根據負載平衡服務規模調度資源
    • 如要根據 Cloud Monitoring 指標建立自動調度資源訊號,請在「訊號類型」清單中選取「Cloud Monitoring 指標」。然後填寫其餘欄位,並按一下「完成」。詳情請參閱根據 Cloud Monitoring 指標執行資源調度
  9. 如要新增以時間表為準的自動調度資源信號,請在「自動調度資源時間表」部分中,按一下「管理」

    1. 按一下「建立時間表」

    2. 在「建立縮放時間表」窗格中,填寫必填欄位,然後按一下「儲存」

    3. 在「縮放時間表」窗格中,按一下「完成」

    詳情請參閱「根據時間表執行資源調度」。

  10. 在「Initialization period」(初始化期間) 部分中,輸入應用程式初始化所需的秒數。在這段期間,VM 會完成初始化,自動調度器才會將其用量資料視為可靠。詳情請參閱「初始化期間」。

  11. 選用:如要啟用向內縮減控制項,請在「Scale-in controls」(向內縮減控制項) 專區中,選取「Enable scale-in controls」(啟用向內縮減控制項) 核取方塊。詳情請參閱縮減控制項

  12. 按一下 [儲存]

gcloud

如要建立具有多項信號的自動調度器,請使用 set-autoscaling 指令。使用各自的指令列標記傳入多個信號規格。

舉例來說,下列指令會建立自動配置器,使用 CPU 使用率、負載平衡供應運算資源、兩項自訂指標和一項資源調度排程。--max-num-replicas--min-num-replicas 旗標會限制 MIG 的大小。

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
   --target-cpu-utilization=0.8 \
   --target-load-balancing-utilization=0.6 \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_1,utilization-target=1000.0,utilization-target-type=GAUGE \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_2,utilization-target=2000.0,utilization-target-type=DELTA_PER_SECOND \
   --set-schedule=workday-capacity \
   --schedule-cron="30 8 * * Mon-Fri" \
   --schedule-duration-sec=30600 \
   --schedule-min-required-replicas=10 \
   --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC" \
   --min-num-replicas=1 \
   --max-num-replicas=50

更改下列內容:

  • MIG_NAME:MIG 的名稱。
  • PATH_TO_CUSTOM_METRIC_1PATH_TO_CUSTOM_METRIC_2:選用:自訂指標的路徑,格式類似於 custom.cloudmonitoring.googleapis.com/path/to/metric1custom.cloudmonitoring.googleapis.com/path/to/metric2。詳情請參閱「自訂指標」。

您可以利用自訂指標標記的例外設定,為每個指標類型最多傳遞一個標記 (每個 gcloud 指令)。針對自訂指標,只要重複 --custom-metric-utilization 標記,即可在單一指令中提供多項自訂指標。

如要進一步瞭解如何為各類自動調度資源信號設定旗標,請參閱下列頁面:

REST

如要建立自動調度器,請使用區域 MIG 的 autoscalers.insert 方法,或區域 MIG 的 regionAutoscalers.insert 方法

舉例來說,下列要求會建立自動配置器,使用 CPU 使用率、負載平衡服務容量、兩項自訂指標和兩項資源調度時間表。maxNumReplicasminNumReplicas 欄位會限制 MIG 的大小。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers

{
  "autoscalingPolicy" : {
    "cpuUtilization":{
      "utilizationTarget": 0.8
    },
    "loadBalancingUtilization":{
      "utilizationTarget": 0.6
    },
    "customMetricUtilizations":[
      {
        "metric": "PATH_TO_CUSTOM_METRIC_1",
        "utilizationTarget": 1000,
        "utilizationTargetType":"GAUGE"
      },
      {
        "metric": "PATH_TO_CUSTOM_METRIC_2",
        "utilizationTarget": 2000,
        "utilizationTargetType": "DELTA_PER_SECOND"
      }
    ],
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      },
      "january-30-2030-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    },
    "maxNumReplicas": 50,
    "minNumReplicas": 1
  },
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroupManagers/MIG_NAME",
  "name": "MIG_NAME"
}

更改下列內容:

  • PROJECT:您的專案 ID
  • ZONE:MIG 所在的可用區。
  • MIG_NAME:MIG 的名稱。
  • PATH_TO_CUSTOM_METRIC_1PATH_TO_CUSTOM_METRIC_2:選用:自訂指標的路徑,格式類似於 custom.cloudmonitoring.googleapis.com/path/to/metric1custom.cloudmonitoring.googleapis.com/path/to/metric2。詳情請參閱「自訂指標」。

如本例所示,您可以在同一項要求中提供多項自訂指標和縮放排程。

如要進一步瞭解如何為各類自動調整比例信號設定欄位,請參閱下列頁面: