從 Auto Scaling 群組暫時移除執行個體 - Amazon EC2 Auto Scaling

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

從 Auto Scaling 群組暫時移除執行個體

您可以讓處於 InService 狀態的執行個體進入 Standby 狀態,更新執行個體或疑難排解執行個體問題,然後讓執行個體恢復到服務狀態。處於待命狀態的執行個體仍然屬於 Auto Scaling 群組,但不會主動處理負載平衡器流量。

此功能可協助您停止和啟動執行個體或重新啟動執行個體,而不必擔心 Amazon EC2 Auto Scaling 會在運作狀態檢查期間或在縮減事件期間終止執行個體。

例如,您可以透過變更啟動範本或啟動組態,隨時變更 Auto Scaling 群組的 Amazon Machine Image (AMI)。Auto Scaling 群組啟動的任何後續執行個體都會使用此 AMI。不過,Auto Scaling 群組不會更新目前正在服務的執行個體。您可以終止這些執行個體,並讓 Amazon EC2 Auto Scaling 取代它們,或使用執行個體重新整理功能來終止和取代執行個體。您也可以讓執行個體進入待命狀態、更新軟體,然後讓執行個體恢復到服務狀態。

從 Auto Scaling 群組中分開執行個體的程序與將執行個體置於待命狀態類似。如果您想要將執行個體連接到不同的群組,或管理獨立執行個體等執行個體,並可能終止它們,分離EC2執行個體可能很有用。如需詳細資訊,請參閱從 Auto Scaling 群組分離或連接執行個體

待命狀態的運作方式

待命狀態的運作方式如下所示,可協助您暫時從 Auto Scaling 群組移除執行個體:

  1. 請您將該執行個體設為待命狀態。執行個體會維持此狀態,直到執行個體退出待命狀態。

  2. 如果有負載平衡器目標群組或 Classic Load Balancer 連接到 Auto Scaling 群組,執行個體會從負載平衡器取消註冊。如果為負載平衡器啟用連接耗盡,Elastic Load Balancing 會依預設等待 300 秒,再完成取消註冊程序,這有助完成執行中的請求。

  3. 您可以更新執行個體或對其進行故障排除。

  4. 透過退出待命狀態可使執行個體恢復到服務狀態。

  5. 如果有負載平衡器目標群組或 Classic Load Balancer 連接到 Auto Scaling 群組,執行個體會向負載平衡器註冊。

如需 Auto Scaling 群組中執行個體生命週期的詳細資訊,請參閱 Amazon EC2 Auto Scaling 執行個體生命週期

考量事項

下列是將執行個體移入待命狀態時的考量事項:

  • 當您將執行個體置於待命狀態時,您可以透過此作業減少所需容量,也可以使其保持相同的值。

    • 如果您選擇不減少 Auto Scaling 群組所需的容量,Amazon EC2 Auto Scaling 會啟動執行個體以取代待命中的執行個體。其目的是當一個或多個執行個體處於待命狀態時,協助您維持應用程式的容量。

    • 如果您選擇減少 Auto Scaling 群組的所需容量,這樣可以防止啟動執行個體以取代處於待命狀態的執行個體。

  • 執行個體恢復到服務狀態後,所需容量會增加,以反映 Auto Scaling 群組中的執行個體數。

  • 若要執行增加 (和減少),新的所需容量必須介於最小和最大群組大小之間。否則,操作會失敗。

  • 如果在將執行個體置於待命狀態之後的任何時間,或結束待命狀態將執行個體送回服務,則發現 Auto Scaling 群組在可用區域之間未平衡,除非您暫停AZRebalance程序,否則 Amazon EC2 Auto Scaling 會透過重新平衡可用區域來補償 。如需詳細資訊,請參閱暫停和繼續 Amazon EC2 Auto Scaling 程序

  • 您需支付待命狀態的執行個體費用。

待命狀態中的執行個體運作狀態

Amazon EC2 Auto Scaling 不會對處於待命狀態的執行個體執行運作狀態檢查。當執行個體處於待命狀態時,其顯示的運作狀態為進入待命狀態前的狀態。Amazon EC2 Auto Scaling 不會在執行個體上執行運作狀態檢查,直到您將其恢復服務為止。

例如,如果您將運作狀態良好的執行個體置於待命狀態,然後將其終止,Amazon EC2 Auto Scaling 會繼續將執行個體報告為運作狀態良好。如果您嘗試讓已終止的執行個體恢復服務,Amazon EC2 Auto Scaling 會對執行個體執行運作狀態檢查,判斷其正在終止且運作狀態不佳,並啟動替換執行個體。如需詳細資訊,請參閱Auto Scaling 群組中的執行個體運作狀態檢查

將執行個體設定為待命,以暫時移除執行個體

使用下列其中一個程序,將執行個體置於待命狀態,以暫時停止服務。

Console
暫時移除執行個體
  1. 在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/,然後從導覽窗格中選擇 Auto Scaling 群組

  2. 選取 Auto Scaling 群組旁的核取方塊。

    頁面底部會開啟一個分割窗格。

  3. Instance management (執行個體管理) 索引標籤的 Instances (執行個體) 中,選取執行個體。

  4. 選擇 Actions (動作)、Set to Standby (設定為待命)。

  5. 設定為待命對話方塊中,保持選取替代執行個體核取方塊,以啟動替代執行個體。清除此核取方塊以減少所需容量。

  6. 出現確認提示時,輸入 standby 以確認將指定的執行個體置於 Standby 狀態,然後選擇設定為待命

  7. 您可以視需求更新執行個體或排解問題。完成後,接續下一個步驟,讓執行個體恢復到服務狀態。

  8. 選取執行個體、選擇動作設定為 InService。在設定為 InService對話方塊中,選擇設定為 InService

AWS CLI

若要暫時從 Auto Scaling 群組中移除執行個體,請使用下列範例命令。將每個 user input placeholder 替換成您自己的資訊。

暫時移除執行個體
  1. 使用以下 describe-auto-scaling-instances 命令,找出需要更新的執行個體。

    aws autoscaling describe-auto-scaling-instances \ --query 'AutoScalingInstances[?AutoScalingGroupName==`my-asg`]'

    下列範例顯示執行此命令時產生的輸出。

    請記下您要從群組中移除的執行個體 ID。您在下一個步驟中需要此 ID。

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "InstanceId": "t3.micro", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }
  2. 使用以下 enter-standby 命令,將執行個體設為 Standby 狀態。--should-decrement-desired-capacity 選項會減少所需容量,讓 Auto Scaling 群組不會啟動替代執行個體。

    aws autoscaling enter-standby --instance-ids i-05b4f7d5be44822a6 \ --auto-scaling-group-name my-asg --should-decrement-desired-capacity

    以下是回應範例。

    { "Activities": [ { "ActivityId": "3b1839fe-24b0-40d9-80ae-bcd883c2be32", "AutoScalingGroupName": "my-asg", "Description": "Moving EC2 instance to Standby: i-05b4f7d5be44822a6", "Cause": "At 2023-12-15T21:31:26Z instance i-05b4f7d5be44822a6 was moved to standby in response to a user request, shrinking the capacity from 4 to 3.", "StartTime": "2023-12-15T21:31:26.150Z", "StatusCode": "InProgress", "Progress": 50, "Details": "{\"Subnet ID\":\"subnet-c934b782\",\"Availability Zone\":\"us-west-2a\"}" } ] }
  3. (選用) 使用以下 Standby 命令驗證 describe-auto-scaling-instances 狀態的執行個體。

    aws autoscaling describe-auto-scaling-instances --instance-ids i-05b4f7d5be44822a6

    以下是回應範例。請注意,現在執行個體的狀態為 Standby

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "InstanceType": "t3.micro", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "Standby" }, ... ] }
  4. 您可以視需求更新執行個體或排解問題。完成後,接續下一個步驟,讓執行個體恢復到服務狀態。

  5. 使用以下 exit-standby 命令,讓執行個體回到服務狀態。

    aws autoscaling exit-standby --instance-ids i-05b4f7d5be44822a6 --auto-scaling-group-name my-asg

    以下是回應範例。

    { "Activities": [ { "ActivityId": "db12b166-cdcc-4c54-8aac-08c5935f8389", "AutoScalingGroupName": "my-asg", "Description": "Moving EC2 instance out of Standby: i-05b4f7d5be44822a6", "Cause": "At 2023-12-15T21:46:14Z instance i-05b4f7d5be44822a6 was moved out of standby in response to a user request, increasing the capacity from 3 to 4.", "StartTime": "2023-12-15T21:46:14.678Z", "StatusCode": "PreInService", "Progress": 30, "Details": "{\"Subnet ID\":\"subnet-c934b782\",\"Availability Zone\":\"us-west-2a\"}" } ] }
  6. (選用) 使用以下 describe-auto-scaling-instances 命令驗證恢復到服務狀態的執行個體。

    aws autoscaling describe-auto-scaling-instances --instance-ids i-05b4f7d5be44822a6

    以下是回應範例。請注意,該執行個體的狀態為 InService

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "InstanceType": "t3.micro", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }