本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在執行個體重新整理期間取代根磁碟區
運作方式
根磁碟區取代只會取代根 EBS 磁碟區,同時讓執行個體保持執行狀態,以更新您的執行個體。這消除了啟動新執行個體的需求,並避免潛在的容量限制。此程序會保留所有其他執行個體資源,包括:
-
網路介面和 IP 地址
-
非根 EBS 磁碟區
-
執行個體存放區磁碟區和資料
-
安全群組和 IAM 角色
在根磁碟區取代期間,您的應用程式會繼續在現有執行個體上執行。原始根磁碟區會分離,從您指定的 AMI 建立新的根磁碟區,然後連接至相同的執行個體。原始根磁碟區會在成功取代後自動刪除。
當您使用取代根磁碟區策略時,執行個體會經歷以下生命週期狀態:
-
ReplacingRootVolume- 根磁碟區取代開始 -
ReplacingRootVolume:Wait- 等待生命週期掛鉤完成 (如果已設定) -
ReplacingRootVolume:Proceed- 繼續替換 -
RootVolumeReplaced- 已成功完成取代
根磁碟區取代完成後,Auto Scaling 會對更新的執行個體執行運作狀態檢查。如果執行個體的根磁碟區取代失敗,Auto Scaling 會將該執行個體標記為終止,並以新的執行個體取代。
要求
-
Auto Scaling 群組必須使用混合執行個體政策
-
混合執行個體政策中的所有覆寫都必須指定
ImageId -
AMIs只能包含單一根磁碟區
-
所有執行個體都必須符合群組的啟動範本組態
-
您必須使用具有包含
ImageId覆寫之混合執行個體政策的所需組態來啟動執行個體重新整理。
使用取代根磁碟區啟動執行個體重新整理
使用取代根磁碟區 (AWS CLI) 啟動執行個體重新整理
使用下列 start-instance-refresh
aws autoscaling start-instance-refresh --cli-input-json file://config.json
config.json 的內容:
範例
{ "AutoScalingGroupName":"my-asg", "Strategy" :"ReplaceRootVolume", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateId":"my-launch-template", "Version":"1"}, "Overrides": [ { "InstanceType":"c5.large", "ImageId":"ami-1234example"}, { "InstanceType":"m5.large", "ImageId":"ami-2345example"} ] } } }, "Preferences": { "InstanceWarmup":60, "MinHealthyPercentage":90, "AutoRollback":true, "ScaleInProtectedInstances":Ignore, "StandbyInstances":Ignore} }
如果未提供偏好設定,則會使用預設值。如需詳細資訊,請參閱了解執行個體重新整理的預設值。
輸出範例:
{
"InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b"
}
限制
-
如果 EC2 Auto Scaling 群組或執行個體重新整理所需的組態使用
$Latest或$Default啟動範本版本,則無法使用取代根磁碟區啟動執行個體重新整理。 -
如果執行個體包含執行個體類型不存在於混合執行個體政策中的執行個體,則無法使用取代 Amazon EC2 Auto Scaling 群組上的根磁碟區來啟動執行個體重新整理。
-
使用取代根磁碟區重新整理執行個體期間,您只能連接具有所需組態混合執行個體政策中存在之類型的執行個體。
-
您無法在具有暖集區的 EC2 Auto Scaling 群組上使用取代根磁碟區來啟動執行個體重新整理。
-
您無法將暖集區新增至使用取代根磁碟區重新整理作用中執行個體的 Amazon EC2 Auto Scaling 群組。
使用生命週期掛鉤取代根磁碟區
正在進行根磁碟區取代的執行個體會遵循自己的生命週期轉換,可讓您在取代之前和/或之後叫用動作 (例如 Lambda 函數)。如需根磁碟區取代期間生命週期狀態的詳細資訊,請參閱 正在進行根磁碟區取代之執行個體的生命週期狀態轉換。
如需有關新增 lifecycle hook 的詳細資訊,請參閱 將生命週期掛鉤新增至 Auto Scaling 群組。如需有關完成生命週期動作的詳細資訊,請參閱 在 Auto Scaling 群組中完成生命週期動作。
在根磁碟區取代之前,生命週期關聯在下列案例中非常有用:
-
您想要在取代根磁碟區並重新啟動執行個體之前,正常關閉應用程式。
-
您想要在取代磁碟區之前,將資料從根磁碟區移至另一個位置。
在根磁碟區取代之後,生命週期掛鉤在下列案例中非常有用:
-
您想要在新 AMI 開始接收流量之前,確認執行個體已完全就緒。
-
您想要引導先前存在於根磁碟區上的應用程式資料。
在新增 lifecycle hook 時,請考慮以下事項:
-
為生命週期動作設定
autoscaling:EC2_INSTANCE_TERMINATING生命週期掛鉤時,即將進行根磁碟區取代的執行個體會在達到ReplacingRootVolume:Wait狀態時暫停,以執行自訂動作。 -
為生命週期動作設定
autoscaling:EC2_INSTANCE_LAUNCHING生命週期掛鉤時,剛取代其根磁碟區的執行個體會在達到Pending:Wait狀態時暫停,以執行自訂動作。
當執行個體進入等待狀態時,Amazon EC2 Auto Scaling 會傳送通知。Auto Scaling 生命週期掛鉤通知包含值為 Action的欄位ReplaceRootVolume,表示執行個體正在進行根磁碟區取代。
有關這些通知的範例,請參閱本指南的「EventBridge」章節。如需更多資訊,請參閱執行個體重新整理取代根磁碟區生命週期事件。