全部產品
Search
文件中心

Auto Scaling:工作原理

更新時間:Jun 30, 2024

本文介紹Auto Scaling的工作流程、伸縮模式的配置和Auto Scaling示意圖。

ECI類型的伸縮組與ECS類型的伸縮組的工作原理一致,本文以伸縮組內的ECS執行個體為例,介紹Auto Scaling的工作原理。關於ECS執行個體和ECI執行個體的更多資訊,請參見什麼是Elastic Compute Service什麼是Elastic Container Instance

工作流程

Auto Scaling增加ECS執行個體的工作流程如下所示:

工作流程

如果某Web應用使用ECS執行個體處理業務請求,系統架構分為三層(如上圖右側虛線框所示)。其中,最上層的負載平衡負責將用戶端的請求轉寄給伸縮組內的ECS執行個體,中介層的伸縮組內的ECS執行個體負責處理用戶端請求,最下層的RDS資料庫負責儲存來自ECS執行個體的業務資料。

您可以通過Auto Scaling調整中介層的ECS執行個體數量,從而自動調整處理業務請求的能力。具體流程說明如下所示:

  1. Auto Scaling在符合各伸縮模式的觸發條件時自動觸發伸縮活動,伸縮模式如下表所示。關於伸縮模式的配置方式,請參見伸縮模式的配置

    下表中的所有伸縮模式都可以組合配置,即多模式並行方式。例如,在每天中午12:00開始,業務需求明顯增加時,您可以設定定時任務,在每天12:00建立20台ECS執行個體以應對業務高峰。但建立的ECS執行個體台數不一定能滿足業務需求, 則您可以選擇其他伸縮模式,如動態模式、自訂模式等,與定時模式組合起來使用。

    伸縮模式說明相關控制台文檔相關API文檔
    固定數量模式
    • 如果您在伸縮組設定了最小執行個體數,當伸縮組的ECS執行個體數量低於最小執行個體數時,伸縮組會自動添加ECS執行個體,使得伸縮組內的ECS執行個體數量等於最小執行個體數。
    • 如果您在伸縮組設定了最大執行個體數,當伸縮組的ECS執行個體數量超過最大執行個體數時,伸縮組會自動移出ECS執行個體,使得伸縮組內的ECS執行個體數量等於最大執行個體數。
    • 如果您建立伸縮組時設定期望執行個體數,伸縮組會自動將ECS執行個體數量維持在期望執行個體數。
    配置伸縮組CreateScalingGroup
    健康模式如果您在伸縮組開啟健全狀態檢查功能,伸縮組會定期檢查ECS執行個體的運行狀態,如果發現一台ECS執行個體未處於運行中狀態,則判定該ECS執行個體為不健康執行個體並移出。
    說明 伸縮組本身內建了健全狀態檢查功能。如果伸縮組也關聯了負載平衡(即傳統型負載平衡CLB(原SLB)或應用型負載平衡ALB),由於負載平衡也支援配置健全狀態檢查功能,則在進行健全狀態檢查時,伸縮組內建的健全狀態檢查和負載平衡的健全狀態檢查功能會同時生效。
    配置伸縮組CreateScalingGroup
    定時模式您可以建立定時任務,在指定時間執行指定伸縮規則。配置定時任務CreateScheduledTask
    自訂模式您可以手動進行Auto Scaling,包括手動執行伸縮規則,或者手動添加、移出或者刪除已有的ECS執行個體。
    動態模式您可以雲端式監控效能指標(例如CPU使用率)建立警示任務,當伸縮組的指標資料滿足您指定的警示條件(例如伸縮組內所有ECS執行個體的CPU平均值大於60%)時,觸發警示並執行您指定的伸縮規則。配置警示任務CreateAlarm
  2. 系統自動通過ExecuteScalingRule介面觸發伸縮活動,並在該介面中指定需要執行的伸縮規則唯一識別碼,例如樣本值為ari:acs:ess:cn-hangzhou:140692647406****:scalingrule/asr-bp1dvirgwkoowxk7****
    • 如果您通過Auto Scaling控制台操作,您可以建立伸縮規則後,在伸縮規則列表下找到對應的伸縮規則,單擊伸縮規則ID/名稱列下的伸縮規則ID(例如asr-bp14u7kzh8442w9z****),在彈出的頁面即可查詢到該標識符的值。關於如何建立伸縮規則的具體操作,請參見配置伸縮規則
    • 如果您通過API方式進行操作,關於如何擷取伸縮組下的伸縮規則唯一識別碼(ScalingRuleAri),您可以調用DescribeScalingRules介面,在返回資料中即可查詢到該標識符的值。
  3. 根據上述步驟傳入的伸縮規則唯一識別碼(或ScalingRuleAri)擷取伸縮規則、伸縮組、伸縮配置的相關資訊,並建立伸縮活動。
    1. 通過伸縮規則唯一識別碼(或ScalingRuleAri)查詢伸縮規則以及相應的伸縮組資訊,計算出需要增加的ECS執行個體數量,並獲得需要配置的負載平衡和RDS資訊。
    2. 通過伸縮組查詢到相應的伸縮配置資訊,即獲得了需要建立的ECS執行個體的配置資訊(CPU、記憶體、頻寬等)。
    3. 根據需要增加的ECS執行個體數量、執行個體配置資訊、需要配置的Server Load Balancer執行個體和RDS執行個體建立伸縮活動。
  4. 在伸縮活動中,自動建立執行個體並配置負載平衡和RDS。
    1. 按照執行個體配置資訊建立指定數量的ECS執行個體。
    2. 將建立好的ECS執行個體的內網IP添加到指定的RDS執行個體的訪問白名單當中,並將建立好的ECS執行個體添加到指定的Server Load Balancer執行個體當中。
  5. 伸縮活動完成後,啟動伸縮組的冷卻功能。

    待冷卻時間完成後,該伸縮組才能接收新的執行伸縮規則請求。

伸縮模式的配置

Auto Scaling會自動根據配置適時觸發伸縮活動,增加或移出伸縮組內的ECS執行個體。如果您需要Auto Scaling通過某個伸縮模式觸發伸縮活動,您可以選擇如下對應的配置方式來實現。

伸縮模式配置方式說明
固定數量模式伸縮組+執行個體配置來源該模式的伸縮效果由伸縮組以下配置項決定:
  • 最小執行個體數
  • 最大執行個體數
  • (可選)期望執行個體數
健康模式伸縮組+執行個體配置來源該模式需要開啟伸縮組中執行個體的健全狀態檢查配置項。
定時模式伸縮組+執行個體配置來源+伸縮規則+定時任務該模式的伸縮效果由定時任務決定。
動態模式伸縮組+執行個體配置來源+伸縮規則+警示任務該模式的伸縮效果由警示任務決定。
自訂模式任意伸縮模式的配置方式在任意伸縮模式下,您可以手動添加、移出或者刪除已有的ECS執行個體。如果您配置了伸縮規則,您還可以手動執行伸縮規則。
多模式並行組合各伸縮模式的配置方式

根據選用的伸縮模式不同,生效的配置項也不同。並且各伸縮模式是互相獨立的,各伸縮模式的伸縮效果沒有優先順序區分,即伸縮組先觸發哪個伸縮模式就先執行哪個伸縮模式對應的伸縮配置項。

例如,為了滿足業務新需求,您同時選用了定時模式和動態模式,需要同時配置定時任務和警示任務。如果伸縮組在某個時間先觸發定時任務配置項,則先執行定時任務,再執行警示任務。

各配置方式具體說明如下:

序號配置方式說明
伸縮組+執行個體配置來源您需要先建立伸縮組,再為伸縮組配置執行個體配置來源,然後啟用執行個體配置來源和伸縮組。完成以上操作後,Auto Scaling才可以自動進行彈性擴張和收縮。該配置方式是必選的基礎配置方式,是最小的登錄區。
伸縮組+執行個體配置來源+伸縮規則+定時任務在基礎配置方式上(即①),您需要建立伸縮規則,再建立定時任務。Auto Scaling通過定時任務來自動執行伸縮規則。
伸縮組+執行個體配置來源+伸縮規則+警示任務在基礎配置方式上(即①),您需要建立伸縮規則,再建立警示任務。Auto Scaling通過警示任務來自動執行伸縮規則。

Auto Scaling示意圖

Auto Scaling支援為伸縮組關聯負載平衡和RDS執行個體。當您從終端(例如移動端或PC端)發起請求時,負載平衡負責將您的請求轉寄給伸縮組內的某台ECS執行個體,ECS執行個體接收並處理請求,並將應用資料儲存在雲資料庫RDS執行個體上。

Auto Scaling根據業務需求和配置方式自動調整伸縮組內的ECS執行個體數量,以下為您分別提供擴容、縮容和彈性自愈(即健全狀態檢查)情境下Auto Scaling的示意圖。

圖 1. 彈性擴容示意圖彈性擴張示意圖
圖 2. 彈性縮容示意圖彈性收縮示意圖
圖 3. 彈性自愈示意圖彈性自愈示意圖