伸縮組是彈性伸縮的核心組件,用于管理一組擁有相同應用場景和實例類型的服務實例。通過伸縮組,您可以快速地橫向擴展集群中的實例。此外,伸縮組還可以根據您的業務需求動態調整實例的數量,幫助您有效降低成本。
為什么使用伸縮組
快速橫向擴展(高可用)
您可以通過使用伸縮組快速橫向擴展您的服務集群,通過增加服務的數量提升您的集群承載能力。
控制成本
服務集群橫向擴展意味著需要維持更多的計算資源,從而使成本增加,但是您的業務不是在任何時間都處于滿負載狀態,您可以根據實際的需求,利用云計算的彈性能力,在計算資源需求下降時減少資源的投入,從而控制成本。
支持的伸縮方案
方案一:保持固定數量且可用的實例
適用場景:在不伸縮時,維持集群的高可用。
實現方式:為伸縮組開啟實例健康檢查和期望實例數。
在開啟伸縮組實例健康檢查后,伸縮組會自動移除伸縮組中不健康的實例。如果目前實例數小于期望實例數,會自動觸發擴容,保證伸縮組中始終有固定數量且可用的實例。
舉例說明
例如您期望集群可用業務服務數量為10,您可以為伸縮組設置期望實例數為10,伸縮組會自動觸發伸縮活動來維持可用服務數量為10。
方案二:定時自動伸縮
適用場景:業務規律波動,即業務集群資源占用隨時間規律波動。
實現方式:通過為伸縮組設置定時任務實現定時擴縮容。
在業務集群資源占用升高的時間點,通過定時任務觸發擴張。相反的,在資源占用降低的時間點,通過定時任務觸發收縮。完整步驟,請參見定時自動擴縮容ECS實例。
舉例說明
例如您的業務集群在每天傍晚7點時訪問量增加,在凌晨1點時降低,為了應對業務訪問需求的變化,您可以設置以下兩個定時任務。
應對訪問量增加:設置傍晚7點的定時擴展任務,在每天傍晚7點,通過增加服務副本數提升集群的承載能力。
應對訪問量減少:設置凌晨1點的定時收縮任務,在每天凌晨1點,通過減少服務副本數從而提高資源利用率,減少不必要的成本支出。
方案三:通過資源占用閾值伸縮(CPU占用率、內存占用率等)
適用場景:突發業務波動場景。資源占用達到某個閾值時觸發伸縮。
實現方式
集群資源占用率達到閾值時觸發擴縮容(報警任務)
您可以為伸縮組設置報警任務,在資源占用達到閾值后觸發報警,然后進行擴縮容活動。
您可以為伸縮組設置報警任務,同時指定對應報警所執行的簡單規則,來實現觸發報警后進行擴縮容。
效果說明
如果配置觸發簡單規則,可以直接設置增加、減少N臺實例或直接修改伸縮組內的實例數為N臺。
在集群平均CPU占用率大于80%時,增加N臺實例。
在集群平均CPU占用率小于70%時,減少N臺實例。
完整步驟,請參見根據業務負載自動擴縮容ECS實例。
您可以為伸縮組創建步進規則,并設置觸發該規則的報警任務,來實現觸發報警后按照配置好的資源占用按照梯度進行擴縮容。
重要ECI類型的伸縮組不支持配置步進規則。
效果說明
在觸發報警任務后,按照集群平均CPU占用率的階梯分級擴縮容。
當集群平均CPU占用率大于60%小于70%時減少1臺實例。
當集群平均CPU占用率大于30%小于60%時減少3臺實例。
當集群平均CPU占用率小于30%時減少5臺實例。
期望集群資源占用率維持在目標值(目標追蹤規則)
您可以為伸縮組設置目標追蹤規則,實現將伸縮組的資源占用維持在目標值附近。
舉例說明
為ECS伸縮組創建一個目標追蹤規則,設置平均CPU占用率的目標值為80%,伸縮組會自動通過添加或刪除實例來將伸縮組平均CPU占用率維持在80%附近。
兩種實現方式的區別
報警任務方案更加靈活和自定義。可以控制在觸發報警后增加/減少多少臺實例,也可以根據資源占用的階梯變化靈活設置擴縮容的數量。
目標追蹤規則配置更加簡單,只需關注需要將資源占用率維持在哪個數值。
方案四:自定義伸縮(手動伸縮)
如果前幾種方案都不滿足您的需求,您可以通過該方案實現自定義的伸縮方案。
伸縮組支持通過手動執行伸縮規則、手動修改實例數的方式觸發擴縮容活動。完整操作,請參見手動一鍵擴縮容ECS實例。
手動伸縮的方式支持API調用,您可以結合實際業務,通過編寫程序調用API自定義伸縮方案。
方案五:預測性伸縮
除了前幾種方案以外,伸縮組還提供預測未來資源需求自動伸縮的功能。
該方案通過配置預測規則的方式實現,您可以先使用只預測不伸縮的方式判斷預測的準確性和適用性,如果預測結果滿足您的需求,您可以為該預測規則開啟預測并伸縮,開啟此選項后,預測規則會根據預測產生的定時計劃自動創建預測任務,完成自動擴縮容。具體操作,請參見查看預測規則效果。
注意事項
在使用伸縮組之前,請先確保您實例內部署的業務支持橫向擴展。
彈性伸縮是以橫向擴展的方式擴展實例,因此,您需要考慮在您的實例橫向擴展時是否會對您的集群業務造成影響。
數據一致性問題
如果您的數據庫都在實例中部署,橫向擴展時可能會遇到數據不一致的問題。為了解決這一問題,建議調整架構設計,例如將數據庫獨立部署,讓所有實例共享同一個數據庫,從而實現服務的無狀態化。
數據安全
考慮到伸縮組中的實例會自動創建和釋放,如果在這些實例中存儲了數據,請確保實施適當的數據備份措施以保障數據安全。
如何使用伸縮組
開始使用
進階需求
業務部署:新擴容出的實例自動部署業務服務的軟件包
通過使用帶有軟件包的鏡像實現自動部署
ECS伸縮組。
構建一個包含您業務服務軟件包的自定義鏡像,同時將實例配置來源中的鏡像修改為該鏡像。
ECI伸縮組。
為您的業務服務構建Docker鏡像,同時將實例配置來源中的鏡像修改為該鏡像。
在實例啟動時自動執行部署腳本
實例自定義數據方案
在使用ECS伸縮組時,您可以為實例設置自定義數據,在自定義數據中,執行部署服務軟件包的腳本。具體方案介紹,請參見使用實例自定義數據自動配置ECS實例。
生命周期掛鉤方案
在使用ECS伸縮組時,您可以為伸縮組設置生命周期掛鉤,在觸發擴容后,實例加入伸縮組之前,先在實例中執行部署服務軟件包的腳本。具體方案介紹,請參見在ECS實例中自動執行腳本。
滾動升級:通過滾動升級的方式更新實例鏡像或執行腳本
您可以通過滾動升級的方式更新伸縮組中實例的鏡像,也可以批量在伸縮組實例中執行腳本,具體操作,請參見滾動升級。
關聯云數據庫:新擴容出的實例可以訪問數據庫
關聯負載均衡器:為伸縮組中的服務實例集群設置統一訪問入口
在擴縮容時執行自定義操作(掛載NAS、綁定EIP等)
您可以通過生命周期掛鉤,實現在實例加入伸縮組或移出伸縮組之前,完成自定義的操作,如掛載NAS,綁定EIP、執行自定義腳本等。
相關文檔
設計縮容策略
在您的業務負載對資源需求降低時,伸縮組會根據您的策略觸發縮容活動,自動減少伸縮組中的資源數量,從而避免資源浪費。在縮容時,您可能會遇到如何控制縮容頻率、如何優雅縮容、如何自主選擇被縮容的實例等問題,您可以參考以下文檔。
相關文檔
進一步優化資源成本
容災&擴容成功率
在使用伸縮組時,您可能會遇到因可用區實例庫存不足導致的擴容失敗,您可以通過多可用區和多實例規格配置減少庫存不足的造成的擴容失敗。同時,您也可以通過均衡分布策略實現多可用區容災。
相關文檔
使用均衡分布策略實現多可用區容災:使用均衡分布策略部署高可用計算集群
使用多實例規格配置減少庫存不足造成的擴容失敗:基于啟動模板實現多規格配置以提升擴容成功率