Auto Scaling的目標追蹤規則是Auto Scaling服務與CloudMonitor深度結合的產物,定義了更加穩定、精準、快速的Auto Scaling策略,可以解決當前伸縮組動態調整過程存在的一些痛點和問題(例如使用者流量突增或硬體出現故障等突發事件),能快速實現伸縮組的自動擴縮容,確保系統的穩定性和可用性。
概念介紹
Auto Scaling的目標追蹤規則是在簡單規則的基礎上擴充出來的一種新類型的伸縮規則,您可以根據需要選擇一項CloudMonitor指標,並指定監控指標的目標值,Auto Scaling會自動計算所需的執行個體數量並進行擴縮容,從而將CloudMonitor指標更高效、更準確地維持在目標值附近。
Auto Scaling支援步進規則、預測規則、簡單規則、目標追蹤規則四種伸縮規則類型,更多資訊,請參見伸縮規則概述。
支援的監控項和功能設定
支援的監控項
在使用目標追蹤規則時,對可選的CloudMonitor指標有一定限制,指標必須是有效使用率指標,能夠正確反映伸縮組內執行個體整體的繁忙程度,並且指標值需要根據伸縮組內執行個體數量的變化而相應地增加或減少。
滿足上述條件的監控指標適合應用於目標追蹤規則,不同類型的伸縮組,其目標追蹤規則支援的CloudMonitor指標不同:
ECS類型的伸縮組
API監控指標
控制台監控指標
CpuUtilization
(ECS)平均CPU使用率
IntranetRx
(ECS)內網入流量的平均值
IntranetTx
(ECS)內網出流量的平均值
ClassicInternetRx/VpcInternetRx
(ECS)公網入流量的平均值
說明如果伸縮組的網路類型為傳統網路,則此處的(ECS)公網入流量的平均值指的是(ECS)傳統網路公網入流量的平均值。
如果伸縮組的網路類型為專用網路,則此處的(ECS)公網入流量的平均值指的是(ECS)VPC網路公網入流量的平均值。
ClassicInternetTx/VpcInternetTx
(ECS)公網出流量的平均值
說明如果伸縮組的網路類型為傳統網路,則此處的(ECS)公網出流量的平均值指的是(ECS)傳統網路公網出流量的平均值。
如果伸縮組的網路類型為專用網路,則此處的(ECS)公網出流量的平均值指的是(ECS)VPC網路公網出流量的平均值。
MemoryUtilization
(Agent)記憶體
表示通過CloudMonitor用戶端採集的記憶體使用量率指標。
LoadBalancerRealServerAverageQps
(ALB)伺服器組單機QPS
說明選擇該CloudMonitor指標後,您還需要選擇相應的ALB伺服器組。
ECI類型的伸縮組
API監控指標
控制台監控指標
EciPodCpuUtilization
CPU使用率
EciPodMemoryUtilization
記憶體
LoadBalancerRealServerAverageQps
(ALB)伺服器組單機QPS
說明選擇該CloudMonitor指標後,您還需要選擇相應的ALB伺服器組。
支援的功能設定
禁用縮容:如果不想使用目標追蹤規則的自動刪除執行個體功能,可以通過開啟禁用縮容功能來實現。
開啟禁用縮容功能,您可以通過在Auto Scaling控制台的建立伸縮規則頁面,單擊禁用縮容參數後的按鈕來實現;也可以通過調用API CreateScalingRule參數,設定DisableScaleIn為true來實現。
開啟禁用縮容功能後,伸縮組的目標追蹤規則只能建立一條用於擴容的警示任務,不會建立或者刪除一條用於縮容的警示任務。通過該功能,您可以使用其他方式控制伸縮組的縮容過程。例如,您可以通過警示任務監控其他指標,觸發一條簡單規則用於縮容操作。
關閉禁用縮容功能後,伸縮組的目標追蹤規則會同時建立一條用於擴容的警示任務和一條用於縮容的警示任務。
執行個體預熱時間:指新添加的執行個體所需要的預熱時間,在預熱時間段內,該執行個體不影響伸縮組的監控指標。
新執行個體加入伸縮組後,通常需要經歷業務部署、負載平衡健全狀態檢查、資料擷取等過程,才能上報穩定的監控資料,此過程中不適合觸發新的伸縮活動。為了限制擴縮容過程執行的頻率,伸縮組提供了對伸縮規則設定合適的執行個體預熱時間,在此期間伸縮組會拒絕執行伸縮規則。
執行個體的預熱階段主要體現在以下幾點:
執行個體預熱結束前,可正常加入伸縮組,但執行個體不會向CloudMonitor上報資料,CloudMonitor在彙總伸縮組上報的監控指標時會忽略伸縮組內的預熱執行個體,不會將預熱執行個體作為伸縮組內的執行個體。
執行個體預熱結束後,將開始向CloudMonitor上報資料,CloudMonitor在此時會將該執行個體作為伸縮組內的執行個體。
伸縮組在擴容過程中,加入伸縮組的預熱執行個體不會做為擴容執行個體的基數。
例如,當前組內執行個體數量為2個,伸縮組觸發擴容活動後添加5個執行個體到伸縮組,預熱時間設定為300秒,在執行個體預熱期間,伸縮組再次觸發擴容活動後,仍按照執行個體數量為2個作為擴容執行個體的基數。
伸縮組在縮容過程中,會自動根據歷史執行情況設定合適的預設冷卻時間,避免加入伸縮組的預熱執行個體因資料延遲而引起連續縮容活動,而導致伸縮組內的執行個體被過多釋放。
與簡單規則對比
目標追蹤規則與簡單規則對比如下所示:
對比項 | 簡單規則 | 目標追蹤規則 |
使用者參與度 | 使用者參與度高。 您可以根據實際需要自訂擴縮容活動,使您真正實現按需使用的目標。但您需要關注具體的擴縮容活動、期望目標值等。 | 使用者參與度低。 將擴縮容方法和擴縮容時間兩者定義整合在一起,您可以查看到監控指標值,且只需要關注監控指標的目標值即可。 |
調整粒度 | 調整粒度固定。 您可以自訂具體的擴縮容操作,但無法感知監控指標的實際狀態,您只能夠根據經驗來設定一個固定的伸縮規則,其調整過程粒度無法實現動態調整。 | 調整粒度精準。 目標追蹤伸縮規則增加了對監控資料的感知能力,根據歷史的監控資料值和期望目標值計算出所需要的擴縮容執行個體數,使用盡量少的調整過程接近目標值,實現快速、精準、動態擴縮容活動。 |
調整過程 | 調整過程缺乏控制。主要體現在以下幾點:
| 調整過程式控制制靈活,主要體現在以下幾點:
|
建立目標追蹤規則
注意事項
在建立目標追蹤規則前,您需要注意以下幾點:
一個伸縮組內建立目標追蹤規則時,同一指標類型對應的目標追蹤規則只能存在一個。
建立目標追蹤規則時,會自動建立2條CloudMonitor警示任務。
警示任務不支援修改與刪除,只能進行查看、停用或啟用操作。如需刪除警示任務,請刪除對應的目標追蹤規則即可。
2條CloudMonitor警示任務採用相對激進的擴容策略和相對保守的縮容策略,分別用於擴容活動和縮容活動。
例如,如果伸縮組的擴容警示任務採樣間隔為60秒,警示任務連續3分鐘滿足閾值條件時,則進行擴容活動;如果伸縮組的縮容警示任務採樣間隔為60秒,警示任務連續15分鐘滿足閾值條件時,則進行縮容活動。
發生警示時,伸縮組將觸發對應的擴縮容活動,Auto Scaling會根據監控指標的歷史資料計算擴縮容過程中執行個體的數量。對於擴容活動來說,需要增加的執行個體數量採取向上取整,避免擴容的執行個體數量不足;對於縮容活動來說,需要移出的執行個體數量採取向下取整,避免釋放過多的執行個體數量。
例如,如果伸縮組需要增加執行個體個數為1.5個時,實際伸縮組將增加2個執行個體;如果伸縮組需要移出的執行個體個數為1.5個時,實際伸縮組將減少1個執行個體。
如果監控資料指標不足時,伸縮組將不會觸發擴縮容活動。
如果伸縮組內的執行個體數量較少時,可能會存在監控指標值與目標值存在較大的差距。此時,伸縮組內的執行個體數量的變化對伸縮組彙總指標值具有較大的影響。
例如,如果在縮容過程中警示規則一直處於警示狀態,卻沒有發生縮容活動。這種情況主要是因為縮容過程計算得到的縮容執行個體數量少於1個,因此不會產生實際的伸縮活動。
操作步驟
您可以通過Auto Scaling控制台或者調用API兩種方式來建立伸縮組的目標追蹤規則。
控制台方式:選擇需要建立的伸縮組,建立目標追蹤規則的更多操作,請參見配置伸縮規則。
API方式:調用API CreateScalingRule參數建立目標追蹤規則,更多操作,請參見CreateScalingRule。