Auto Scaling グループからインスタンスを一時的に削除する - Amazon EC2 Auto Scaling

Auto Scaling グループからインスタンスを一時的に削除する

インスタンスを InService 状態から Standby 状態に移行でき、インスタンスを更新またはトラブルシューティングして、インスタンスをサービスに返すことができます。スタンバイ状態のインスタンスはまだ Auto Scaling グループの一部ですが、ロードバランサートラフィックをアクティブに処理しません。

この機能を使用すると、Amazon EC2 Auto Scaling がヘルスチェックの一部として、またはスケールインイベント中にインスタンスを終了することを心配することはなく、インスタンスを停止して起動したり、再起動したりできます。

たとえば、起動テンプレートまたは起動設定を変更することで、Auto Scaling グループの Amazon マシンイメージ (AMI) をいつでも変更できます。Auto Scaling グループが起動する後続のインスタンスには、この AMI が使用されます。ただし、Auto Scaling グループは現在稼働中のインスタンスを更新しません。これらのインスタンスを終了し、Amazon EC2 Auto Scaling で置き換えるか、インスタンスの更新機能を使用してインスタンスを終了して置き換えることができます。または、インスタンスをスタンバイ状態にしてソフトウェアを更新し、次にインスタンスをサービスに戻すことができます。

Auto Scaling グループからインスタンスをデタッチすることは、インスタンスをスタンバイ状態にすることと似ています。インスタンスのデタッチは、スタンドアロンの EC2 インスタンスなどのインスタンスを管理し、場合によってはインスタンスを終了する場合に便利です。詳細については、「Auto Scaling グループからの EC2 インスタンスのデタッチ」を参照してください。

重要

インスタンスをスタンバイ状態に移行すると、Auto Scaling グループがアベイラビリティーゾーン間で不均衡になる可能性があります。Amazon EC2 Auto Scaling は、AZRebalance プロセスが停止されるまでアベイラビリティーゾーン間のバランスを再度取って不均衡を補います。詳細については、「Auto Scaling グループのプロセスを中断して再開する」を参照してください。

重要

スタンバイ状態のインスタンスに対して課金されます。

スタンバイ状態の仕組み

Auto Scaling グループからインスタンスを一時的に削除できるように、スタンバイ状態は次のように機能します:

  1. ユーザーがインスタンスをスタンバイ状態にする。スタンバイ状態を終了するまで、インスタンスはこの状態のままです。

  2. Auto Scaling グループにアタッチされたロードバランサーターゲットグループまたは Classic Load Balancer がある場合、インスタンスはロードバランサーから登録解除されます。Connection Draining がロードバランサーに有効になっている場合、Elastic Load Balancingは登録解除プロセスを完了する前に 300 秒待って、処理中のリクエストが完了するのを助けます。

  3. デフォルトでは、インスタンスをスタンバイ状態にすると、希望するキャパシティーとして指定した値は減ります。この場合、スタンバイ状態になっているインスタンスがあると、追加のインスタンスを起動できません。あるいは、希望するキャパシティーを減らさないように指定できます。このオプションを指定した場合、Auto Scaling グループはインスタンスを起動して、スタンバイ状態のインスタンスと置き換えます。その目的は、1 つ以上のインスタンスがスタンバイ状態である間にアプリケーションのキャパシティーを維持できるようにすることです。

  4. インスタンスを更新またはトラブルシューティングできます。

  5. スタンバイ状態を終了することにより、インスタンスを稼働状態に戻します。

  6. スタンバイ状態にあったインスタンスを稼働状態に戻すと、希望するキャパシティーが増やされます。インスタンスをスタンバイ状態に移行するときにキャパシティーを減らさない場合、Auto Scaling グループによって必要以上のインスタンスがあると検出されます。これにより終了ポリシーが適用され、グループのサイズが削減されます。詳細については、「スケールイン中に終了する Auto Scaling インスタンスを制御する」を参照してください。

  7. Auto Scaling グループにアタッチされたロードバランサーターゲットグループまたは Classic Load Balancer がある場合、インスタンスはロードバランサーに登録されます。

次の図は、このプロセスのインスタンス状態の遷移を示しています。


                    インスタンスはスタンバイ状態になったりスタンバイ状態を終了したりします。

Auto Scaling グループのインスタンスのライフサイクル全体の詳細については、「Amazon EC2 Auto Scaling インスタンスのライフサイクル」を参照してください。

スタンバイ状態のインスタンスのヘルスステータス

Amazon EC2 Auto Scaling はスタンバイ状態にあるインスタンスのヘルスチェックを実行しません。インスタンスがスタンバイ状態にあるとき、スタンバイ状態に移行する前の状態がヘルスステータスに反映されます。Amazon EC2 Auto Scaling は、インスタンスを稼働状態に戻すまで、インスタンスのヘルスチェックを実行しません。

たとえば、正常なインスタンスをスタンバイ状態に移行して終了する場合、インスタンスは正常であると Amazon EC2 Auto Scaling がレポートし続けます。スタンバイ状態の終了済みインスタンスをサービスに戻そうとすると、Amazon EC2 Auto Scaling はインスタンスのヘルスチェックを実行し、インスタンスが終了していて異常であると判断して、代替インスタンスを起動します。ヘルスチェックの概要については、「Auto Scaling インスタンスのヘルスチェック」をご覧ください。

インスタンスを一時的に削除する (コンソール)

以下の手順は、サービスに現在存在するインスタンスを更新する一般的な手順を示しています。

インスタンスを一時的に削除するには

  1. Amazon EC2 Auto Scaling コンソール (https://console.aws.amazon.com/ec2autoscaling/) を開きます。

  2. Auto Scaling グループのチェックボックスを選択します。

    [Auto Scaling groups] (Auto Scaling グループ) ページの下部にスプリットペインが開きます。

  3. [Instance management (インスタンス管理)] タブの [Instances (インスタンス)] で、インスタンスを選択します。

  4. [Actions]、[Set to Standby] を選択します。

  5. [Set to Standby (スタンバイに設定)] ダイアログボックスで、代替インスタンスを起動するにはチェックボックスをオンにします。必要なキャパシティーを減らすには、オフのままにします。[Set to Standby] を選択します。

  6. 必要に応じてインスタンスを更新、またはトラブルシューティングできます。終了したら、インスタンスを稼働状態に戻すために次のステップに進みます。

  7. インスタンスを選択し、[Actions]、[Set to InService] を選択します。[Set to InService (InService に設定)] ダイアログボックスで、[Set to InService (InService に設定)] を選択します。

インスタンスを一時的に削除する (AWS CLI)

以下の手順は、サービスに現在存在するインスタンスを更新する一般的な手順を示しています。

インスタンスを一時的に削除するには

  1. 次の describe-auto-scaling-instances コマンドを使用して、更新するインスタンスを確認します。

    aws autoscaling describe-auto-scaling-instances

    以下に、応答の例を示します。

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "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": [ { "Description": "Moving EC2 instance to Standby: i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "ActivityId": "3b1839fe-24b0-40d9-80ae-bcd883c2be32", "Details": "{\"Availability Zone\":\"us-west-2a\"}", "StartTime": "2014-12-15T21:31:26.150Z", "Progress": 50, "Cause": "At 2014-12-15T21:31:26Z instance i-05b4f7d5be44822a6 was moved to standby in response to a user request, shrinking the capacity from 4 to 3.", "StatusCode": "InProgress" } ] }
  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", "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": [ { "Description": "Moving EC2 instance out of Standby: i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "ActivityId": "db12b166-cdcc-4c54-8aac-08c5935f8389", "Details": "{\"Availability Zone\":\"us-west-2a\"}", "StartTime": "2014-12-15T21:46:14.678Z", "Progress": 30, "Cause": "At 2014-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.", "StatusCode": "PreInService" } ] }
  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", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }