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

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

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

限制

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

事前準備

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

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

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

      gcloud init
    2. Set a default region and zone.

    REST

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

      安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI。 登入後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

    詳情請參閱 Trusted Cloud 驗證說明文件中的「Authenticate for using REST」。

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

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

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

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

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

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

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

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

適用的負載平衡設定

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

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

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

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

主控台

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

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

  2. 如果您有執行個體群組,請選取該群組,然後按一下「編輯」。 如果您沒有執行個體群組,則請按一下 [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 自動調度全球的網路服務資源

後續步驟