伸縮組是Auto Scaling的核心組件,用於管理一組擁有相同應用情境和執行個體類型的服務執行個體。通過伸縮組,您可以快速地橫向擴充叢集中的執行個體。此外,伸縮組還可以根據您的業務需求動態調整執行個體的數量,協助您有效降低成本。
為什麼使用伸縮組
快速橫向擴充(高可用)
您可以通過使用伸縮組快速橫向擴充您的服務叢集,通過增加服務的數量提升您的叢集承載能力。
控製成本
服務叢集橫向擴充意味著需要維持更多的計算資源,從而使成本增加,但是您的業務不是在任何時間都處於滿負載狀態,您可以根據實際的需求,利用雲端運算的彈效能力,在計算資源需求下降時減少資源的投入,從而控製成本。
支援的伸縮方案
方案一:保持固定數量且可用的執行個體
適用情境:在不伸縮時,維持叢集的高可用。
實現方式:為伸縮組開啟執行個體健全狀態檢查和期望執行個體數。
在開啟伸縮組執行個體健全狀態檢查後,伸縮組會自動移除伸縮組中不健康的執行個體。如果目前執行個體數小於期望執行個體數,會自動觸發擴容,保證伸縮組中始終有固定數量且可用的執行個體。
舉例說明
例如您期望叢集可用商務服務數量為10,您可以為伸縮組設定期望執行個體數為10,伸縮組會自動觸發伸縮活動來維持可用服務數量為10。
方案二:定時自動調整
適用情境:業務規律波動,即業務叢集資源佔用隨時間規律波動。
實現方式:通過為伸縮組設定定時任務實現定時擴縮容。
在業務叢集資源佔用升高的時間點,通過定時任務觸發擴張。相反的,在資源佔用降低的時間點,通過定時任務觸發收縮。完整步驟,請參見定時自動擴縮容ECS執行個體。
舉例說明
例如您的業務叢集在每天傍晚7點時訪問量增加,在淩晨1點時降低,為了應對業務訪問需求的變化,您可以設定以下兩個定時任務。
應對訪問量增加:設定傍晚7點的定時擴充任務,在每天傍晚7點,通過增加服務副本數提升叢集的承載能力。
應對訪問量減少:設定淩晨1點的定時收縮任務,在每天淩晨1點,通過減少服務副本數從而提高資源使用率,減少不必要的成本支出。
方案三:通過資源佔用閾值伸縮(CPU佔用率、記憶體佔用率等)
適用情境:突發業務波動情境。資源佔用達到某個閾值時觸發伸縮。
實現方式
叢集資源佔用率達到閾值時觸發擴縮容(警示任務)
您可以為伸縮組設定警示任務,在資源佔用達到閾值後觸發警示,然後進行擴縮容活動。
期望叢集資源佔用率維持在目標值(目標追蹤規則)
您可以為伸縮組設定目標追蹤規則,實現將伸縮組的資源佔用維持在目標值附近。
舉例說明
為ECS伸縮組建立一個目標追蹤規則,設定平均CPU佔用率的目標值為80%,伸縮組會自動通過添加或刪除執行個體來將伸縮組平均CPU佔用率維持在80%附近。
兩種實現方式的區別
警示任務方案更加靈活和自訂。可以控制在觸發警示後增加/減少多少台執行個體,也可以根據資源佔用的階梯變化靈活設定擴縮容的數量。
目標追蹤規則配置更加簡單,只需關注需要將資源佔用率維持在哪個數值。
方案四:自訂伸縮(手動伸縮)
如果前幾種方案都不滿足您的需求,您可以通過該方案實現自訂的伸縮方案。
伸縮組支援通過手動執行伸縮規則、手動修改執行個體數的方式觸發擴縮容活動。完整操作,請參見手動一鍵擴縮容ECS執行個體。
手動伸縮的方式支援API調用,您可以結合實際業務,通過編寫程式調用API自訂伸縮方案。
方案五:預測性伸縮
除了前幾種方案以外,伸縮組還提供預測未來資源需求自動調整的功能。
該方案通過配置預測規則的方式實現,您可以先使用只預測不伸縮的方式判斷預測的準確性和適用性,如果預測結果滿足您的需求,您可以為該預測規則開啟預測並伸縮,開啟此選項後,預測規則會根據預測產生的定時計劃自動建立預測任務,完成自動擴縮容。具體操作,請參見查看預測規則效果。
注意事項
在使用伸縮組之前,請先確保您執行個體內部署的業務支援橫向擴充。
Auto Scaling是以橫向擴充的方式擴充執行個體,因此,您需要考慮在您的執行個體橫向擴充時是否會對您的叢集業務造成影響。
資料一致性問題
如果您的資料庫都在執行個體中部署,橫向擴充時可能會遇到資料不一致的問題。為瞭解決這一問題,建議調整架構設計,例如將資料庫獨立部署,讓所有執行個體共用同一個資料庫,從而實現服務的無狀態化。
資料安全
考慮到伸縮組中的執行個體會自動建立和釋放,如果在這些執行個體中儲存了資料,請確保實施適當的資料備份措施以保障資料安全。