翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Auto Scaling グループのヘルスチェックについて
このトピックでは、使用可能なヘルスチェックタイプの概要と、Amazon EC2 Auto Scaling ヘルスチェックをアプリケーションと統合する際の主な考慮事項について説明します。
内容
ヘルスチェックタイプ
Amazon EC2 Auto Scaling は、以下のヘルスチェックの 1 つ、または複数を使用することで、InService
インスタンスのヘルスステータスを判断できます。
ヘルスチェックタイプ | チェックする事柄 |
---|---|
Amazon EC2 ステータスチェックと予定されているイベント |
これは、Auto Scaling グループに対するデフォルトのヘルスチェックタイプです。 |
Elastic Load Balancing のヘルスチェック |
このヘルスチェックタイプを実行するには、Auto Scaling グループに対してこのタイプを有効にする必要があります。 |
VPC Lattice ヘルスチェック |
このヘルスチェックタイプを実行するには、Auto Scaling グループに対してこのタイプを有効にする必要があります。 |
Amazon EBS ヘルスチェック |
このヘルスチェックタイプを実行するには、Auto Scaling グループに対してこのタイプを有効にする必要があります。 |
カスタムヘルスチェック |
|
Amazon EC2 ヘルスチェック
インスタンスが起動されると、インスタンスは Auto Scaling グループにアタッチされ、InService
状態になります。Auto Scaling グループ内のインスタンスの異なるライフサイクル状態に関する詳細については、「Amazon EC2 Auto Scaling インスタンスのライフサイクル」を参照してください。
Amazon EC2 Auto Scaling は、Auto Scaling グループ内のすべてのインスタンスのヘルスステータスを定期的にチェックすることで、それらが実行中で良好な状態であることを確認します。
ステータスチェック
Amazon EC2 Auto Scaling は、Amazon EC2 インスタンスのステータスチェックとシステムステータスチェックの結果を使用して、インスタンスのヘルスステータスを判断します。インスタンスが running
以外の Amazon EC2 状態である場合、またはステータスチェックのステータスが impaired
になった場合、Amazon EC2 Auto Scaling はインスタンスを異常であると見なし、そのインスタンスを置き換えます。これには、インスタンスが以下のいずれかの状態にある場合が含まれます。
-
stopping
-
stopped
-
shutting-down
-
terminated
Amazon EC2 ステータスチェックに特別な設定は必要なく、常に有効になっています。詳細については、「Amazon EC2 ユーザーガイド」の「ステータスチェックのタイプ」を参照してください。
重要
Amazon EC2 Auto Scaling は、何のアクションも実行せずにステータスチェックを不合格にすることがあります。ステータスチェックが不合格になると、Amazon EC2 Auto Scaling は AWS が問題を解決するまで数分待機します。ステータスチェックのステータスが impaired
になっても、インスタンスは直ちに Unhealthy
としてマークされません。
ただし、インスタンスが running
状態ではなくなったことを Amazon EC2 Auto Scaling が検出すると、この状況は即時不合格として扱われます。この場合、インスタンスは直ちに Unhealthy
としてマークされ、置き換えられます。
予定されているイベント
Amazon EC2 は、インスタンスのイベントを、特定のタイムスタンプ後に実行されるようにスケジュールすることがあります。詳細については、「Amazon EC2 ユーザーガイド」の「インスタンスの予定されているイベント」を参照してください。
インスタンスのいずれかが予定されているイベントの影響を受ける場合、Amazon EC2 Auto Scaling は、そのインスタンスを異常と見なして置き換えます。インスタンスのシャットダウンは、タイムスタンプで指定された日付と時刻に到達するまで開始されません。
Elastic Load Balancing のヘルスチェック
Auto Scaling グループに対して Elastic Load Balancing ヘルスチェックを有効にすると、Amazon EC2 Auto Scaling はこれらのヘルスチェックの結果を使用して、インスタンスのヘルスステータスを判断できます。
Auto Scaling グループに対して Elastic Load Balancing ヘルスチェックを有効にする前に、Elastic Load Balancing ロードバランサーを設定し、インスタンスが正常かどうかを判断するためのヘルスチェックを設定する必要があります。詳細については、「Elastic Load Balancing ロードバランサーをアタッチする準備をする」を参照してください。
ロードバランサーを Auto Scaling グループにアタッチすると、次のようになります。
-
Amazon EC2 Auto Scaling が、Auto Scaling グループ内のインスタンスをロードバランサーに登録します。
-
インスタンスの登録が終了すると、インスタンスは
InService
状態になり、ロードバランサーで使用できるようになります。
デフォルトで、Amazon EC2 Auto Scaling は Elastic Load Balancing ヘルスチェックの結果を無視しますが、Auto Scaling グループに対してこれらのヘルスチェックを有効にした後、登録されたインスタンスを Elastic Load Balancing が Unhealthy
と報告すると、Amazon EC2 Auto Scaling は、次回の定期ヘルスチェックでそのインスタンスを Unhealthy
とマークし、置き換えます。
ロードバランサーに対して Connection Draining が有効になっている場合、Amazon EC2 Auto Scaling は、処理中のリクエストが完了するまで、または最大タイムアウト時間が終了するまで待機してから、異常なインスタンスを終了します。
注記
ロードバランサーをアタッチして Auto Scaling グループについての Elastic Load Balancing ヘルスチェックを有効にする方法については、「Auto Scaling グループに Elastic Load Balancing ロードバランサーをアタッチする」を参照してください。
グループに対して Elastic Load Balancing ヘルスチェックを有効にすると、Amazon EC2 Auto Scaling は、Elastic Load Balancing から異常として報告されたインスタンスを置き換えることができます。ただし、置き換えは、ロードバランサーが InService
状態になってから行われます。詳細については、「ロードバランサーのアタッチメントステータスを確認する」を参照してください。
VPC Lattice ヘルスチェック
デフォルトでは、Amazon EC2 Auto Scaling は、VPC Lattice ヘルスチェックの結果を無視します。オプションで、Auto Scaling グループに対してこれらのヘルスチェックを有効にできます。これらのヘルスチェックを有効化した後、VPC Lattice が登録されたインスタンスを Unhealthy
として報告すると、Amazon EC2 Auto Scaling は、次回の定期ヘルスチェックでそのインスタンスを Unhealthy
としてマークし、置き換えます。インスタンスを登録してからその状態をチェックする処理は、Elastic Load Balancing ヘルスチェックの仕組みと同じです。
注記
VPC Lattice ターゲットグループをアタッチし、Auto Scaling グループに対して VPC Lattice ヘルスチェックを有効にする方法については、「VPC Lattice ターゲットグループを Auto Scaling グループにアタッチする」を参照してください。
グループに対して VPC Lattice ヘルスチェックを有効にすると、Amazon EC2 Auto Scaling は、VPC Lattice から異常として報告されたインスタンスを置き換えることができます。ただし、置き換えは、ターゲットグループが InService
状態になってから行われます。詳細については、「VPC Lattice ターゲットグループのアタッチメントステータスを確認する」を参照してください。
Amazon EC2 Auto Scaling によってダウンタイムが最小限に抑えられる仕組み
デフォルトでは、新しいインスタンスは既存のインスタンスが終了すると同時にプロビジョニングされるため、新しいインスタンスが完全に動作するまで、新しいリクエストが受け入れられなくなる可能性があります。
Amazon EC2 Auto Scaling は、実行されていない (つまり set-instance-health コマンドで Unhealthy
とマークされた) インスタンスがあることを認識すると、それらを直ちに置き換えます。ただし、他のインスタンスが異常である場合、Amazon EC2 Auto Scaling は不合格状態からの回復に以下のアプローチを使用します。このアプローチは、一時的な問題、または誤設定されたヘルスチェックが原因で発生する可能性があるダウンタイムを最小限に抑えます。
-
スケーリングアクティビティが進行中で、Auto Scaling グループのキャパシティが希望するキャパシティより 10% 以上少ない場合、Amazon EC2 Auto Scaling は、進行中のスケーリングアクティビティの終了を待ってから、異常なインスタンスを置き換えます。
-
スケールアウト時、Amazon EC2 Auto Scaling はインスタンスが最初のヘルスチェックに合格するのを待ちます。また、デフォルトのインスタンスウォームアップが完了するのを待って、新しいインスタンスの準備が整っていることも確実にします。
-
インスタンスがウォームアップを完了し、グループのキャパシティが希望するキャパシティの 90% を超えると、Amazon EC2 Auto Scaling は以下のように異常なインスタンスを置き換えます。
-
Amazon EC2 Auto Scaling が一度に置き換えるインスタンスはグループの希望容量の最大 10% のみで、異常なインスタンスのすべてが置き換えられるまで続行されます。
-
インスタンスを置き換えるときは、新しいインスタンスが最初のヘルスチェックに合格するのを待ちます。また、デフォルトのインスタンスウォームアップが完了するのも待ち、完了後に続行します。
-
注記
10% の値が結果として 1 未満になるほど Auto Scaling グループのサイズが小さい場合、通常と異なり、Amazon EC2 Auto Scaling は異常なインスタンスを一度に 1 つずつ置き換えます。これは、グループのダウンタイムの原因になる可能性があります。
また、Auto Scaling グループ内のすべてのインスタンスが異常であると Elastic Load Balancing ヘルスチェックが報告し、ロードバランサーが InService
状態である場合、Amazon EC2 Auto Scaling は一度に異常としてマークするインスタンス数を減らすことがあります。そうすることで、他のシナリオに適用される 10% よりも、一度に置き換えられるインスタンスの数を大幅に削減することができます。これにより、問題を修正する時間が確保され、Amazon EC2 Auto Scaling がグループ全体を自動的に終了することはありません。
ウォームプール内のインスタンスのヘルスチェック
Amazon EC2 Auto Scaling はウォームプール内のインスタンスのヘルスチェックも行います。詳細については、「ヘルスチェックのステータスとヘルスチェックの失敗理由を表示する」を参照してください。
ヘルスチェックの考慮事項
Amazon EC2 Auto Scaling ヘルスチェックを使用する際の考慮事項を次に示します。
-
終了処理中のインスタンス、または起動中のインスタンスで何かを実行する必要がある場合は、ライフサイクルフックを使用することができます。これらのフックを使用すると、Amazon EC2 Auto Scaling がインスタンスを起動または終了する時点で、カスタムアクションを実行できます。詳細については、「Amazon EC2 Auto Scaling のライフサイクルフック」を参照してください。
-
Amazon EC2 Auto Scaling は、そのヘルスチェックから Amazon EC2 ステータスチェックと予定されているイベントを削除する方法を提供しません。インスタンスが置き換えられないようにしたい場合は、個々の Auto Scaling グループについて
ReplaceUnhealthy
プロセスとHealthCheck
プロセスを停止することをお勧めします。詳細については、「Amazon EC2 Auto Scaling プロセスの停止と再開」を参照してください。 -
異常なインスタンスのヘルスステータスを手動で
Healthy
に戻す場合は、set-instance-health コマンドの使用を試みることができます。エラーが発生する場合、その原因はインスタンスが既に終了中であるためだと考えられます。通常、set-instance-health コマンドを使用してインスタンスのヘルスステータスをHealthy
に戻すことは、ReplaceUnhealthy
プロセスまたはTerminate
プロセスが停止している場合にのみ有効です。 -
ヘルスチェックの影響を受けずにインスタンスのトラブルシューティングが必要な場合は、インスタンスを
Standby
状態にすることができます。Amazon EC2 Auto Scaling は、Standby
状態のインスタンスに対して、そのインスタンスを稼働状態に戻すまではヘルスチェックを実行しません。詳細については、「Auto Scaling グループからインスタンスを一時的に削除する」を参照してください。 -
インスタンスを削除すると、関連付けられたすべての Elastic IP アドレスは関連付けを解除され、新しいインスタンスと自動的に関連付けられることはありません。これらの Elastic IP アドレスと新しいインスタンスは、手動で関連付けるか、ライフサイクルフックベースのソリューションを使用して自動的に関連付ける必要があります。詳細については、「Amazon EC2 ユーザーガイド」の「Elastic IP アドレス」を参照してください。
-
同様に、インスタンスが終了されると、それにアタッチされている EBS ボリュームがデタッチ (または、ボリュームの
DeleteOnTermination
属性に応じて削除) されます。これらの EBS ボリュームは、新しいインスタンスに手動でアタッチするか、ライフサイクルフックベースのソリューションを使用して自動的にアタッチする必要があります。詳細については、「Amazon EBS ユーザーガイド」の「インスタンスへの Amazon EBS ボリュームのアタッチ」を参照してください。