コンテナのヘルスチェックを使用して Amazon ECS タスク状態を判定する - Amazon Elastic Container Service

コンテナのヘルスチェックを使用して Amazon ECS タスク状態を判定する

タスク定義を作成するときに、コンテナのヘルスチェックを設定できます。ヘルスチェックは、コンテナ上でローカルに実行され、アプリケーションのヘルスと可用性を検証するコマンドです。

Amazon ECS コンテナエージェントは、タスク定義で指定されたヘルスチェックについてのみ、モニタリングとレポートを行います。Amazon ECS は、コンテナイメージに組み込みた Docker ヘルスチェックについても、コンテナ定義で指定されていない場合はモニタリングしません。コンテナ定義で指定されているヘルスチェックのパラメータは、コンテナイメージ内に存在する Docker ヘルスチェックを上書きします。

タスク定義でヘルスチェックが定義されると、コンテナはコンテナ内でヘルスチェックプロセスを実行し、終了コードを評価してアプリケーションのヘルスを判定します。

ヘルスチェックは以下のパラメータで構成されています。

  • コマンド – 正常かどうかを判定するためにコンテナが実行するコマンド。この文字列配列の先頭には、コマンド引数を直接実行するための CMD、またはコンテナのデフォルトシェルでコマンドを実行するための CMD-SHELL を付加できます。

  • 間隔 – 各ヘルスチェック間の時間間隔 (秒)。

  • タイムアウト – 失敗したと見なされるまでの、ヘルスチェックが正常に終了するのを待つ時間 (秒)。

  • 再試行回数 – コンテナが異常と見なされるまでに、失敗したヘルスチェックを再試行する回数。

  • 開始期間 – 失敗したヘルスチェックの再試行が最大回数に達する前に、コンテナにブートストラップするまでの時間を与えるオプションの猶予期間です。

タスク定義でヘルスチェックを指定する方法については、「ヘルスチェック」を参照してください。

以下はコンテナのヘルスステータスの取り得る値です。

  • HEALTHY — コンテナのヘルスチェックが正常に完了しました。

  • UNHEALTHY — コンテナのヘルスチェックが失敗しました。

  • UNKNOWN — コンテナのヘルスチェックが評価中か、定義されていない、または Amazon ECS にコンテナのヘルスチェックのステータスがありません。

ヘルスチェックコマンドはコンテナ上で実行されます。そのため、コンテナイメージにそのコマンドを入れる必要があります。

ヘルスチェックは、localhost または 127.0.0.1 にあるコンテナのループバックインターフェイスを介してアプリケーションに接続します。0 である終了コードは成功を示し、ゼロ以外の終了コードは失敗を示します。

コンテナのヘルスチェックを使用する際は、以下の点を考慮してください。

  • コンテナのヘルスチェックには、Amazon ECS コンテナエージェントのバージョン 1.17.0 以降が必要です。

  • コンテナのヘルスチェックは、Linux プラットフォームバージョン 1.1.0 以降、または Windows プラットフォームバージョン 1.1.0 以降を使用している場合、Fargate タスクでサポートされます。

Amazon ECS がタスクの正常性を判定する方法

タスクの正常性を判定するのに考慮されるのは、必須で、タスク定義にヘルスチェックコマンドが含まれているコンテナだけです。

次のルールが順番に評価されます。

  1. ある必須コンテナのステータスが UNHEALTHY の場合、そのタスクステータスが UNHEALTHY である。

  2. ある必須コンテナのステータスが UNKNOWN の場合、そのタスクステータスが UNKNOWN である。

  3. すべての必須コンテナのステータスが HEALTHY の場合、タスクステータスが HEALTHY である。

必須コンテナ 2 つでの次のタスクの正常性の例を挙げます。

コンテナ 1 の正常性 コンテナ 2 の正常性 タスクの正常性
UNHEALTHY UNKNOWN UNHEALTHY
UNHEALTHY HEALTHY UNHEALTHY
HEALTHY UNKNOWN UNKNOWN
HEALTHY HEALTHY HEALTHY

コンテナ 3 つでの次のタスクの正常性の例を挙げます。

コンテナ 1 の正常性 コンテナ 2 の正常性 コンテナ 3 の正常性 タスクの正常性
UNHEALTHY UNKNOWN UNKNOWN UNHEALTHY
UNHEALTHY UNKNOWN HEALTHY UNHEALTHY
UNHEALTHY HEALTHY HEALTHY UNHEALTHY
HEALTHY UNKNOWN HEALTHY UNKNOWN
HEALTHY UNKNOWN UNKNOWN UNKNOWN
HEALTHY HEALTHY HEALTHY HEALTHY

エージェントの切断がヘルスチェックに及ぼす影響

Amazon ECS コンテナエージェントが Amazon ECS サービスから切断されても、コンテナが UNHEALTHY ステータスに移行することはありません。これは、エージェントの再起動中や一時的に使用不可になっている間もコンテナが実行され続けるように設計されているためです。ヘルスチェックのステータスは、Amazon ECS エージェントからの「最後に受信した」レスポンスであるため、コンテナが切断前に HEALTHY であると見なされていた場合、エージェントが再接続されて新たにヘルスチェックが行われるまではそのステータスが残ります。コンテナのヘルスチェックのステータスについては、いかなる仮定もありません。