根據負載平衡服務規模調度資源

本文說明如何根據外部或內部應用程式負載平衡器的服務容量,調整代管執行個體群組 (MIG) 的規模。也就是說,當負載平衡器指出群組已達到可設定的飽和度比例時,自動調度資源功能會在群組中新增或移除 VM 執行個體。飽和度的定義取決於後端執行個體群組所選負載平衡模式的目標容量。

您也可以根據 CPU 使用率或 Monitoring 指標調度 MIG 資源。

限制

您可以根據外部應用程式負載平衡器和內部應用程式負載平衡器的服務容量,自動調度代管執行個體群組的資源。系統不支援其他類型的負載平衡器。

事前準備

  • 查看自動配置器限制。
  • 請參閱自動配置器的基本概念。
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 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 進行驗證」。

根據 HTTP(S) 負載平衡服務規模執行資源調度

Compute Engine 在您的執行個體群組中提供負載平衡支援。設定好能夠根據執行個體負載調度資源的自動配置器後,您可將自動調度資源與負載平衡搭配使用。

外部或內部 HTTP(S) 負載平衡器會根據網址對應,將要求分配至後端服務。負載平衡器可有一或多個後端服務,每個後端服務都支援執行個體群組或網路端點群組 (NEG) 後端。如果後端是執行個體群組,HTTP(S) 負載平衡器會提供兩種平衡模式:UTILIZATION 和 RATE。使用 UTILIZATION,您可以指定執行個體群組中執行個體平均後端使用率的目標上限。使用 RATE 時,您必須指定每個執行個體或每個群組的每秒目標要求數。(只有區域執行個體群組支援為整個群組指定最高速率。區域性代管執行個體群組不支援為每個群組定義最高速率。)

您指定的平衡模式和目標容量,會定義 Google Cloud 判斷後端 VM 何時達到容量上限的條件。 Google Cloud 會嘗試將流量傳送至仍有容量的健康狀態良好 VM。如果所有 VM 都已達到容量上限,就會超出目標使用率或比率。

將自動配置器連接至 HTTP(S) 負載平衡器的執行個體群組後端時,自動配置器會調整代管執行個體群組的規模,以維持一小部分的負載平衡服務容量。

例如,假設代管執行個體群組的負載平衡服務規模定義為每個執行個體 100 RPS。如果您使用 HTTP (S) 負載平衡政策建立自動配置器,並將其目標使用率等級設為維持在 0.8 或 80%,則自動配置器會新增或移除代管執行個體群組中的執行個體,以維持 80% 的服務規模,或是每個執行個體 80 RPS。

下圖顯示了自動配置器如何與代管執行個體群組和後端服務互動:

自動配置器、代管執行個體群組和負載平衡後端服務之間的關係。
自動配置器會觀察代管執行個體群組的服務規模,也就是您在後端服務中定義的規模,並根據目標使用率來調度資源。在本範例中,服務規模是以 maxRatePerInstance 值測量而得。

適用的負載平衡設定

可為負載平衡服務規模設定下列三個選項之一。首次建立後端時,您可以選擇後端使用率上限、每個執行個體每秒要求數上限,或整個群組每秒要求數上限。自動調度資源功能只能搭配後端使用率上限和每個執行個體每秒要求的上限使用,因為這些設定的值可透過新增或移除執行個體來控制。舉例來說,如果您設定後端的每個執行個體每秒處理 10 個要求,且自動配置器設定為維持該速率的 80%,則自動配置器可在每個執行個體的每秒要求數有所變更時,新增或移除執行個體。

自動調度資源無法使用「每個群組的要求數上限」,因為此設定與執行個體群組中的執行個體數無關。無論群組中有多少執行個體,負載平衡器都會持續將每個群組的要求數上限傳送至執行個體群組。

舉例來說,如果將後端設置為每秒每個群組處理要求數上限是 100 個,則無論該群組有兩個或 100 個執行個體,負載平衡器每秒都會向該群組提出 100 個要求。由於無法調整每秒每個群組要求數上限的值,因此自動調度資源不適用於使用此值的負載平衡設定。

啟用根據負載平衡服務規模自動調度資源

如要根據負載平衡服務規模啟用自動調度資源,請使用下列其中一個選項。

控制台

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

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

  2. 如果您有執行個體群組,請選取該群組,然後按一下「Edit」(編輯)。 如果您沒有執行個體群組,則請按一下 [Create instance group] (建立執行個體群組)。
  3. 按一下「Group size & autoscaling」(群組大小和自動調度資源),展開該部分。
  4. 在「Autoscaling mode」(自動調度資源模式) 清單中,確認已選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體)。
  5. 指定您要讓自動配置器在這個群組中建立的執行個體數量下限與上限。
  6. 在「自動調度資源信號」部分,按一下「新增信號」。
  7. 將「信號類型」設為「HTTP 負載平衡使用率」。
  8. 輸入「目標 HTTP 負載平衡使用率」值 (以百分比表示)。舉例來說,如要將 HTTP 負載平衡使用率設為 60%,請輸入 60。

  9. 您可以使用「Initialization period」(初始化期間) 欄位設定初始化期間,讓自動配置器知道應用程式初始化所需的時間。指定正確的初始化期間可提升自動配置器的決策品質。舉例來說,向外擴充時,自動配置器會忽略仍在初始化的 VM 資料,因為這些 VM 可能尚未呈現您應用程式的一般使用情形。預設的初始化週期為 60 秒。

  10. 儲存變更。

gcloud

如要啟用自動配置器,根據服務容量進行調度,請使用 set-autoscaling 子指令。舉例來說,下列指令會建立自動配置器,針對目標代管執行個體群組調度資源,以便將服務規模維持在 60%。建立自動調整資源配置器時,除了 --target-load-balancing-utilization 參數,也必須提供 --max-num-replicas 參數:

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --max-num-replicas 20 \
    --target-load-balancing-utilization 0.6 \
    --cool-down-period 90 \
    --stabilization-period 240

您可以選擇設定下列旗標,控管自動調度資源:

  • 您可以使用 --cool-down-period 旗標設定初始化期間,讓自動配置器知道應用程式初始化所需的時間。指定正確的初始化期間可提升自動配置器的決策品質。舉例來說,向外擴充時,自動配置器會忽略仍在初始化的 VM 資料,因為這些 VM 可能尚未呈現您應用程式的一般使用情形。預設的初始化週期為 60 秒。
  • 您可以使用 --stabilization-period 標記設定穩定期,決定 MIG 縮減規模的持續時間。穩定期越短,表示 VM 刪除速度越快,可縮減規模。值必須介於 `0` 秒和 `3600` 秒之間。預設值為 `600` 秒。詳情請參閱「穩定期的最佳做法」。

您可以使用 instance-groups managed describe 子指令,確認自動配置器是否已順利建立:

gcloud compute instance-groups managed describe example-managed-instance-group

如需可用的 gcloud 指令和旗標清單,請參閱 gcloud 參考資料。

REST

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

以下範例會為可用區 MIG 建立自動配置器:

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

要求主體必須包含 name、target 和 autoscalingPolicy欄位。autoscalingPolicy 必須定義 loadBalancingUtilization。

(選用) 設定下列欄位來控管自動調度資源:

  • 您可以使用 coolDownPeriodSec 欄位設定初始化期間,讓自動配置器知道應用程式初始化所需的時間。指定正確的初始化期間可提升自動配置器的決策品質。舉例來說,向外擴充時,自動配置器會忽略仍在初始化的 VM 資料,因為這些 VM 可能尚未呈現您應用程式的一般使用情形。預設的初始化週期為 60 秒。
  • 您可以使用 stabilizationPeriodSec 欄位設定穩定期,決定 MIG 縮減規模的持續時間。穩定期間越短,VM 刪除速度越快,可更快縮減。值必須介於 `0` 秒至 `3600` 秒之間。預設值為 `600` 秒。詳情請參閱「穩定期最佳做法」。
{
  "name": "example-autoscaler",
  "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
  "autoscalingPolicy": {
    "maxNumReplicas": 20,
    "loadBalancingUtilization": {
      "utilizationTarget": 0.8
    },
    "coolDownPeriodSec": 90,
    "stabilizationPeriodSec": 240
  }
}

如要進一步瞭解如何根據負載平衡服務容量啟用自動調整資源配置功能,請完成「在 Compute Engine 中,以全球為範圍自動調整網路服務的資源配置」教學課程。

後續步驟