Amazon-Web-Services

AWS 自動擴展,“縮減”控制

  • April 8, 2021

我正在嘗試將執行許多作業的單一大型伺服器轉移到使用自動縮放來建構更多伺服器的設計,因為執行更多作業。我在測試中發現的問題是,當預設的任務規模發生時,它終止了執行任務的伺服器。

伺服器是否可以告訴 AWS 它正在工作並且需要保持正常執行?或者能夠在“可以終止”和“工作”之間切換,就好像它得到了一份新工作一樣?

工作可能需要幾分鐘或幾小時,因此一個扁平的冷卻計時器無法提供正確的保護。

EC2 AutoScaling 有一種稱為“保護擴展”的功能,在這種情況下,不會選擇實例來終止擴展事件(通常是由所需容量下降引起的,但也可能適用於實例刷新之類的事情)。

如果您有大量實例,請注意 API 限制,以避免限制這些是一些最佳實踐

  • 在 ASG 上啟用擴展保護。這樣,所有新實例都將在啟動時啟用它,並且在啟動時您不會收到大量 API 呼叫
  • 不要在工作結束時取消保護,然後在開始新工作時立即重新啟用它。檢查是否有新工作要先開始,然後保持啟用狀態。您可能希望通過本地環境變數跟踪啟用/禁用狀態
  • 根據您的作業模式,最好在最後一個作業結束後幾分鐘再重新啟用保護,這樣您就不會在新作業進入時終止實例

或者,您可以僅將擴展策略用於擴展,然後讓實例自己控制擴展。使用與上述相同的邏輯,但是當實例準備好因無工作而終止時,讓它呼叫終止實例-in-auto-scaling-group 命令本身。如果您不希望 ASG 降至 0 個實例,此方法可能並不理想。

引用自:https://serverfault.com/questions/1052296