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


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

您也可以根據 MIG 的CPU 使用率監控指標來調整資源。

限制

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

事前準備

  • 查看自動調度資源限制
  • 閱讀自動配置器基本概念
  • 如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 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.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the 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.

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

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

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

外部或內部 HTTP(S) 負載平衡器會根據網址對應,將要求分派給後端服務。負載平衡器可包含一或多個後端服務,每個後端服務都支援執行個體群組或網路端點群組 (NEG) 後端。如果後端是執行個體群組,HTTP(S) 負載平衡器會提供兩種平衡模式UTILIZATIONRATE。使用 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. 在「Autoscaling mode」(自動調度資源模式) 底下,選取「On: add and remove instances to the group」(開啟:在群組中新增和移除執行個體) 即可啟用自動調度資源功能。
  4. 指定您要讓自動配置器在這個群組中建立的執行個體數量下限與上限。
  5. 在「自動調整信號」部分中,按一下「新增信號」
  6. 將「信號類型」設為「HTTP 負載平衡使用率」
  7. 輸入「目標 HTTP 負載平衡使用率」。系統會將這個值以百分比格式處理。例如,針對 60% 的 HTTP 負載平衡使用率,請輸入 60

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

  9. 儲存變更。

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

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

您可以使用 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 秒。

{

 "name": "example-autoscaler",
 "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
    "maxNumReplicas": 20,
    "loadBalancingUtilization": {
       "utilizationTarget": 0.8
     },
    "coolDownPeriodSec": 90
  }
}

如要進一步瞭解依據負載平衡服務規模來啟用自動調度資源功能的資訊,請完成以下教學課程:透過 Compute Engine 自動調度全球的網路服務資源

後續步驟