スキップしてコンテンツを表示

Fargateのタスクメンテナンスが行われた後ALBから接続できなくなる

0

ALB -> NGINX -> NLB -> Fargateのような構成でサービスを運用しております。

定期的に行われるECSのタスクパッチ(ElasticContainerService task patching retirement)でサービス中のタスク3個中1つずつ1日ごとに自動でタスクの終了と開始が行われます。その際に、更新された3タスク中の2タスクほどの頻度で自動起動されたタスクへALBからの接続が非正常なホストとなり繋がらなくなります。この状態になった場合、更新されたタスクを削除(AutoScallingしているため終了したタスクは再度作成される)すると問題は発生しなくなります。

また、自動メンテナンスで問題が発生するため、手動でデプロイを事前に行うとその際には同様の問題は発生しません。

このような事象は解決できる策はありますでしょうか。

質問済み 1年前178ビュー
1回答
0

この問題は、Fargateタスクの更新後にApplication Load Balancer (ALB)からの接続が正常に確立されない状況を示しています。以下のような対策を検討することができます:

  1. ヘルスチェックの設定を見直す: ALBのヘルスチェック設定を確認し、適切な間隔、タイムアウト、しきい値を設定してください。新しいタスクが完全に起動し、アプリケーションが準備できるまでの十分な時間を確保することが重要です。

  2. コンテナの起動時間を最適化: コンテナの起動プロセスを最適化し、アプリケーションが迅速に準備できるようにしてください。これにより、ALBがヘルスチェックを行う前にアプリケーションが完全に起動する可能性が高くなります。

  3. グレースフルシャットダウンの実装: タスクが終了する際に、進行中のリクエストを適切に処理できるようにグレースフルシャットダウンを実装してください。これにより、タスクの更新中のサービス中断を最小限に抑えることができます。

  4. デプロイ設定の調整: ECSサービスのデプロイ設定を見直し、ローリングアップデートの戦略を最適化してください。例えば、最小ヘルスパーセンテージと最大パーセンテージを調整して、更新プロセスをより制御可能にすることができます。

  5. コネクションドレイニングの活用: ALBのコネクションドレイニング機能を使用して、既存の接続が適切に終了するまでタスクを維持してください。これにより、タスクの更新中のサービス中断を減らすことができます。

  6. モニタリングとログの強化: CloudWatchなどを使用して、タスク更新プロセス中のメトリクスとログを詳細に監視してください。これにより、問題の根本原因をより正確に特定し、適切な対策を講じることができます。

  7. Network Load Balancer (NLB)の設定確認: NLBの設定、特にターゲットグループの設定を確認し、新しいタスクが適切に登録され、トラフィックを受け取れるようになっているか確認してください。

これらの対策を組み合わせることで、Fargateタスクの自動メンテナンス後の接続問題を軽減できる可能性があります。問題が解決しない場合は、AWSサポートに詳細な調査を依頼することも検討してください。
Sources
Introducing NLB TCP configurable idle timeout | Networking & Content Delivery
FargateDetails - Amazon GuardDuty

回答済み 1年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ