Amazon EC2 Auto Scaling をトラブルシューティングする: ヘルスチェック - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EC2 Auto Scaling をトラブルシューティングする: ヘルスチェック

このページでは、ヘルスチェックが原因で起きる EC2 インスタンスの終了に関する情報を提供します。それについて考えられる原因や、問題の解決のための各ステップを説明します。

エラーメッセージを取得するには、「スケーリングアクティビティからのエラーメッセージを取得する」を参照してください。

注記

スケーリングのアクティビティが原因ではない場合を含め、Amazon EC2 Auto Scaling により Auto Scaling グループ内のインスタンスが終了された際に、ユーザーは通知を受け取ることができます。詳細については、「Amazon EC2 Auto Scaling の Amazon SNS 通知オプション Amazon EC2 Auto Scaling」を参照してください。

以降のセクションでは、発生する可能性のある最も一般的なヘルスチェックエラーと、その原因について説明します。ここにはない問題が発生した場合は、以下の AWS ナレッジセンターの記事で、その他のトラブルシューティングについてのヘルプを参照してください。

EC2 インスタンスのステータスチェックが失敗したことにより、インスタンスのサービスは停止されました。

問題: Auto Scaling インスタンスで Amazon EC2 のステータスチェックが失敗します。

原因 1: 何らかの問題により、Auto Scaling グループ内のインスタンスが正常に機能していないと Amazon EC2 が認識した場合、Amazon EC2 Auto Scaling はそのヘルスチェックの一環として、障害のあるインスタンスを自動的に置き換えます。ステータスチェックは Amazon EC2 に組み込まれています。そのため、無効にしたり、削除したりすることはできません。インスタンスのステータスチェックが失敗した場合、通常は、アプリケーションで問題が発生しなくなるまで、ご自身の手でインスタンス設定を変更することで、その問題に対処する必要があります。

解決策 1: この問題を解決するには、以下のステップを実行します。

  1. Auto Scaling グループには含まれない Amazon EC2 インスタンスを手動で作成して、問題を調査します。障害のあるインスタンスの調査に関する一般的なヘルプについては、「Amazon EC2 Linux インスタンス用ユーザーガイド」の「ステータスチェックに失敗したインスタンスのトラブルシューティング」、ならびに、「Amazon EC2 Windows インスタンス用ユーザーガイド」の「EC2 Windows インスタンスのトラブルシューティング」を参照してください。

  2. インスタンスが起動に成功し、正常に機能していることを確認したら、エラーのない新しいインスタンス設定を Auto Scaling グループにデプロイします。

  3. AWS アカウントへの課金が継続されないよう、作成したインスタンスを削除します。

原因 2: ヘルスチェックの猶予期間とインスタンスのスタートアップ時間の間に不一致があります。

解決策 2: Auto Scaling グループのヘルスチェック猶予期間を、アプリケーションに対して適切な値に修正します。Auto Scaling グループで起動されたインスタンスには、ヘルスチェックの置き換えによる早期終了を防ぐために十分なウォームアップ時間 (猶予期間) が必要です。詳細については、「Auto Scaling グループにヘルスチェックの猶予期間を設定する」を参照してください。

EC2 でスケジュールされた再起動に応答して、インスタンスのサービスが停止される

問題: スケジュールされたイベントがインスタンスの問題を示すときにAuto Scaling インスタンスが置き換えられます。

原因: Amazon EC2 Auto Scaling は、将来にスケジュールされているメンテナンスまたは廃止イベントでインスタンスを置き換えます。

解決策: これらのイベントは頻繁には発生しません。終了処理中のインスタンス、または起動中のインスタンスで何かを実行する必要がある場合は、ライフサイクルフックを使用することができます。これらのフックを使用すると、Amazon EC2 Auto Scaling がインスタンスを起動または終了する時点で、カスタムアクションを実行できます。詳細については、「Amazon EC2 Auto Scaling のライフサイクルフック」を参照してください。

スケジュールされたイベントによるインスタンスの置き換えを行いたくない場合は、Auto Scaling グループに対するヘルスチェックプロセスを停止できます。詳細については、「Amazon EC2 Auto Scaling プロセスの一時停止と再開」を参照してください。

EC2 ヘルスチェックでインスタンスが終了または停止済みであることが検出され、インスタンスのサービスが停止されてしまう

問題: 停止、再起動、または終了した Auto Scaling インスタンスは置き換えられます。

原因 1: ユーザーが手動で、インスタンスを停止、再起動、または終了しています。

解決策 1: ユーザーがインスタンスを手動で停止、再起動、または終了したためにヘルスチェックが失敗するのは、Amazon EC2 Auto Scaling ヘルスチェックの仕組みによるものです。インスタンスは正常に機能しており、到達が可能な必要があります。Auto Scaling グループ内のインスタンスを再起動する必要がある場合は、まずインスタンスをスタンバイ状態にすることをお勧めします。詳細については、「Auto Scaling グループからインスタンスを一時的に削除する」を参照してください。

インスタンスを手動で終了する場合は、終了ライフサイクルフックと Elastic Load Balancing の登録解除 (および Connection Draining) を、インスタンスが実際に終了する前に完了しておく必要があります。

原因 2: Amazon EC2 Auto Scaling は、Amazon EC2 スポットサービスがインスタンスを中断した後、スポットインスタンスの置き換えを試みます。これは、スポット料金がお客様の上限価格を超えるか、またはキャパシティーが使用できなくなるためです。

解決策 2: 特定の時点で要求を満たせるだけのスポットインスタンスが存在するという保証はありません。ただし、以下を試すことができます。

  • より高いスポット上限価格を設定します (オンデマンド料金が利用できます)。上限価格を高く設定することで、要求されたキャパシティーを Amazon EC2 スポットサービスが確保し、それを維持できる可能性を高められます。

  • 複数のアベイラビリティーゾーンで複数のインスタンスタイプを実行することで、より多くの異なるキャパシティプールからインスタンスを起動できるようにします。詳細については、「複数のインスタンスタイプと購入オプションを使用する Auto Scaling グループ」を参照してください。

  • 複数のインスタンスタイプを使用する場合は、キャパシティーの再調整機能を有効にすることも考慮してください。この機能は、実行中のインスタンスが終了する前に Amazon EC2 スポットサービスで、新しいスポットインスタンスを起動させたい場合に便利です。詳細については、「キャパシティの再調整を使用して Amazon EC2 スポットの中断に対処する」を参照してください。

原因 3: キャパシティブロックでは、Amazon EC2 はキャパシティブロックの終了時刻の 30 分前にまだ実行中のインスタンスを終了します。この突然の終了により、キャパシティブロックが終了しても、Auto Scaling グループは希望する容量を維持するために新しいインスタンスを起動しようとします。

解決策 3: この問題を解決するには、以下を試してください。

  • Auto Scaling グループの必要な容量を減らして、新しいインスタンスを起動しようとしないようにします。詳細については、「Amazon EC2 Auto Scaling の手動スケーリング」を参照してください。

  • このエラーが頻繁に発生しないように、キャパシティブロックの終了時刻の 30 分前に Auto Scaling グループにスケールインしてください。キャパシティブロック終了時間の 30 分前にライフサイクルフックが完了していることを確認してください。詳細については、「機械学習ワークロードにはキャパシティブロックを使用してください。」を参照してください。

ELB システムのヘルスチェックが障害を検出してインスタンスのサービスが停止される

問題: Auto Scaling インスタンスが EC2 ステータスチェックに合格する場合があります。ただし、Auto Scaling グループが登録されている、ターゲットグループや Classic Load Balancer に対するElastic Load Balancing のヘルスチェックで失敗する可能性があります。

原因: Auto Scaling グループが Elastic Load Balancing によって提供されるヘルスチェックに依存している場合、Amazon EC2 Auto Scaling は、EC2 のステータスチェックと Elastic Load Balancing による ヘルスチェック両方の結果を確認することで、インスタンスのヘルスステータスを判断します。ロードバランサーは、各インスタンスにリクエストを送信して正しい応答を待つか、インスタンスとの接続の確立を試みることで、ヘルスチェックを実行します。インスタンスで実行するアプリケーションに問題があり、ロードバランサーがそのインスタンスを停止中と判断する場合、そのインスタンスは Elastic Load Balancing のヘルスチェックに失敗する場合があります。詳細については、「Auto Scaling グループのインスタンスのHealth チェック」を参照してください。

解決策 1Elastic Load Balancing のヘルスチェックに合格するには:

  • ロードバランサーで予期される成功コードを記録し、成功時にアプリケーションがそれらのコードを返すかを見て、適切な設定が行われていることを確認します。

  • ロードバランサーと Auto Scaling グループのセキュリティグループでの設定が適切であることを確認します。

  • ターゲットグループのヘルスチェックにおいて、適切な設定が行われていることを確認します。ロードバランサーのヘルスチェック設定は、ターゲットグループごとに定義します。

  • インスタンス上のアプリケーションがライフサイクルフックの終了時にロードバランサーに登録される前に、そのアプリケーションでトラフィックを受け入れる準備ができていることを確認するために、Auto Scaling グループに起動ライフサイクルフックを追加することも検討してください。

  • 新たに起動したインスタンスが正常であると Elastic Load Balancing が認識するために必要な、連続した正常なチェック結果の数を獲得するのに十分な時間に、Auto Scaling グループのヘルスチェック猶予期間を設定します。

  • ロードバランサーが Auto Scaling グループと同じアベイラビリティーゾーンに構成されていることを確認します。

詳細については、次のトピックを参照してください。

解決策 2: Auto Scaling グループを更新して、Elastic Load Balancing のヘルスチェックを無効にします。