Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

サービスロードバランサーのトラブルシューティング

Amazon ECS サービスではタスクを Elastic Load Balancing ロードバランサーに登録できます。ロードバランサーの設定エラーは、タスクが停止された一般的な原因です。ロードバランサーを使用するサービスによって停止されたタスクが開始された場合は、以下の原因が考えられます。

重要

コンテナヘルスチェックは、Classic Load Balancer を使用するように設定されたサービスの一部であるタスクではサポートされていません。Amazon ECS サービススケジューラでは、Classic Load Balancer の背後で実行されている UNHEALTHY 状態のタスクは無視されます。

ecsServiceRole IAM ロールの IAM アクセス権限が適切でない

ecsServiceRole により、Amazon ECS サービスではコンテナインスタンスを Elastic Load Balancing ロードバランサーに登録できます。このロールに適切なアクセス権限が設定されている必要があります。詳細については、「Amazon ECS サービススケジューラ IAM ロール」を参照してください。

コンテナインスタンスのセキュリティグループ

コンテナがコンテナインスタンスのポート 80 にマッピングされている場合、コンテナインスタンスのセキュリティグループでは、ロードバランサーのヘルスチェックに合格するように、ポート 80 上の受信トラフィックを許可する必要があります。

すべてのアベイラビリティーゾーンを使用するように Elastic Load Balancing ロードバランサーが設定されていない

リージョン内のすべてのアベイラビリティーゾーンを使用するように、または少なくとも、コンテナインスタンスが存在するすべてのアベイラビリティーゾーンを使用するように、ロードバランサーを設定する必要があります。サービスでロードバランサーを使用している場合、ロードバランサーを使用するように設定されていないアベイラビリティーゾーンにあるコンテナインスタンスでタスクが開始されると、そのタスクはヘルスチェックに合格せず、強制終了されます。

Elastic Load Balancing ロードバランサーのヘルスチェックの設定が正しくない

ロードバランサーのヘルスチェックパラメータが過度に制限されているか、存在しないリソースを参照している可能性があります。コンテナインスタンスが異常であると判断されると、そのコンテナインスタンスはロードバランサーから削除されます。以下のパラメータがサービスロードバランサーに対して正しく設定されていることを確認してください。

ping ポート

ロードバランサーのヘルスチェックの [Ping Port (ping ポート)] 値は、ロードバランサーが正常であるかどうかを判断するために確認するコンテナインスタンス上のポートです。このポートの設定が正しくないと、多くの場合、ロードバランサーからコンテナインスタンスが登録解除されます。このポートは、サービスのタスク定義内のヘルスチェック用のコンテナで hostPort 値を使用するように設定する必要があります。

ping パス

この値は index.html に設定されることがよくありますが、サービスがそのリクエストに応答しない場合、ヘルスチェックは失敗します。コンテナに index.html ファイルがない場合は、このファイルを / に設定して、コンテナインスタンスのベース URL をターゲットにすることができます。

応答タイムアウト

これは、コンテナがヘルスチェック ping に対する応答を返す必要のある時間です。この値が応答に必要な時間よりも短い場合、ヘルスチェックは失敗します。

ヘルスチェック間隔

これは、ヘルスチェック ping 間の時間です。ヘルスチェックの間隔が短くなるほど、コンテナインスタンスが [Unhealthy Threshold (非正常のしきい値)] に達するのが速くなります。

非正常のしきい値

これは、コンテナインスタンスが異常と見なされるまでに、ヘルスチェックが失敗できる回数です。異常と見なされるまでのしきい値が 2、ヘルスチェックの間隔が 30 秒の場合、コンテナインスタンスが異常と見なされるまでに、タスクはヘルスチェック ping に 60 秒間応答します。異常と見なされるまでのしきい値を増やすか、ヘルスチェックの間隔を長くすると、タスクが ping に応答する時間が長くなります。

Unable to update the service servicename: Load balancer container name or port changed in task definition

サービスでロードバランサーを使用する場合、サービスの作成時に定義したロードバランサー設定は変更できません。サービスのタスク定義を更新する場合、サービスの作成時に指定したコンテナ名とコンテナポートは、タスク定義のままにしておく必要があります。

ロードバランサー名、コンテナ名、またはサービスロードバランサー設定に関連付けられたコンテナポートを変更するには、新しいサービスを作成する必要があります。