安全地停止在 EC2 執行個體上執行的 Amazon ECS 工作負載 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

安全地停止在 EC2 執行個體上執行的 Amazon ECS 工作負載

受管執行個體耗盡有助於正常終止 Amazon EC2 執行個體。這可讓您的工作負載安全地停止,並重新安排至未終止的執行個體。基礎設施維護和更新會執行,而不必擔心工作負載中斷。透過使用受管執行個體耗盡,您可以簡化需要替換 Amazon EC2 執行個體的基礎設施管理工作流程,同時確保應用程式的彈性和可用性。

Amazon ECS 受管執行個體耗盡適用於 Auto Scaling 群組執行個體替換。根據執行個體重新整理和執行個體生命週期上限,客戶可以確保其容量符合最新的作業系統和安全性要求。

受管執行個體耗盡只能與 Amazon ECS 容量提供者搭配使用。您可以使用 Amazon ECS 主控台或 SDK,在建立或更新 Auto Scaling 群組容量提供者時 AWS CLI開啟受管執行個體耗盡。

Amazon ECS 受管執行個體耗盡會涵蓋下列事件。

  • Auto Scaling 群組執行個體重新整理 - 使用執行個體重新整理來執行 Auto Scaling 群組中 Amazon EC2 執行個體的滾動取代,而不是分批手動執行。當您需要取代大量執行個體時,這很有用。執行個體重新整理是透過 Amazon EC2 主控台或 StartInstanceRefresh API 啟動。StartInstanceRefresh 如果您使用的是受管終止保護,請務必在呼叫時Replace為縮減保護選取 。

  • 執行個體生命週期上限 - 您可以在取代 Auto Scaling 群組執行個體時定義生命週期上限。這有助於根據內部安全政策或合規來排程替換執行個體。

  • Auto Scaling 群組縮減 ‐ 根據擴展政策和排程擴展動作,Auto Scaling 群組支援執行個體的自動擴展。透過使用 Auto Scaling 群組做為 Amazon ECS 容量提供者,您可以在其中沒有任務執行時縮減 Auto Scaling 群組執行個體。

  • Auto Scaling 群組運作狀態檢查 - Auto Scaling 群組支援許多運作狀態檢查,以管理終止運作狀態不佳的執行個體。

  • AWS CloudFormation 堆疊更新 - 您可以在 AWS CloudFormation 堆疊中新增UpdatePolicy屬性,以在群組變更時執行滾動更新。

  • Spot 容量重新平衡 - Auto Scaling 群組會嘗試主動取代根據 Amazon EC2 容量重新平衡通知具有較高中斷風險的 Spot 執行個體。Auto Scaling 群組會在啟動取代且運作狀態良好時終止舊執行個體。Amazon ECS 受管執行個體耗盡耗盡耗盡 Spot 執行個體的方式與耗盡非 Spot 執行個體的方式相同。

  • Spot 中斷 - Spot 執行個體會在兩分鐘前通知後終止。Amazon ECS 受管執行個體耗盡會讓執行個體處於耗盡狀態以回應。

具有受管執行個體耗盡的 Amazon EC2 Auto Scaling 生命週期掛鉤

Auto Scaling 群組生命週期掛鉤可讓客戶建立由執行個體生命週期中特定事件觸發的解決方案,並在發生特定事件時執行自訂動作。Auto Scaling 群組最多允許 50 個勾點。可以存在多個終止關聯並平行執行,Auto Scaling 群組會等待所有關聯完成,然後再終止執行個體。

除了 Amazon ECS 受管勾點終止之外,您也可以設定自己的生命週期終止勾點。生命週期掛鉤具有 default action,我們建議您continue將 設定為預設值,以確保其他掛鉤,例如 Amazon ECS 受管掛鉤,不會受到自訂掛鉤的任何錯誤影響。

如果您已設定 Auto Scaling 群組終止生命週期掛鉤,並啟用 Amazon ECS 受管執行個體耗盡,則會執行兩個生命週期掛鉤。不過,無法保證相對時間。生命週期掛鉤具有default action設定,可指定逾時過後要採取的動作。如果失敗,我們建議您使用 continue做為自訂掛鉤的預設結果。這可確保其他勾點,特別是 Amazon ECS 受管勾點,不會受到自訂生命週期勾點中任何錯誤的影響。的替代結果abandon會導致略過所有其他勾點,因此應避免。如需 Auto Scaling 群組生命週期關聯的詳細資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的 Amazon EC2 Auto Scaling 生命週期關聯Amazon EC2 Auto Scaling

任務和受管執行個體耗盡

Amazon ECS 受管執行個體耗盡會使用容器執行個體中現有的耗盡功能。容器執行個體耗盡功能會針對屬於 Amazon ECS 服務的複本任務執行替換和停止。處於 PENDINGRUNNING 狀態的獨立任務,就像 叫用的任務RunTask一樣,不會受到影響。您必須等待這些項目完成或手動停止。容器執行個體會保持 DRAINING 狀態,直到所有任務停止或超過 48 小時為止。協助程式任務是所有複本任務停止後最後停止的任務。

受管執行個體耗盡和受管終止保護

即使停用受管終止,受管執行個體耗盡仍然有效。如需受管終止保護的相關資訊,請參閱 控制執行個體 Amazon ECS 終止

下表摘要說明受管終止和受管耗盡的不同組合的行為。

受管終止 受管耗盡 Outcome

已啟用

已啟用 Amazon ECS 可保護正在執行任務的 Amazon EC2 執行個體,避免縮減事件終止。任何正在進行終止的執行個體,例如未設定終止保護、收到 Spot 中斷,或被執行個體重新整理所強制的執行個體,都會正常耗盡。

已停用

已啟用 Amazon ECS 不會保護執行任務的 Amazon EC2 執行個體,使其不會縮減規模。不過,正在終止的任何執行個體都會正常耗盡。

已啟用

已停用 Amazon ECS 可保護正在執行任務的 Amazon EC2 執行個體,避免縮減事件終止。不過,如果執行個體未執行任何任務,Spot 中斷或強制執行個體重新整理仍會終止執行個體。Amazon ECS 不會對這些執行個體執行正常耗盡,並在停止後啟動替代服務任務。

已停用

已停用 即使 Amazon EC2 執行個體正在執行 Amazon ECS 任務,也可以隨時縮減或終止。Amazon ECS 會在停止後啟動替代服務任務。
受管執行個體耗盡和 Spot 執行個體耗盡

使用 Spot 執行個體耗盡時,您可以在 Amazon ECS 代理程式ECS_ENABLE_SPOT_INSTANCE_DRAINING上設定環境變數,讓 Amazon ECS 將執行個體置於耗盡狀態,以回應兩分鐘的 Spot 中斷。Amazon ECS 受管執行個體耗盡有助於正常關閉因為許多原因而終止的 Amazon EC2 執行個體,而不只是 Spot 中斷。例如,您可以使用 Amazon EC2 Auto Scaling 容量重新平衡,在高中斷風險的情況下主動取代 Spot 執行個體,且受管執行個體耗盡會正常關閉要取代的 Spot 執行個體。當您使用受管執行個體耗盡時,您不需要分別啟用 Spot 執行個體耗盡,因此 ECS_ENABLE_SPOT_INSTANCE_DRAINING Auto Scaling 群組中的使用者資料是多餘的。如需 Spot 執行個體耗盡的詳細資訊,請參閱 Spot 執行個體

受管執行個體耗盡如何與 EventBridge 搭配使用

Amazon ECS 受管執行個體耗盡事件會發佈至 Amazon EventBridge,Amazon ECS 會在您帳戶的預設匯流排中建立 EventBridge 受管規則,以支援受管執行個體耗盡。您可以將這些事件篩選到 Lambda、Amazon SNS 和 Amazon SQS 等 AWS 其他服務,以監控和疑難排解。

  • 叫用生命週期掛鉤時,Amazon EC2 Auto Scaling 會將事件傳送至 EventBridge。

  • Spot 中斷通知會發佈至 EventBridge。

  • Amazon ECS 會產生錯誤訊息,您可以透過 Amazon ECS 主控台和 APIs 擷取。

  • EventBridge 內建重試機制,做為暫時故障的緩解措施。

Amazon ECS 受管執行個體耗盡疑難排解

您可能需要對受管執行個體耗盡的問題進行故障診斷。以下是您在使用時可能遇到的問題和解決方案範例。

使用自動擴展時,執行個體不會在使用超過執行個體生命週期上限後終止。

如果您的執行個體在使用自動擴展群組時,即使達到並超過執行個體存留期上限,也不會終止,這可能是因為它們受到保護,不會縮減。您可以關閉受管終止,並允許受管耗盡處理執行個體回收。