本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Auto Scaling 群組中的執行個體重新整理運作方式
本主題說明執行個體重新整理的運作方式,並介紹有效使用它所需的關鍵概念。
運作方式
若要重新整理 Auto Scaling 群組中的執行個體,您可以定義新的組態,其中包含應用程式的最新版本,以及您想要進行的任何其他更新。然後,啟動執行個體重新整理,根據該組態將現有執行個體取代為新的執行個體。
若要執行執行個體重新整理:
-
建立新的啟動範本,或使用所需的組態變更更新現有範本,例如新的 Amazon Machine Image (AMI)。如需詳細資訊,請參閱為 Auto Scaling 群組建立啟動範本。
-
使用 Amazon EC2 Auto Scaling 主控台 AWS CLI或 SDK 啟動執行個體重新整理:
-
指定您建立的新啟動範本或啟動範本版本。這將用於啟動新的執行個體。
-
設定偏好的最小和最大運作狀態百分比。這可控制同時取代的執行個體數量,以及在終止舊執行個體之前是否啟動新執行個體。
-
設定任何選用設定,例如:
-
檢查點 – 在特定百分比的取代之後暫停執行個體重新整理,以驗證進度。
-
烘烤時間 – 在執行個體重新整理結束時暫停,以在執行個體重新整理視為完成之前驗證執行個體運作狀態。
-
略過比對 – 比較舊執行個體與新組態,並僅取代不相符的執行個體。當您從主控台啟動執行個體重新整理時,略過比對預設為開啟。
-
多個執行個體類型 – 將新的或更新的混合執行個體政策套用為所需組態的一部分。
-
-
執行個體重新整理開始時,Amazon EC2 Auto Scaling 將:
-
根據最小和最大運作狀態百分比,以批次取代執行個體。
-
如果最小運作狀態百分比設定為 100%,請先啟動新的執行個體,然後再終止舊執行個體。這可確保隨時維持所需的容量。
-
檢查執行個體的運作狀態,並在取代更多執行個體之前給他們暖機的時間。
-
終止並取代發現運作狀態不佳的執行個體。
-
在執行個體重新整理成功後,使用新的組態變更自動更新 Auto Scaling 群組設定。
-
在處於暖集區的
InService
執行個體之前取代執行個體。
下列流程圖說明當您將運作狀態最低百分比設定為 100% 時,在終止行為之前啟動 。
注意
只有在您未設定執行個體維護政策,或需要覆寫現有政策時,才需要指定執行個體重新整理的運作狀態最低和最高百分比。如需詳細資訊,請參閱執行個體維護政策。
同樣地,如果您尚未啟用預設暖機,或需要覆寫預設,則只需要指定執行個體重新整理的執行個體暖機期。如需詳細資訊,請參閱設定 Auto Scaling 群組的預設執行個體暖機期。
核心概念
在開始使用之前,請熟悉以下執行個體重新整理核心概念:
- 狀態良好最低百分比
-
最小運作狀態良好百分比是執行個體重新整理期間所需容量維持使用狀態、運作狀態良好且隨時可供使用的百分比,以便繼續重新整理。例如,如果狀態良好最低百分比為 90%,而狀態良好最高百分比為 100%,則一次會取代 10% 的容量。如果新執行個體未通過運作狀態檢查,Amazon EC2 Auto Scaling 會終止並取代它們。如果執行個體重新整理無法啟動任何運作狀態良好的執行個體,則執行個體重新整理最終會失敗,而不會影響其他 90% 的群組。如果新執行個體保持運作狀態並完成暖機期,Amazon EC2 Auto Scaling 可以繼續取代其他執行個體。
執行個體重新整理可以一次取代一個執行個體、一次取代多個執行個體,或一次取代所有執行個體。若要一次取代一個執行個體,請將狀態良好最低和最高百分比均設定為 100%。這會將執行個體重新整理的行為變更為在終止前啟動,以防止群組的容量降低至其所需容量的 100% 以下。若要一次取代所有執行個體,請將狀態良好最低百分比設為 0%。
- 狀態良好最高百分比
-
狀態良好最高百分比是 Auto Scaling 群組在取代執行個體時可增加的所需容量百分比。上下限之間的差異不能大於 100。範圍越大,可同時取代的執行個體數量便會越多。
- 執行個體暖機期
-
執行個體暖機期是指新執行個體的狀態變更為
InService
到視為已完成初始化經過的時間。在執行個體重新整理期間,如果執行個體通過運作狀態檢查,Amazon EC2 Auto Scaling 不會在確定新啟動的執行個體運作狀態良好之後立即取代下一個執行個體。它會等待暖機期,然後再繼續取代下一個執行個體。如果您的應用程式仍需要一些初始化時間才能回應請求,這個功能會相當實用。執行個體暖機期的運作方式與預設執行個體暖機期相同。因此適用相同的擴展考量。如需詳細資訊,請參閱設定 Auto Scaling 群組的預設執行個體暖機期。
- 所需組態
-
所需的組態是您希望 Amazon EC2 Auto Scaling 在 Auto Scaling 群組之間部署的新組態。例如,您可為執行個體指定新啟動範本和新執行個體類型。在執行個體重新整理期間,Amazon EC2 Auto Scaling 會將 Auto Scaling 群組更新為所需的組態。如果在執行個體重新整理期間發生橫向擴展事件,Amazon EC2 Auto Scaling 會啟動具有所需組態的新執行個體,而不是群組目前的設定。執行個體重新整理成功後,Amazon EC2 Auto Scaling 會更新 Auto Scaling 群組設定,以反映您在執行個體重新整理中指定的新所需組態。
- 略過相符項目
-
略過比對會告知 Amazon EC2 Auto Scaling 忽略已擁有最新更新的執行個體。如此一來,您就不會取代超過需要的執行個體數量。當您想要確定 Auto Scaling 群組使用特定版本的啟動範本,並且僅取代使用不同版本的執行個體時,這會很有幫助。
- 檢查點
-
檢查點是執行個體重新整理暫停一段指定時間的時間點。執行個體重新整理可以包含多個檢查點。Amazon EC2 Auto Scaling 會為每個檢查點發出事件。因此,您可以新增 an EventBridge 規則,將事件傳送至目標,例如 Amazon SNS,以便在達到檢查點時收到通知。到達檢查點後,您就能夠驗證部署。如果發現任何問題,您可以取消執行個體重新整理或進行回復。分階段部署更新的能力是檢查點的主要優點。如果不使用檢查點,輪流取代將持續執行。
若要深入了解啟動執行個體重新整理時可設定的所有預設設定,請參閱 了解執行個體重新整理的預設值。
運作狀態檢查寬限期
Amazon EC2 Auto Scaling 會根據 Auto Scaling 群組使用的運作狀態檢查,判斷執行個體是否運作良好。如需詳細資訊,請參閱Auto Scaling 群組中的執行個體運作狀態檢查。
為確保這些運作狀態檢查能夠盡快啟動,請勿將群組的運作狀態檢查寬限期設定得太高,但要足以讓您的 Elastic Load Balancing 運作狀態檢查來判斷目標是否可用來處理要求。如需詳細資訊,請參閱設定 Auto Scaling 群組的運作狀態檢查寬限期。。
執行個體類型相容性
在變更執行個體類型之前,最好先確認它可以與您的啟動範本搭配運作。這可確認與您指定的 AMI 的相容性。例如,假設您從平行 (PV) AMI 啟動原始執行個體,但您想要變更為僅硬體虛擬機器 (HVM) AMI 支援的目前世代執行個體類型。在此情況下,您必須在啟動範本中使用 HVM AMI。
若要在不啟動執行個體的情況下確認執行個體類型相容性,請使用 run-instances 命令搭配 --dry-run
選項,如下列範例所示。
aws ec2 run-instances --launch-template LaunchTemplateName=
my-template
,Version='1
' --dry-run
如需如何判斷相容性的詳細資訊,請參閱 Amazon EC2 使用者指南中的變更執行個體類型的相容性。
限制
-
Total duration (總持續時間):執行個體重新整理可持續主動取代執行個體的時間上限為 14 天。
-
加權群組特定行為的差異:如果混合執行個體群組的執行個體權重設定為大於或等於群組所需容量,Amazon EC2 Auto Scaling 可能會一次取代所有
InService
執行個體。若要避免這種情況,請遵循 設定 Auto Scaling 群組以使用執行個體權重 主題中的建議。當您將權重與 Auto Scaling 群組搭配使用時,請指定大於您最大權重的所需容量。 -
一小時逾時:當執行個體重新整理因為等待取代待命中執行個體或受到縮減保護,或新執行個體未通過運作狀態檢查,而無法繼續進行取代時,Amazon EC2 Auto Scaling 會繼續重試一小時。它也會提供狀態訊息,以協助您解決問題。如果問題在一小時後仍然存在,操作會失敗。其目的是在發生暫時性問題時,給它時間恢復。
-
透過使用者資料部署程式碼:略過比對不會檢查從使用者資料指令碼部署的程式碼變更。如果您使用使用者資料提取新程式碼,並在新執行個體上安裝這些更新,建議您關閉略過比對,以確保所有執行個體都收到最新的程式碼,即使沒有啟動範本版本更新。
-
更新限制:如果您嘗試更新 Auto Scaling 群組的啟動範本、啟動組態或混合執行個體政策,而執行個體重新整理具有所需組態處於作用中狀態,則請求會失敗,並出現下列驗證錯誤:
An active instance refresh with a desired configuration exists. All configuration options derived from the desired configuration are not available for update while the instance refresh is active.