SAE彈性伸縮可以實現在秒級流量波峰到來時應用實例自動擴容,波峰結束后自動縮容,保障應用平穩運行,具有高可靠性、免運維、低成本的特點。以應對電商大促為例,您可以通過部署應用、配置彈性規則、實時監控并調整策略,以及執行后續的運維優化的全流程,確保平臺高效穩定響應用戶的需求。
彈性伸縮流程圖
SAE彈性伸縮場景的實踐全流程如下圖所示。
準備工作
配置應用健康檢查:確保應用在彈性伸縮過程中的整體可用性,僅在啟動、運行并且準備完成時才接收流量。具體操作,請參見設置健康檢查。
配置應用生命周期管理:確保縮容時按照預期實現應用優雅下線,配置停止前處理(PreStop設置)。具體操作,請參見設置應用生命周期管理。
采用指數重試機制:為避免因彈性不及時、應用啟動不及時或應用沒有優雅上下線導致服務調用異常,采用Java指數重試機制進行服務調用。
優化應用啟動速度。
軟件包優化:優化應用啟動時間,降低因類加載、緩存等外部因素對應用啟動時長造成的影響。
鏡像優化:精簡鏡像大小,減少創建實例時鏡像拉取耗時,可以借助開源工具分析并精簡鏡像層信息。
Java應用啟動優化:在SAE上創建應用時,選擇Dragonwell 11環境能夠開啟應用加速功能。具體操作,請參見設置Java應用的啟動加速。
配置彈性規則
配置彈性伸縮指標
SAE支持基礎監控、應用監控多指標組合配置,您可以根據當前應用的屬性(CPU敏感、內存敏感或IO敏感)靈活配置。
您可以查看基礎監控和應用監控對應指標的歷史數據( 例如過去6小時、12小時、1天或7天峰值,P95或P99數值)并預估指標目標值,借助PTS等壓測工具進行壓測,了解應用可以應對的并發請求數量、需要的CPU和內存數量,以及高負載狀態下的應用響應方式,以評估應用容量峰值大小。
在配置彈性伸縮策略時,您需要考慮以下因素:
權衡可用性與成本,配置指標目標值。示例如下:
可用性優化策略:配置指標值為40%。
可用性成本平衡策略:配置指標值為50%。
成本優化策略:配置指標值為70%。
考慮梳理上下游、中間件和DB等相關依賴性,并配置對應的彈性規則或限流降級手段,以確保擴容時全鏈路的可用性。
彈性規則配置完成后,您可以通過監控并調整彈性規則使容量接近應用實際負載。關于查看監控的具體步驟,請參見基礎監控。
配置內存指標
Java應用運行時優化是通過釋放物理內存,增強內存指標與業務關聯性。借助Dragonwell運行時的環境,通過增加JVM參數開啟ElasticHeap能力,支持Java堆內存的動態彈性伸縮,從而節約了Java應用在運行時實際使用的物理內存。關于ElasticHeap的更多信息,請參見G1ElasticHeap。
推薦配置為Dragonwell+ElasticHeap Periodic uncommit模式 (自動模式)。具體操作,請參見操作步驟和設置啟動命令。
Java環境:在配置JAR包區域,從Java環境下拉列表中,選擇Dragonwell類型的配置項。
JVM參數:在啟動命令設置區域,輸入-XX:+ElasticHeapPeriodicUncommit。
不適用配置內存指標的應用類型:采用動態內存管理進行內存分配(例如Java JVM內存管理、Glibc Malloc和Free操作)的部分應用,沒有及時向操作系統釋放其閑置內存,導致無法實時減少實例消耗的物理內存和新增實例消耗的平均內存,進而導致無法觸發縮容。
配置實例數
最小實例數配置
確認最小實例數≥2,配置多可用區vSwitch。避免因底層節點異常導致實例驅逐或可用區無可用實例,應用停止工作。
最大實例數配置
確認最大實例數≤可用區IP數。避免因配置的IP數超出限制,應用無法新增實例。
您可以在基本信息頁面的應用信息區域查看當前應用的可用IP數。如果可用IP較少,請替換或新增vSwitch。具體操作,請參見驗證彈性伸縮策略。
觀測彈性伸縮過程
彈性達到最大值
您可以在應用概覽頁頁面查看當前開啟彈性伸縮配置的應用,并監控當前實例數已經到達峰值的應用,對其彈性伸縮配置重新進行評估。
如果單個應用需要彈出超過50個實例,請加入釘群(釘群號:32874633)申請白名單。
可用區再均衡
彈性伸縮觸發縮容后,可能會導致可用區分配不均。您可以在應用基本信息頁面的實例列表,查看實例所屬可用區。如果可用區不均衡,您可以通過重啟實例實現再均衡。
配置自動恢復彈性
進行部署應用等變更單操作時,SAE會停止當前應用的彈性伸縮配置,避免兩種操作沖突。如果您希望變更單完成后能夠恢復彈性配置,可以在部署應用頁面選擇系統自動恢復。
運維彈性伸縮
查看應用事件
您可以在目標應用的應用事件頁面,觀測SAE彈性生效行為,包括查看彈性伸縮時間和動作,以此來衡量彈性伸縮策略的有效性并按需調整。更多信息,請參見查看應用事件。
查看應用實例監控圖
您可以在目標應用的基本信息頁面的基本信息頁簽,觀測應用實例趨勢圖,包括7天內的CPU使用率、內存使用率和TCP活躍連接數、服務請求量和平均響應時間等監控指標。更多信息,請參見查看應用實例監控(邀測)。