在您的業務負載對資源需求降低時,伸縮組會根據您的策略觸發縮容活動,自動減少伸縮組中的資源數量,從而避免資源浪費。本文將指導您更優雅地完成縮容操作。
縮容流程介紹
在彈性收縮活動發生時,伸縮組會根據您配置的策略,在伸縮組中篩選出合適的執行個體移出伸縮組,執行個體被移出後會按照您預先設定的回收模式回收。您可以在不同的伸縮流程中配置相應的操作,具體可配置的操作環節如圖展示。
觸發縮容活動
確保縮容後資源滿足基礎業務負載(控制縮容邊界)
實現方式:為伸縮組設定組內最小執行個體數。
最小執行個體數是伸縮組內執行個體縮容的下界,當發生縮容活動時,若縮容後執行個體數小於最小執行個體數時,該縮容活動會被拒絕,以此防止您的伸縮組資源無法滿足業務基礎負載。
具體操作:請參見配置伸縮組。
根據負載的階梯變化縮容(步進規則)
實現方式:為伸縮組設定步進規則。
您可以設定步進規則實現根據負載的階梯變化縮容,以避免因快速減少大量執行個體而引起的系統壓力或服務中斷,實現優雅縮容。如您期望按照伸縮組叢集的CPU平均佔用率的階梯變化來設計縮容方案,如:
在CPU平均佔用率低於20%時縮容5個執行個體。
在CPU平均佔用率低於30%時縮容3個執行個體。
在CPU平均佔用率低於50%時縮容1個執行個體。
您可以為伸縮組設定如下步進規則。
具體操作:請參見配置伸縮規則。
設定冷卻時間和警示任務觸發頻率以控制縮容速度和頻率
您可以通過設定冷卻時間和警示任務觸發頻率以防止縮容過快引起業務波動,從而實現優雅的觸發縮容。
自訂觸發縮容的時機
您可以根據您的需求,自訂觸發縮容的時機,以實現優雅的觸發縮容。實現方式如下。
選擇被縮容的執行個體
伸縮組預設會按照您伸縮組配置的交換器的順序進行縮容(優先順序策略),您可以根據您的需求,調整縮容策略為其他方式,來選擇被縮容的執行個體。
如果您不想讓某個關鍵執行個體被縮容,您可以為該執行個體開啟保護狀態,防止該執行個體被意外縮容而影響正常業務。具體操作說明,請參見手動將執行個體轉為或移出保護狀態。
ECI伸縮組不支援配置擴縮容策略和執行個體移出策略,ECI伸縮組預設先篩選最早伸縮配置對應的執行個體,再從篩選結果中移出最早建立的執行個體。
方案一:縮容後執行個體在可用性區域分布均勻(均衡分布策略)
本方案側重容災,使用本方案,在縮容後可以保持執行個體在可用性區域之間分布均勻,以達到多可用性區域容災的效果。
實現方式:設定擴縮容策略為均衡分布策略。
在配置該策略之後,伸縮組會優先從執行個體數最多的可用性區域篩選出可被縮容的執行個體來進行縮容操作,當存在多個執行個體時,會通過伸縮組的執行個體移出策略進一步選擇被縮容的執行個體,包括移除最早/最新建立的執行個體、最早伸縮配置對應的執行個體。
具體操作:請參見情境二:擴縮容策略(均衡分布策略)+執行個體移出策略。
方案二:優先縮容單價最高的執行個體(成本最佳化策略)
此方案側重成本控制,通過採用成本最佳化策略優先縮減成本效益最低(單價最高)的雲執行個體,實現高效資源利用。
實現方式:設定擴縮容策略為成本最佳化策略。
在配置該策略之後,伸縮組會優先縮容vCPU單價最高的執行個體。伸縮組會優先篩選出vCPU單價最高的執行個體,當存在多個執行個體時,會通過伸縮組的執行個體移出策略進一步選擇被縮容的執行個體,包括移除最早/最新建立的執行個體、最早伸縮配置的執行個體。
具體操作:請參見情境三:擴縮容策略(成本最佳化策略)+執行個體移出策略。
本方案也支援設定伸縮組中搶佔式執行個體和按量執行個體的比例,以達到平衡成本的目的。
方案三:自訂伸縮組內容量分布策略(自訂群組合策略)
您可以根據實際業務需求,組合方案一和方案二的策略。
實現方式:設定擴縮容策略為自訂群組合策略。
使用該策略,您可以根據需要,調整按量執行個體和搶佔式執行個體的比例、可用性區域間的容量均衡,也可以分別制定按需和搶佔式執行個體的容量分布策略。
具體操作:請參見設定伸縮組的執行個體終止策略。
方案四:自訂縮容策略
如果伸縮組支援的縮容策略不滿足您的需求,您可以參考本方案通過函數服務自訂您的縮容策略。
實現方式:設定執行個體移出策略為自訂策略。
通過在函數服務以編程的方式自訂您的縮容策略,每次觸發縮容活動都會調用您配置好的函數,您可以在函數內自訂哪些執行個體可以縮容、哪些執行個體不能被縮容。
具體操作:請參見通過函數自訂ECS執行個體縮容策略。
優雅縮容
優雅縮容是指在執行個體被移出時,如果當前執行個體正在執行任務,暫停該執行個體的移出流程,等待任務執行完成後繼續進行執行個體移出,避免引起服務中斷。
實現方式:設定生命週期掛鈎。
在觸發縮容活動後移出執行個體時,您可以使用生命週期掛鈎掛起執行個體,執行自訂動作,您還可以調用API延長生命週期掛鈎的掛起時間等待執行個體完成未完成的任務。
具體操作:請參見生命週期掛鈎概述、RecordLifecycleActionHeartbeat - 延長生命週期掛鈎觸發後ECS執行個體被掛起等待時間。
ECI伸縮組不支援生命週期掛鈎,不支援本方案。
通過在伸縮組中直接移出、刪除、停止執行個體達到類似縮容的效果時,不會觸發生命週期掛鈎,不支援本方案。
回收被縮容執行個體
為了提高縮容效率,伸縮組預設會採用強制釋放模式回收執行個體,在此模式下,執行個體移出後將直接釋放執行個體,釋放後的執行個體無資源保留。修改執行個體回收模式,請參見配置伸縮組。