本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EC2 Auto Scaling lifecycle hook
Amazon EC2 Auto Scaling 提供將 lifecycle hook 新增到 Auto Scaling 群組的能力。這些掛鉤可讓您建立了解 Auto Scaling 執行個體生命週期中之事件的解決方案,然後在對應的生命週期事件發生時對執行個體執行自訂動作。lifecycle hook 提供指定的時間 (預設為一小時),以便在執行個體轉換到下一個狀態之前等待動作完成。
作為结合使用 lifecycle hook 與 Auto Scaling 執行個體的範例:
-
水平擴展事件發生時,新啟動的執行個體會完成啟動序列,並轉換到等待狀態。當執行個體處於等待狀態時,其會執行指令碼以下載和安裝應用程式所需的軟體套件,確保執行個體在開始接收流量之前已經完全準備妥當。當指令碼安成軟體的安裝後,其會傳送 complete-lifecycle-action 命令以繼續。
-
發生擴充事件時,生命週期掛鉤會在執行個體終止前暫停,並使用 Amazon 傳送通知給您。 EventBridge執行個體處於等待狀態時,您可以叫用 AWS Lambda 函數或連線至執行個體,以便在執行個體完全終止之前下載記錄檔或其他資料。
lifecycle hook 的常見用途是控制何時使用 Elastic Load Balancing 註冊執行個體。透過將啟動 lifecycle hook 新增至 Auto Scaling 群組,您可以確保引導指令碼已成功完成,且執行個體上的應用程式已準備好接受流量,然後在 lifecycle hook 結束時向負載平衡器註冊執行個體。
目錄
lifecycle hook 可用性
下表列出可用於各種案例的 lifecycle hook。
事件 | 執行個體啟動或終止¹ | 執行個體生命週期上限:取代執行個體 | 執行個體重新整理:取代執行個體 | 容量重新平衡:取代執行個體 | 暖集區:進入和離開暖集區的執行個體 |
---|---|---|---|---|---|
執行個體啟動 | ✓ | ✓ | ✓ | ✓ | ✓ |
執行個體終止 | ✓ | ✓ | ✓ | ✓ | ✓ |
¹ 適用於所有啟動和終止,無論是自動還是手動啟動,例如當您呼叫 SetDesiredCapacity
或 TerminateInstanceInAutoScalingGroup
操作時。在您連接或分開執行個體、將執行個體移入和移出待命模式或使用強制刪除選項刪除群組時不適用。
lifecycle hook 的考量與限制
配合使用生命週期關聯時,請記住下列考量事項和限制:
-
Amazon EC2 Auto Scaling 提供自己的生命週期,協助管理 Auto Scaling 群組。此生命週期與其他 EC2 執行個體的生命週期不同。如需詳細資訊,請參閱 Amazon EC2 Auto Scaling 執行個體。暖集區中的執行個體也有自己的生命週期,如 暖集區中的執行個體生命週期狀態轉換 中所述。
-
您可以使用含有 Spot 執行個體的 lifecycle hook,不過,如果執行個體的容量已無法再使用,lifecycle hook 無法防止執行個體終止,這種情況隨時都可能發生,並會發出兩分鐘的中斷通知。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的競價型執行個體中斷。但是,您可以啟用容量重新平衡功能,藉此主動取代從 Amazon EC2 Spot 服務收到重新平衡建議的 Spot 執行個體;這是在 Spot 執行個體處於較高中斷風險時傳送的訊號。如需詳細資訊,請參閱 使用容量重新平衡來處理 Amazon EC2 Spot 中斷。
-
執行個體可以在有限的期間內維持於等待狀態。lifecycle hook 的預設逾時為 1 小時 (活動訊號逾時)。此外,還有一個全域逾時,指定您可將執行個體保留在等待狀態的最長時間。全域逾時為 48 小時或活動訊號逾時的 100 倍,以較小值為準。
-
系統可能捨棄或繼續 lifecycle hook 的結果。如果某個執行個體正在啟動,繼續則表示您的動作已成功,而且 Amazon EC2 Auto Scaling 可將執行個體投入服務。否則,捨棄則表示您的自訂動作沒有成功執行,且我們可能會終止並取代該執行個體。如果某個執行個體正在終止,捨棄和繼續都會允許該執行個體終止。不過,放棄會停止任何剩餘的動作,如其他 lifecycle hook,而繼續允許讓任何其他 lifecycle hook 來完成。
-
Amazon EC2 Auto Scaling 會限制 lifecycle hook 持續失敗時允許執行個體啟動的速率,因此請務必測試並修復生命週期動作中的任何永久性錯誤。
-
使用 AWS CLI AWS CloudFormation、或 SDK 建立和更新生命週期掛接會提供從 AWS Management Console. 例如,用於指定 SNS 主題或 SQS 佇列 ARN 的欄位不會顯示在主控台中,因為 Amazon EC2 Auto Scaling 已將事件傳送到 Amazon。 EventBridge您可以根據需要篩選這些事件,並重新導向至 Lambda、Amazon SNS 和 Amazon SQS 等 AWS 服務。
-
您可以在建立 Auto Scaling 群組時,使用、或 SDK 呼叫 CreateAutoScalingGroupAPI,將多個生命週期勾點新增至 Auto Scaling 群組。 AWS CLI AWS CloudFormation但是,如果指定,每個掛鉤必須具有相同的通知目標和 IAM 角色。若要建立具有不同通知目標和不同角色的生命週期勾點,請在對 PutLifecycleHookAPI 的個別呼叫中一次建立一個生命週期掛鉤。
-
如果您為執行個體啟動新增 lifecycle hook,運作狀態檢查寬限期會在執行個體到達
InService
狀態時開始。如需詳細資訊,請參閱 設定 Auto Scaling 群組的運作狀態檢查寬限期。。
擴展考量
-
動態擴展政策可擴展和擴展,以回應跨多個執行個體彙總的 CloudWatch 指標資料 (例如 CPU 和網路 I/O)。橫向擴展時,Amazon EC2 Auto Scaling 不會立即將新執行個體計入 Auto Scaling 群組的彙總執行個體指標。它會等待執行個體到達
InService
狀態且執行個體暖機完成為止。如需詳細資訊,請參閱預設執行個體暖機主題中的 擴展效能考量。 -
在縮減時,彙總的執行個體指標可能不會立即反映終止執行個體的移除情況。Amazon EC2 Auto Scaling 終止工作流程開始後不久,正在終止的執行個體會停止計入群組的彙總執行個體指標。
-
在大多數情況下,當調用生命週期關聯時,簡易擴展政策引起的擴展活動會暫停,直至生命週期動作完成且冷卻時間已過。設定較長的冷卻時間間隔代表需要更多的時間才能恢復擴展。如需詳細資訊,請參閱冷卻時間主題中的 生命週期關聯可能會導致額外延遲。一般而言,如果您可以改用步進擴展或目標追蹤擴展政策,建議您不要使用簡易擴展政策。
相關資源
如需簡介影片,請參閱開AWS 啟 Amazon EC2 Auto Scaling 能,讓容量管理變得輕鬆
我們提供了一些 JSON 和 YAML 範本片段,您可以使用這些程式碼片段來瞭解如何在 AWS CloudFormation 堆疊範本中宣告生命週期勾點。若要取得更多資訊,請AWS::AutoScaling::LifecycleHook參閱《AWS CloudFormation 使用指南》中的參考資料。
您也可以造訪我們的GitHub儲存庫
如需生命週期關聯的使用範例,請參閱下列部落格文章。