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

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

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

事前準備

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

您可根據代管執行個體群組的平均 CPU 使用率自動調度資源。使用此政策會要求自動配置器收集群組中執行個體的 CPU 使用率,並確定其是否需要調度資源。您可設定自動配置器應維持的目標 CPU 使用率,自動配置器將會努力維持該等級。

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

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

主控台


  1. 前往「Instance Groups」(執行個體群組) 頁面
  2. 如果您有執行個體群組,請選取該群組,然後按一下 [Edit group] (編輯群組)。如果您沒有執行個體群組,請按一下 [Create instance group] (建立執行個體群組)
  3. 在「Autoscaling」(自動調度資源) 底下,選取 [On] (開啟)
  4. 在「自動配置依據」底下,選取 [CPU 用量]
  5. 輸入 [目標 CPU 用量]。這個值會被視為百分比。例如,針對 60% 的 CPU 用量,請輸入 60
  6. 提供您想要這個執行個體群組擁有的執行個體數量上限。您也可以設定執行個體數量下限與等待期。等待期是指,在虛擬機器啟動後、自動配置器開始從中收集資訊前,自動配置器應等待的秒數。虛擬機器進行初始化可能花費的時間也計算在內,在這段時間,收集到的用量對於自動調度資源而言不可靠。預設的等待期為 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 指令與標記的完整清單,請參閱 gcloud 參考資料

API


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

在 API 中,對下列網址提出 POST 要求,用您自己的專案 ID 取代 myproject,並用您選擇的區域取代 us-central1-f

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/autoscalers/

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

或者,您也可以使用 coolDownPeriodSec 參數;這個參數會通知自動配置器,在新執行個體啟動後、開始收集用量前,要等待的秒數。等待期過後,自動配置器會開始收集新執行個體的用量資訊,並確定群組是否需要額外執行個體。執行個體進行初始化可能花費的時間也計算在內,在這段時間,收集到的用量對於自動調度資源而言不可靠。預設的等待期為 60 秒。

{
 "name": "example-autoscaler",
 "target": "https://www.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 使用率偏高時,如果使用率接近 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 主控台的「Instance Groups」(執行個體群組) 窗格。
  2. 如果您有執行個體群組,請選取該群組,然後按一下 [Edit group] (編輯群組)。如果您沒有,請按一下 [Create instance group] (建立執行個體群組)
  3. 在「Autoscaling」(自動調度資源) 底下,選取 [On] (開啟)
  4. 在「自動配置依據」底下,選取 [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 指令與標記的完整清單,請參閱 gcloud 參考資料

API


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

在 API 中,對下列網址提出 POST 要求,用您自己的專案 ID 取代 myproject,並用您選擇的區域取代 us-central1-f

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/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
  }
}

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

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

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

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件