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

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

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

限制

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

事前準備

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

    選取這個頁面上您打算如何使用範例的分頁:

    控制台

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

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

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

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

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI

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

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

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

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

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

當您將自動調度器附加到 HTTP(S) 負載平衡器的執行個體群組後端時,自動調度器會對代管執行個體群組執行資源調度,以維持一小部分的負載平衡服務規模。

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

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

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

適用的負載平衡設定

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

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

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

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

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

控制台

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

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

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

要求主體必須包含 nametargetautoscalingPolicy欄位。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 自動調度全球的網路服務資源

後續步驟