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

建立含有多項信號的自動調度資源政策時,自動配置器會根據信號,在代管執行個體群組 (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 (目標為 1000)
  • customMetricUtilization (目標為 2000)
  • scalingSchedules
    • 每週六和週日凌晨 12 點起,至少 24 小時內有 6 個 VM
    • 每週一至週五上午 9 點,至少要有 15 部 VM 執行 8 小時

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

  • CPU 使用率為 0.5
  • 0.4 負載平衡使用率
  • 1100 (公制 1)
  • 2700 (公制)2

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

  • 7 個 VM (依 CPU 使用率排序)
  • 根據負載平衡使用率,7 部 VM
  • 根據指標 1,有 11 個 VM
  • 根據指標 2 調整為 14 個 VM
  • 根據第一個縮放排程,每週六和週日全天使用 6 部 VM
  • 根據第二個縮放時間表,每週一至週五上午 9 點到下午 5 點有 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. 在「Maximum number of instances」(執行個體數量上限) 欄位中,輸入這個 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 完成初始化,自動調度器才會將 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_1 和 PATH_TO_CUSTOM_METRIC_2:選用:自訂指標的路徑,格式類似於 custom.cloudmonitoring.googleapis.com/path/to/metric1 和 custom.cloudmonitoring.googleapis.com/path/to/metric2。詳情請參閱「自訂指標」。

除了自訂指標旗標外,每個 gcloud 指令的每種指標類型最多只能傳遞一個旗標。如果是自訂指標,您可以重複 --custom-metric-utilization 旗標,在單一指令中提供多個自訂指標。

如要進一步瞭解如何為各類自動調整規模訊號設定旗標,請參閱下列頁面:

REST

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

舉例來說,下列要求會建立自動調度器,使用 CPU 使用率、負載平衡供應運算資源、兩個自訂指標和兩個調度排程。maxNumReplicas 和 minNumReplicas 欄位會限制 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_1 和 PATH_TO_CUSTOM_METRIC_2:選用:自訂指標的路徑,格式類似於 custom.cloudmonitoring.googleapis.com/path/to/metric1 和 custom.cloudmonitoring.googleapis.com/path/to/metric2。詳情請參閱「自訂指標」。

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

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