AWS EC2 自動擴展

在現代雲端運算環境中,企業需要能夠快速應對不斷變化的業務需求,尤其是在流量波動較大的情況下。 Amazon Web Services(AWS)提供的EC2自動擴充(Auto Scaling)功能,為開發者和企業提供了有效的解決方案。透過自動調整運算資源的規模,AWS EC2自動擴展能夠根據實際負載自動增加或減少執行個體數量,從而優化成本並確保系統高效運作。無論是流量高峰或低谷,自動擴展都能夠確保應用的穩定性和可用性,極大提升業務連續性和靈活性。

  • 根據需求,Amazon EC2 Auto Scaling 會修改您的應用程式的EC2 執行個體數量。
  • 建立「Auto Scaling 群組」是為了控制EC2 實例群組。
  • 您可以設定:
    • 最小實例數:這是該組所擁有的最小數量。
    • 最大實例數:這是該群組所能擁有的最大實例數。
    • 所需容量:該組將嘗試保留此數量的實例。
  • 根據需求,擴充策略可能會自動新增或刪除實例。

範例:具有以下內容的Auto Scaling 群組:

  • 最小規模:6 個實例
  • 所需容量:8 個實例
  • 最大大小:14 個實例
  • 根據設定的標準,透過擴展策略來修改此範圍內的實例。

 

  • 為了實現更簡單的可擴展性和管理,Amazon EC2 自動可擴展性將EC2 執行個體分組為Auto Scaling 群組。
  • Auto Scaling 群組使用啟動範本或啟動配置來建置實例。

 

  • 健康監控:使用EC2 健康檢查自動驗證和維護實例健康。為了保留所需的容量,將會取代發生故障或終止的執行個體。
  • 自訂健康檢查:針對某些應用要求,您可以設計自己的健康檢查。當這些檢查不滿足時,實例將被替換。
  • 均衡容量:為了提高可用性和適應性,實例均勻分佈在多個可用區之間。
  • 多種實例類型:支援在單一群組中使用各種實例類型和購買選擇(預留、按需和現貨),以降低開支。
  • 自動競價型實例替換:自動替換中斷的競價型實例。如果發生中斷,可透過容量重新平衡來取代競價型實例。
  • 負載平衡:透過與彈性負載平衡集成,使流量能夠在健康實例之間均勻分配。隨著實例的成長,它們會自動註冊和登出。
  • 可擴展性:您可以手動選擇群組大小,它會自動調整以處理不斷變化的負載。
  • 實例刷新:每當啟動範本或AMI 被修改時,執行個體都會透過捲動或金絲雀部署進行更新。
  • 生命週期掛鉤:當啟動或終止實例時,它允許自訂操作,這對於事件驅動的架構很有幫助。
  • 支援有狀態工作負載:使用生命週期掛鉤、擴展保護或獨特的終止策略來確保有狀態的應用程式持續運作。

 

  • 自動擴展重新平衡:如果EC2 實例在可用區(AZ) 之間分佈不均勻,則自動擴展(AS) 將自動重新平衡它們。
  • 重新平衡操作:從其他可用區中刪除多餘的實例,並在實例較少的可用區中啟動新實例。

 

  • 可以從Auto Scaling 中新增或刪除可用區。
  • EC2 執行個體從ASG 手動終止。
  • 實例的分佈受到可用區容量增加或減少的影響。

 

  • EC2 需要可運作。
  • EC2 仍必須使用相同的AMI 啟動。
  • 一個實例不能包含在另一個ASG 中。
  • 實例和ASG需要在同一個AZ內。
  • 如果新增執行個體超出了ASG 的最大容量,則請求失敗。
  • 手動分離:若要從ASG 移除EC2 實例,請使用CLI 或AWS 控制台。
  • 分離後:分離的實例可以轉移到另一個ASG 或單獨管理。
  • 所需容量調整:在分離實例時,您可以選擇減少ASG 的所需容量。
    • 如果沒有減少,ASG 將啟動一個新實例。
  • 刪除ASG:當刪除ASG 時,所有EC2 實例都會終止,且其功能將重設為零。
    • 在銷毀ASG 之前分離EC2 實例以保存它們。

 

  • 將ELB 附加到ASG:只要在同一個區域和VPC,就可以將ELB 加入ASG。
  • ELB 將自動註冊ASG 中的所有EC2 實例,無論是新的還是現有的。

 

  • 健康檢查分類:根據EC2 和ELB 狀態檢查,EC2 實例被歸類為健康或不健康。
  • 健康檢查設置:Auto Scaling 預設採用EC2 狀態檢查。
    • 可設定為使用ELB 和EC2 健康檢查。
  • 寬限期:進行健康檢查之前的寬限時間預設為300 秒。
    • 一旦實例投入使用,就會透過將寬限期設為零來檢查其健康狀況。
    • 在寬限期內,任何不健康狀態都會被忽略。
  • 不健康實例處理:ASG 會在寬限期後部署替換並結束不健康的實例。
  • 彈性IP 和EBS:附加到新實例並手動與終止的實例分離。

 

  • SNS 通知:ASG 在以下情況下發送電子郵件通知:
    • 實例已啟動。
    • 實例已終止。
    • 實例啟動失敗。
    • 實例終止失敗。

 

  • 只能使用AWS CLI(而非AWS 控制台)進行合併。
  • 可以透過組合多個單可用區ASG 來建立一個多可用區ASG。
  • 擴充:啟動額外的EC2 實例。
  • 縮減:終止EC2 實例(建議為每個擴展事件產生一個縮減事件)。
  • EC2 指標被傳送到CloudWatch以監控ASG 實例。
    • 基本監控:每300 秒(免費)。
    • 詳細監控:每60 秒(收費,使用AWS CLI 時預設為啟用)。

 

  • 在ASG 中,可以手動將EC2 執行個體置於待機模式。
  • Auto Scaling 仍用於管理待機實例,但是
    • 與正在使用的實例一樣,它們也需要計費。
    • 可供工作負載存取的EC2 執行個體不會受到它們的影響。
    • 備用實例不受健康檢查。

 

  • 手動擴展:可以手動更改EC2 實例的數量。
  • 動態擴展:根據條件和即時警報。
    • 目標追蹤:根據指標的預期值(例如修改家用恆溫器)縮放組。
    • 簡單縮放:響應警報(有300 秒的冷卻期)一次性更改群組的大小。
    • 步進縮放:根據設定的步進縮放,根據警報違規的大小進行縮放調整。它支援預熱計時器,但不支援冷卻時間。

 

  • 預測擴展:預測每日和每週的負載模式,並使用機器學習規劃實例調整。
  • 計劃擴展:您可以安排特定時間和容量的擴展操作,以應對預測的負載波動。計劃操作的日期和時間必須是唯一的。
  • 週期擴展:它使用歷史數據預測未來的擴展需求,類似於計劃擴展。

 

  • 警報和策略由擴展策略用來決定何時擴展。
  • 擴展變化不能超出ASG 的最小或最大容量。
  • 為了確保最佳的應用程式效能,需要仔細規劃擴展和縮小的過程。

 

  • 根據流量等級自動擴充Web 伺服器EC2 實例,以確保應用程式無需人工協助即可管理峰值。
  • 為了在特定時間內處理大量資料集,請根據資料處理要求擴展實例。
  • 在需求旺盛的時期,例如網路星期一或黑色星期五,擴展實例以確保應用程式可以處理更多用戶。
  • 根據玩家活動自動擴展多人遊戲後端伺服器,以確保即使在繁忙時段也能順暢進行遊戲。

 

  • ELB 和Auto Scaling 可以一起使用,在實例之間均勻劃分流量。
  • 為了快速識別和取代不健康的實例,請設定適當的健康檢查參數。
  • 當您看到流量模式時,請從少量的最小實例開始,然後逐漸擴大它們。
  • 透過頻繁測試確保您的擴展策略在各種流量場景下都能如預期運作。
  • 利用預測性擴展來根據具有可預測流量模式的工作負載的歷史資料來預見擴展操作。

 

总结

AWS EC2自動擴展是雲端運算架構中不可或缺的一部分,尤其適用於動態負載環境。透過與其他AWS服務的緊密整合,自動擴展不僅能提高資源利用率,降低維運成本,還能提升使用者體驗。隨著企業對高可用性和靈活性的需求不斷增加,AWS EC2自動擴展無疑是實現這些目標的強大工具。

更多探索

Tell me what you need