Amazon ECS のサービスロードバランサーのトラブルシューティング
Amazon ECS サービスは、Elastic Load Balancing のロードバランサーにタスクを登録することができます。ロードバランサーの設定エラーは、タスクが停止された一般的な原因です。ロードバランサーを使用するサービスによって停止されたタスクが開始された場合は、以下の原因が考えられます。
- Amazon ECS サービスにリンクされたロールは存在しません
-
Amazon ECS サービスにリンクされたロールを使用すると、Amazon ECS サービスが Elastic Load Balancing ロードバランサーにコンテナインスタンスを登録できます。サービスにリンクされたロールはアカウントに作成される必要があります。詳細については、「Amazon ECS のサービスリンクロールの使用」を参照してください。
- コンテナインスタンスのセキュリティグループ
-
コンテナがコンテナインスタンスのポート 80 にマッピングされている場合、コンテナインスタンスのセキュリティグループでは、ロードバランサーのヘルスチェックに合格するように、ポート 80 上の受信トラフィックを許可する必要があります。
- 一部のアベイラビリティゾーンで、Elastic Load Balancing ロードバランサーが設定されていません
-
リージョン内のすべてのアベイラビリティーゾーンを使用するように、または少なくとも、コンテナインスタンスが存在するすべてのアベイラビリティーゾーンを使用するように、ロードバランサーが設定されている必要があります。サービスでロードバランサーを使用し、ロードバランサーを使用するように設定されていないアベイラビリティーゾーンにあるコンテナインスタンスでタスクが開始されると、そのタスクはヘルスチェックに合格できません。これにより、タスクは強制終了されます。
- Elastic Load Balancing ロードバランサー ヘルスチェックが正しく設定されていません
-
ロードバランサーのヘルスチェックパラメータが過度に制限されているか、存在しないリソースを指している可能性があります。コンテナインスタンスが異常であると判断されると、そのコンテナインスタンスはロードバランサーから削除されます。以下のパラメータがサービスロードバランサーに対して正しく設定されていることを確認してください。
- ping ポート
-
ロードバランサーのヘルスチェックの [Ping Port (ping ポート)] 値は、ロードバランサーが正常であるかどうかを判断するために確認するコンテナインスタンス上のポートです。このポートの設定が正しくないと、多くの場合、ロードバランサーからコンテナインスタンスが登録解除されます。このポートは、ヘルスチェックで使用しているサービスのタスク定義内のコンテナで
hostPort
値を使用するように設定する必要があります。 - ping パス
-
これはロードバランサーのヘルスチェックの一部です。これは、アプリケーションが正常な場合に、成功のステータスコード (200 など) を返すことができる、アプリケーション上のエンドポイントです。この値はよく
index.html
に設定されることがありますが、サービスがそのリクエストに応答しない場合、ヘルスチェックは失敗します。コンテナにindex.html
ファイルがない場合は、これを/
に設定して、コンテナインスタンスのベース URL をターゲットにすることができます。 - 応答タイムアウト
-
これは、コンテナがヘルスチェック ping に対する応答を返す必要のある時間です。この値が応答に必要な時間よりも短い場合、ヘルスチェックは失敗します。
- ヘルスチェック間隔
-
これは、ヘルスチェック ping 間の時間です。ヘルスチェックの間隔が短くなるほど、コンテナインスタンスが [Unhealthy Threshold (非正常のしきい値)] に達するのが速くなります。
- 非正常のしきい値
-
これは、コンテナインスタンスが異常と見なされるまでに、ヘルスチェックが失敗できる回数です。異常と見なされるまでのしきい値が 2、ヘルスチェックの間隔が 30 秒の場合、コンテナインスタンスが異常と見なされるまでに、タスクはヘルスチェック ping に 60 秒間応答します。異常と見なされるまでのしきい値を増やすか、ヘルスチェックの間隔を長くすると、タスクが ping に応答する時間が長くなります。
servicename
サービスを更新できません: タスク定義でロードバランサーのコンテナ名またはポートが変更されました-
サービスでロードバランサーを使用している場合は、AWS CLI または SDK を使用してロードバランサーの設定を変更できます。設定の変更方法の詳細については、「Amazon Elastic Containers サービス API リファレンス」の UpdateService を参照してください。サービスのタスク定義を更新する場合は、ロードバランサー設定で指定されたコンテナ名とコンテナポートはタスク定義のままにしておく必要があります。
- 同時に実行できるタスク数の上限に達しました。
-
新しいアカウントの場合、クォータがサービスクォータよりも低くなることがあります。Service Quotas コンソールでは、アカウントのサービスクォータを表示できます。クォータの引き上げをリクエストするには、Service Quotas ユーザーガイド の「クォータ引き上げリクエスト」を参照してください。