終了した EC2 インスタンスが自動的に再起動したのはなぜですか?

所要時間2分
0

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを終了しました。同じ種類の別のインスタンスが自動的にアカウントで起動されます。これが発生する理由と、新しいインスタンスの再起動を停止する方法を教えてください。

簡単な説明

一部のサービスでは、削除されたインスタンスを置き換えるために、自動的にインスタンスを起動することができます。これにより、アプリケーションの耐障害性が高まります。

例:

  • メンテナンス中のインスタンスを置き換えるインスタンスを起動するように Amazon EC2 Auto Scaling グループを設定できます。
  • AWS Elastic Beanstalk 環境には、通常はデフォルトで Auto Scaling グループが含まれています。
  • EC2 フリートは、 Maintain のリクエストタイプで設定できます。このシナリオでは、EC2 フリートは希望する容量に対して非同期リクエストを送信し、中断されたスポットインスタンスを自動的に補充することで容量を維持します。
  • スポットフリートリクエストタイプは Maintain として設定できます。このシナリオでは、スポットフリートは希望する容量に対して非同期リクエストを送信し、中断されたスポットインスタンスを自動的に補充することで容量を維持します。

サービスが代替インスタンスを起動しないようにするには、次の操作を行います。

解決方法

注: 次のアクションは、選択した AWS リソースを完全に削除します。この解決方法を実行する前に、EC2 インスタンスのバックアップを作成します。バックアップを作成することで、必要に応じて以前の作業状態に戻すことができます。

Auto Scaling グループを削除する

1.    再起動したインスタンスのインスタンス ID を書き留めます。

2.    再起動の原因になっている Auto Scaling グループを確認します。
Amazon EC2 コンソールを開きます。Amazon EC2 リソースはリージョン固有です。正しいリージョンが選択されていることを確認してください。そのようになっていない場合は、画面上部のナビゲーションバーから正しいリージョンを選択します。
左側のナビゲーションペインで [Auto Scaling グループ] を選択し、新しいウィンドウで開きます。
Auto Scaling グループを選択してから [アクティビティ履歴] タブを選択します。
再起動したインスタンスのインスタンス ID を確認します。
注: インスタンス ID が一致しない場合、またはこのリージョンに Auto Scaling グループがない場合は、次のElastic Beanstalk 環境を終了するセクションに進んでください。

3.    [Actions (アクション)] > [Delete (削除)] の順に選択します。

4.    [はい、削除します] を選択します。

5.    左のナビゲーションペインから [インスタンス] を選択します。インスタンスが終了し、新しいインスタンスは起動しません。

Elastic Beanstalk 環境を終了する

1.    AWS Elastic Beanstalk コンソールを開きます。Amazon EC2 リソースはリージョン固有です。正しいリージョンにいることを確認してください。そうでない場合は、画面上部のナビゲーションバーから正しいリージョンを選択します。

2.    [環境] を選択し、リストからお使いの環境の名前を選択します。

3.    再起動した EC2 インスタンスの名前が Elastic Beanstalk 環境と同じであることを確認します。

**注:**インスタンス ID が一致しない場合は、次の「EC2 フリートの削除」セクションに進んでください。

4.    [環境アクション ] を選択し、[環境の終了] を選択します。

5.    環境が終了したことを確認します。Elastic Beanstalk が環境で実行中の AWS リソースを終了するまで数分かかる場合があります。

EC2 フリートを削除する

EC2 フリートは API または AWS CLI 経由でのみ使用できます。ここでは AWS CLI を使用してフリートを削除します。

1.    AWS CLI がマシンにインストールされ設定されていることを確認します

2.    先に進む前に、自分が正しいリージョンにいることを確認してください。正しいリージョンでない場合は、次のコマンドを実行して正しいリージョンを設定してください。

aws configure

3.    次のコマンドを実行して、既存の EC2 フリートがあるかどうかを確認します。

aws ec2 describe-fleets

4.    再起動する EC2 インスタンス ID を確認するには、次のコマンドを実行して特定の EC2 フリートに関する情報を確認します。次のコマンドで、fleet-73FBD2CE-AA30-494C-8788-1CEE4example をお使いの EC2 フリート ID に置き換えます。

aws ec2 describe-fleet-instances --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE

**注:**インスタンス ID が一致しない場合は、次の「スポットフリートをキャンセルする」セクションに進んでください。

5.    EC2 フリートを削除し、フリートで現在実行中のインスタンスを終了するには、次のコマンドを実行します。次のコマンドで、fleet-73FBD2CE-AA30-494C-8788-1CEE4example をお使いの EC2 フリート ID に置き換えます。

aws ec2 delete-fleets --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE --terminate-instance

スポットフリートをキャンセルする

1.    Amazon EC2 コンソールを開きます Amazon EC2 リソースはリージョン固有です。正しいリージョンにいることを確認してください。そうでない場合は、画面上部のナビゲーションバーから正しいリージョンを選択します。

2.    [スポットリクエスト] を選択します。

3.    再起動の原因となっているスポットフリートリクエストを確認します。スポットフリートリクエストを選択します。構成の詳細を表示するには、[説明] を選択します。

4.    スポットフリートのスポットインスタンスを確認するには、[Instances] を選択します。

5.    スポットフリートリクエストを選択します。

6.    アクションスポットリクエストのキャンセルを選択します

7.    [Cancel spot request] で、スポットフリートをキャンセルすることを確認します。現在のインスタンスと、このスポットフリートによって再起動されたインスタンスを終了する場合は、[Terminate instances] が選択されていることを確認します。準備ができたら、[Confirm] を選択します。

または

次の cancel-spot-fleet-requests コマンドを使用して、指定したスポットフリートリクエストをキャンセルし、インスタンスを終了できます。次のコマンドで、SFR-73FBD2CE-AA30-494C-8788-1CEE4example をスポットフリート ID に置き換えます。

aws ec2 cancel-spot-fleet-requests --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \--terminate-instances

関連情報

Amazon EC2 Auto Scaling とは

AWS Elastic Beanstalk とは

AWS公式
AWS公式更新しました 2年前