Amazon EC2 Auto Scaling によってインスタンスが削除されたのはなぜですか?

最終更新日: 2021 年 2 月 23 日

Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling グループがインスタンスを終了しました。しかし、Amazon EC2 コンソールで終了の理由が表示されません。Amazon EC2 Auto Scaling がインスタンスを終了させた理由を確認するにはどうすればよいですか?

簡単な説明

Amazon EC2 Auto Scaling は、Amazon EC2 または Elastic Load Balancing (ELB) ヘルスチェックに基づいて、インスタンスのヘルス状態を判断します。ヘルスチェックの置換を含む Auto Scaling グループのすべてのスケーリングアクションは、Amazon EC2 コンソールの [Activity History] (アクティビティ履歴) ビューに表示されます。

解決方法

[アクティビティ履歴] ビューにあるインスタンスの説明を活用して、今後のステップを決定します。

作業を進める前に、インスタンスの停止に関する説明と理由を確認します。

  1. Amazon EC2 コンソールを開きます。
  2. ナビゲーションペインの [Auto Scaling] で、[Auto Scaling Groups] (Auto Scaling グループ) を選択します。その後、インスタンスのグループを選択します。
  3. [Activity History] (アクティビティ履歴) ビューを選択してから、インスタンスの終了イベントを選択します。
  4. インスタンスの終了イベントの [説明] と [原因] を確認します。

下記の説明の例を参照し、インスタンスの終了について想定される根本的な理由を確認します。

「インスタンスが終了または停止したことを示す EC2 ヘルスチェックに応答して、インスタンスがサービス停止された」

Amazon CloudWatch メトリクスを利用して、インスタンスまたはシステムチェックの失敗を確認します。

  1. Amazon CloudWatch コンソールを開きます。
  2. ナビゲーションペインで [Metrics] (メトリクス) を選択し、[All Metrics] (すべてのメトリクス) ビューを選択します。
  3. メトリクスパネルで [EC2] を選択し、その後に [Per-Instance Metrics] (インスタンス別メトリクス) を選択します。
  4. instance-id を入力し、[StatusCheckFailed_Instance]、[StatusCheckFailed_System]、または [StatusCheckFailed] を選択して、メトリクスグラフを表示します。

Amazon EC2 Auto Scaling は、終了または再起動されたインスタンスを終了します。AWS CloudTrail の履歴で、ユーザーが手動でインスタンスの停止や再起動を行ったかどうかを確認します。

  1. AWS CloudTrail コンソールを開きます。
  2. ナビゲーションペインで、[Event history] (イベント履歴) を選択します。
  3. TerminateInstancesStopInstancesRebootInstances API 呼び出しの履歴を確認します。

Amazon EC2 Auto Scaling は、次のいずれかの場合にスポットインスタンスを終了します。

  • 容量が使用できなくなった
  • スポット料金が、インスタンスについて指定した最大料金を超えている

[Activity History] (アクティビティ履歴) に、ヘルスチェックが原因でサービスからインスタンスが削除されたことが示される場合があります。終了理由を確認するには、スポットリクエストのステータスを確認します。

  1. Amazon EC2 コンソールを開きます。
  2. ナビゲーションペインの [Instances] (インスタンス) で、[Spot Requests] (スポットリクエスト) を選択します。
  3. スポットリクエストを選択し、[Description] (説明) ビューを選択して、[Status] (ステータス) を確認します。

Auto Scaling グループのヘルスチェックのタイプが ELB に設定されている場合、Amazon EC2 Auto Scaling は ELB と EC2 の両方のヘルスチェックを実行します。その後、サービスは、いずれかのヘルスチェックに失敗したインスタンスを終了します。インスタンスが終了した理由を理解するには:

  1. Amazon EC2 コンソールを開きます。
  2. ナビゲーションペインの [Auto Scaling] で、[Auto Scaling Groups] (Auto Scaling グループ) を選択してから、インスタンスのグループを選択します。
  3. [Details] (詳細) ビューを選択して、[Health Check Type] (ヘルスチェックのタイプ) を確認します。

「ELB システムヘルスチェックの失敗に応じて、インスタンスがサービス停止されました」

複数のロードバランサーが 1 つの Auto Scaling グループにアタッチされている場合、Amazon EC2 Auto Scaling でインスタンスが正常であるとみなされるようにするためには、すべてのロードバランサーがインスタンスは正常であるとレポートする必要があります。

  1. Amazon EC2 コンソールを開きます。
  2. ナビゲーションペインの [Load Balancing] (ロードバランシング) で、[Load Balancers] (ロードバランサー)、[Monitoring] (モニタリング) の順に選択します。
  3. [Health Hosts Count] (ヘルスホストカウント) のメトリクススグラフを選択し、インスタンスがヘルスチェックに失敗していることを確認します。
  4. ナビゲーションペインの [Auto Scaling] で、[Auto Scaling Groups] (Auto Scaling グループ) を選択します。
  5. インスタンスのグループを選択し、[Details] (詳細) ビューを選択します。
  6. [Load Balancers] (ロードバランサー) または [Target Groups] (ターゲットグループ) で複数のロードバランサーがアタッチされているかどうかを確認します。

CloudTrail で、停止したプロセスが異常なインスタンスの終了をプロセスの再開まで遅延させたかどうかを確認します。

  1. AWS CloudTrail コンソールを開きます。
  2. ナビゲーションペインで、[Event history] (イベント履歴) を選択します。
  3. 履歴で SuspendProcesses および ResumeProcesses API 呼び出しを確認します。

「ユーザーヘルスチェックに応じて、インスタンスがサービス停止されました」

Amazon EC2 Auto Scaling でカスタムヘルスチェックを定義することができます。カスタムヘルスチェックでインスタンスが異常であると判断された場合、チェックは手動で SetInstanceHealth をトリガーし、インスタンスの状態を [Unhealthy] (異常) に設定します。Amazon EC2 Auto Scaling は次の実行で異常なインスタンスを終了します。

「グループゾーンの分散を行うためにインスタンスが起動されました」または「インスタンスが起動し、ゾーン zones us-east-1a のインスタンスが他のゾーンに分散されました」

デフォルトでは、Amazon EC2 Auto Scaling はすべてのアベイラビリティーゾーンを対象にインスタンスを分散します。ユーザーが新しいアベイラビリティーゾーンを Auto Scaling グループに追加すると、Amazon EC2 Auto Scaling はそのゾーンで新しいインスタンスを起動し、リバランスにより他のゾーンのインスタンスが終了する場合があります。

「2018-02-12T13:48:46Z に、状態 ALARM のモニターアラーム XXX-High-CPU-Utilization が、ポリシー AAA-scaledown をトリガーし、希望の容量を 2 から 1 に変更」

Amazon EC2 Auto Scaling は、設定された CloudWatch アラームに応じてグループのインスタンスを終了する可能性があります。グループポリシーと CloudWatch アラームの履歴を確認します。

Auto Scaling グループのポリシーを調べるには、以下を実行します。

  1. Amazon EC2 コンソールを開きます。
  2. ナビゲーションペインの [Auto Scaling] で、[Auto Scaling Groups] (Auto Scaling グループ) を選択します。
  3. インスタンスのグループを選択します。
  4. [スケーリングポリシー] ペインを選択し、ポリシーを表示して編集します。

CloudWatch アラームの履歴を表示するには、以下を実行します。

  1. Amazon CloudWatch コンソールを開きます。
  2. ナビゲーションペインで、[Alarms] (アラーム) を選択します。
  3. 目的のアラームを選択してから、[History] (履歴) ビューを選択します。
  4. アラームの状態や設定に変更がないか、履歴を調べます。

「2018-02-12T13:49:12Z に、AutoScalingGroup 制約のスケジュールされたアクションの更新 最小: 1、最大: 9、必要: 1、必要な容量を 2 から 1 に変更 [...]」

Auto Scaling グループの最小、最大、または必要な容量を変更するスケジュール済みアクションを設定できます。スケジュールされたアクションによって希望する容量が削減される場合、Amazon EC2 Auto Scaling は、希望する新しい容量に合わせて 1 つまたは複数のインスタンスを終了させます。

「AutoScalingGroup の制限を、最小: 0、最大: 2、必要: 1 に更新し、必要な容量を 2 から 1 に変更する、ユーザーリクエスト」

必要な容量を減らすなど、Auto Scaling グループの制約を手動で変更すると、Amazon EC2 Auto Scaling は新しい設定に一致するようにインスタンスを終了することがあります。