在 Auto Scaling 群組中搭配暖池使用生命週期掛接 - Amazon EC2 Auto Scaling

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

在 Auto Scaling 群組中搭配暖池使用生命週期掛接

暖集區中的執行個體會維持其獨立生命週期,以便協助您為每個轉換建立適當的自訂動作。此生命週期旨在協助您在執行個體仍在初始化期間和投入使用之前,叫用目標服務 (例如 Lambda 函數) 中的動作。

注意

您用來加入及管理生命週期勾點以及完成生命週期動作的作API業不會變更。僅變更執行個體生命週期。

如需有關新增 lifecycle hook 的詳細資訊,請參閱 將生命週期掛鉤添加到您的 Auto Scaling 組。如需有關完成生命週期動作的詳細資訊,請參閱 在「Auto Scaling」群組中完成生命週期動作

對於進入暖集區的執行個體,由於以下原因之一,您可能需要 lifecycle hook:

  • 您想要從需要很長時間才AMI能完成初始化的EC2執行個體啟動執行個體。

  • 您想要執行使用者資料指令碼來啟動EC2執行個體。

對於離開暖集區的執行個體,由於以下原因之一,您可能需要 lifecycle hook:

  • 您可以使用一些額外的時間來準備要使用的EC2執行個體。例如,您可能有服務必須在執行個體重新啟動時啟動,然後您的應用程式才能正常運作。

  • 您要預先填入快取資料,使新伺服器不會以空白的快取進行啟動。

  • 您要使用組態管理服務,將新執行個體註冊為受管理執行個體。

暖集區中的執行個體生命週期狀態轉換

作為其生命週期的一部分,Auto Scaling 執行個體可以在多種狀態之間轉換。

以下圖表顯示使用暖集區時 Auto Scaling 狀態之間的轉換:

暖集區中執行個體的生命週期狀態轉換。

¹ 此狀態根據暖集區的集區狀態設定而異。如果集區狀態設定為 Running,則此狀態是 Warmed:Running。如果集區狀態設定為 Hibernated,則此狀態是 Warmed:Hibernated

在新增 lifecycle hook 時,請考慮以下事項:

  • 當為 autoscaling:EC2_INSTANCE_LAUNCHING 生命週期動作設定了 lifecycle hook 時,新啟動的執行個體會在達到 Warmed:Pending:Wait 狀態時先暫停以執行自訂動作,然後在執行個體重新啟動並達到 Pending:Wait 狀態時再次暫停。

  • 當為 EC2_INSTANCE_TERMINATING 生命週期動作設定了 lifecycle hook 時,終止的執行個體在達到 Terminating:Wait 狀態時會暫停以執行自訂動作。不過,如果您指定執行個體重複使用政策,以便在縮減時將執行個體傳回暖集區,而不是終止執行個體,則傳回暖集區的執行個體會暫停,以便在 EC2_INSTANCE_TERMINATING 生命週期動作的 Warmed:Pending:Wait 狀態下執行自訂動作。

  • 如果應用程式的需求耗盡了暖池,只要該群組尚未達到最大容量,Amazon EC2 Auto Scaling 就可以將執行個體直接啟動到 Auto Scaling 群組。如果執行個體直接啟動至群組,則這些執行個體只會在 Pending:Wait 狀態時暫停以執行自訂動作。

  • 若要控制執行個體在轉換到下一個狀態之前保持等待狀態的時間長度,請將自訂動作設定為使用 complete-lifecycle-action 命令。使用生命週期掛鉤時,執行個體會保持等待狀態,直到您通知 Amazon EC2 Auto Scaling 指定的生命週期動作已完成,或者直到逾時期間結束 (預設為 1 小時) 為止。

以下概述了橫向擴展事件的流程。

橫向擴展事件的流程圖。

當執行個體達到等待狀態時,Amazon EC2 Auto Scaling 會傳送通知。這些通知的範例可在本指南的 EventBridge 章節中找到。如需詳細資訊,請參閱暖集區範例事件和模式

受支援的通知目標

Amazon EC2 Auto Scaling 提供支援,可將下列任何項目定義為生命週期通知的通知目標:

  • EventBridge 規則

  • Amazon SNS 主題

  • Amazon SQS 隊列

重要

請記住,如果啟動範本或啟動組態中的使用者資料 (cloud-init) 指令碼會在執行個體啟動時對其進行設定,則您無需接收通知,即可在啟動或重新啟動的執行個體上執行自訂動作。

以下各節包含描述如何設定通知目標的文件連結:

EventBridge 規則:若要在 Amazon EC2 Auto Scaling 將執行個體置於等待狀態時執行程式碼,您可以建立 EventBridge 規則並指定 Lambda 函數做為其目標。若要根據不同的生命週期通知叫用不同的 Lambda 函數,您可以建立多個規則,並將每個規則與特定的事件模式和 Lambda 函數相關聯。如需詳細資訊,請參閱建立暖池事件的 EventBridge 規則

Amazon SNS 主題:若要在執行個體進入等待狀態時收到通知,請建立 Amazon 主SNS題,然後設定 Amazon SNS 訊息篩選,以根據訊息屬性以不同方式交付生命週期通知。如需詳細資訊,請參閱使用 Amazon SNS 接收通知

Amazon SQS 佇列:若要設定生命週期通知的交付點,讓相關消費者可以在其中接收並處理這些通知,您可以建立 Amazon SQS 佇列和處理佇列訊息的SQS佇列用戶。如果希望佇列取用者根據訊息屬性以不同方式處理生命週期通知,您也必須設定佇列取用者來解析訊息,然後在特定屬性符合所需值時對訊息採取行動。如需詳細資訊,請參閱使用 Amazon SQS 接收通知