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

ECI類型的伸縮組與ECS類型的伸縮組的工作原理一致,本文以伸縮組內的ECS實例為例,介紹彈性伸縮的工作原理。關于ECS實例和ECI實例的更多信息,請參見什么是云服務器ECS什么是彈性容器實例

工作流程

彈性伸縮增加ECS實例的工作流程如下所示:

工作流程

如果某Web應用使用ECS實例處理業務請求,系統架構分為三層(如上圖右側虛線框所示)。其中,最上層的負載均衡負責將客戶端的請求轉發給伸縮組內的ECS實例,中間層的伸縮組內的ECS實例負責處理客戶端請求,最下層的RDS數據庫負責存儲來自ECS實例的業務數據。

您可以通過彈性伸縮調整中間層的ECS實例數量,從而自動調整處理業務請求的能力。具體流程說明如下所示:

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

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

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

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

伸縮模式的配置

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

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

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

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

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

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

彈性伸縮示意圖

彈性伸縮支持為伸縮組關聯負載均衡和RDS實例。當您從終端(例如移動端或PC端)發起請求時,負載均衡負責將您的請求轉發給伸縮組內的某臺ECS實例,ECS實例接收并處理請求,并將應用數據保存在云數據庫RDS實例上。

彈性伸縮根據業務需求和配置方式自動調整伸縮組內的ECS實例數量,以下為您分別提供擴容、縮容和彈性自愈(即健康檢查)場景下彈性伸縮的示意圖。

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