根據 CPU 或負載平衡服務的負載能力調度資源

依據一組虛擬機器 (VM) 執行個體的 CPU 使用率來進行資源調度,是最簡單的自動調度資源方式。您也可以選擇依據執行個體群組的 HTTP(S) 負載平衡服務規模進行資源調度。

這份文件將說明這兩種方式。

事前準備

根據 CPU 使用率執行資源調度

您可以依據代管執行個體群組 (MIG) 的平均 CPU 使用率自動調度資源。使用此政策會要求自動配置器收集群組中執行個體的 CPU 使用率,並確定其是否需要調度資源。您也可以設定自動配置器要維持的目標 CPU 使用率,則自動配置器會運作以維持該目標等級。

對自動配置器而言,目標 CPU 使用率等級就等於是執行個體群組內、所有 vCPU 長時間平均使用情況的一部分。如果總 vCPU 的平均使用率超過目標使用率,則自動配置器會新增更多虛擬機器。舉例來說,如果將目標使用率設定在 0.75,自動配置器會將執行個體群組中所有 vCPU 的平均使用率維持在 75%。

啟用根據 CPU 使用率自動調度資源

主控台


  1. 前往「Instance Groups」(執行個體群組) 頁面
  2. 如果您有執行個體群組,請選取該群組,然後按一下 [Edit group] (編輯群組)。如果您沒有執行個體群組,請按一下 [Create instance group] (建立執行個體群組)
  3. 在「Autoscaling」(自動調度資源) 下方,選取 [On] (開啟)。
  4. 在「Autoscale based on」(自動調度依據) 底下,選取 [CPU utilization] (CPU 使用率)。
  5. 輸入您想要的 [Target CPU utilization] (目標 CPU 使用率)。系統會將這個值以百分比格式處理。例如,若要使用 60% 的 CPU 使用率,請輸入 60
  6. 提供您想要這個執行個體群組擁有的執行個體數量上限。您也可以設定執行個體數量下限與等待期。等待期是指在 VM 啟動後到自動配置器開始收集資訊之前,自動配置器要等待的秒數。VM 進行初始化所用的時間會計入這段等待期,所以在此期間收集到的資料對於自動調度資源而言並不準確。預設的等待期為 60 秒。
  7. 儲存變更。

gcloud


請使用 set-autoscaling 子指令,啟用代管執行個體群組的自動調度資源功能。舉例來說,下列指令會建立目標 CPU 使用率為 75% 的自動配置器。建立自動配置器時,必須使用 --target-cpu-utilization--max-num-replicas 參數:

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --max-num-replicas 20 \
    --target-cpu-utilization 0.75 \
    --cool-down-period 90

您可以視需要使用 --cool-down-period 旗標,此旗標會指示自動配置器在新執行個體啟動後到使用其資料之前,需要等待的秒數。執行個體進行初始化所用的時間會計入這段等待期,所以在此期間收集到的使用率資料對於自動調度資源而言並不準確。等待期結束後,自動配置器會開始收集這個新執行個體的使用率資料,以判斷該群組是否需要進行資源調度。預設的等待期為 60 秒。

您可以使用 instance-groups managed describe 子指令來驗證是否成功啟用自動調度資源功能,該指令會說明對應的代管執行個體群組,並提供該執行個體群組自動調度資源功能的相關資訊:

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

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

API


注意:雖然自動調度資源是代管執行個體群組的一項功能,但它是一個單獨的 API 資源。當您針對自動調度資源建構 API 要求時,請記住這一點。

透過 API 向 autoscalers.insert 方法提出 POST 要求。

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

要求主體必須包含 nametargetautoscalingPolicy欄位。而 autoscalingPolicy 必須定義 cpuUtilizationmaxNumReplicas

您可以視需要使用 coolDownPeriodSec 欄位,此欄位會指示自動配置器在新執行個體啟動後到使用其資料之前,需要等待的秒數。執行個體進行初始化所用的時間會計入這段等待期,所以在此期間收集到的使用率資料對於自動調度資源而言並不準確。等待期結束後,自動配置器會開始收集這個新執行個體的使用率資料,以判斷該群組是否需要進行資源調度。預設的等待期為 60 秒。

{
 "name": "example-autoscaler",
 "target": "https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
    "maxNumReplicas": 10,
    "cpuUtilization": {
       "utilizationTarget": 0.8
     },
    "coolDownPeriodSec": 90
  }
}

如要進一步瞭解依據 CPU 使用率來啟用自動調度資源功能的資訊,請完成以下教學課程:對高擴充性的應用程式序使用自動調度資源功能

自動配置器如何處理繁重的 CPU 使用率

當 CPU 使用率偏高時,如果使用率接近 100%,自動配置器會估計群組可能已嚴重超載。在這種情況下,自動配置器最多可將虛擬機器數量增加 50%。

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

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

HTTP(S) 負載平衡器會將負載散布到各個後端服務,讓流量能分散到各個執行個體群組。在後端服務中,您可將與後端相關聯執行個體群組的負載平衡服務規模,定義為 CPU 使用率上限、每秒的要求數上限 (RPS) 或群組每秒的要求數上限。當執行個體群組達到服務規模時,後端服務會開始傳送流量到其他執行個體群組。

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

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

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

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

適用的負載平衡設定

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

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

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

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

主控台


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

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

  2. 如果您有執行個體群組,請選取該群組,然後按一下 [Edit group] (編輯群組)。如果您沒有執行個體群組,則請按一下 [Create instance group] (建立執行個體群組)
  3. 在「Autoscaling」(自動調度資源) 下方,選取 [On] (開啟)。
  4. 在「Autoscale based on」(自動調度依據) 底下,選取 [HTTP load balancing utilization] (HTTP 負載平衡使用率)。
  5. 輸入 [Target load balancing usage] (目標負載平衡使用率)。系統會將這個值以百分比格式處理。例如,若要使用 60% 的 HTTP 負載平衡使用率,請輸入 60
  6. 提供您想要這個執行個體群組擁有的執行個體數量上限。您也可以設定執行個體數量下限與等待期。等待期是指,在虛擬機器啟動後、自動配置器開始從中收集資訊前,自動配置器應等待的秒數。執行個體進行初始化所用的時間會計入這段等待期,所以在此期間收集到的資料對於自動調度資源而言並不準確。預設的等待期為 60 秒。
  7. 儲存變更。

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 旗標,此旗標會指示自動配置器在新執行個體啟動後到使用其資料之前,需要等待的秒數。執行個體進行初始化所用的時間會計入這段等待期,所以在此期間收集到的使用率資料對於自動調度資源而言並不準確。等待期結束後,自動配置器會開始收集這個新執行個體的使用率資料,以判斷該群組是否需要進行資源調度。預設的等待期為 60 秒。

您可以使用 describe 子指令來驗證是否已成功建立自動配置器:

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

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

API


注意:雖然自動調度資源是代管執行個體群組的一項功能,但它是一個單獨的 API 資源。當您針對自動調度資源建構 API 要求時,請記住這一點。

透過 API 向 autoscalers.insert 方法提出 POST 要求。

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

要求主體必須包含 nametargetautoscalingPolicy欄位。autoscalingPolicy 必須定義 loadBalancingUtilization

您可以視需要使用 coolDownPeriodSec 欄位,此欄位會指示自動配置器在新執行個體啟動後到使用其資料之前,需要等待的秒數。執行個體進行初始化所用的時間會計入這段等待期,所以在此期間收集到的使用率資料對於自動調度資源而言並不準確。等待期結束後,自動配置器會開始收集這個新執行個體的使用率資料,以判斷該群組是否需要進行資源調度。預設的等待期為 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 自動調度全球的網路服務資源

根據網路負載平衡執行資源調度

網路負載平衡器會使用例如 TCP 和 UDP 這類較低層級的通訊協定分散負載。網路負載平衡可讓您分散非基於 HTTP(S) (例如 SMTP) 的流量。

您可使用 CPU 使用率或自訂指標,為屬於網路負載平衡器目標集區一部分的代管執行個體自動調度資源。詳情請參閱根據 CPU 使用率執行資源調度根據 Stackdriver Monitoring 指標調度資源