こんにちはますのです。
コンテナを触ったことが無いわたしにも触る機会が舞い降りてきました。
AWSのAmazon ECS内:クラスター、クラスターサービスを構築します。
既存環境を見ながら設定をしていく簡単な作業です。
しかし、そう思ったのも束の間。
パラメータ値が同じなのに、現行では出ないトラブルが発生。
この現象あるあるですが勘弁してほしいものです…。
目次
ECS構築時トラブルの概要
- GitHub Actionsでのデプロイログは成功している
- ALBでターゲットグループのHealth checkが、Unhealthyの1→0を繰り返す状態
- ECSクラスターサービスでコンテナが起動→終了→起動で無限ループしている
ECS クラスターサービス上のログを確認
ELBのヘルスチェックに失敗していることが原因の様子…。
しかし、ALBのヘルスチェックの時間を延ばしても変化は起きませんでした。
停止理由:Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/container/123456123456abc)
原因:コンテナサービス側のヘルスチェックの猶予期間が短かった
色々とサイトを見ていたところ、ECSクラスタ>サービスの「ヘルスチェックの猶予期間」が短いことが原因でした。
※最初に0→180(3分)に変更して変化が無かったのが調査に長引いた要因に…。
ECSサービスがヘルスチェックに失敗→削除→再作成の無限ループを生んでいた
事の流れとしてはこんな感じのようです。
- ECS Fargateがコンテナを起動
- デプロイを頑張る
- 頑張っている最中に「ヘルスチェックの猶予期間」が期限となる
- 失敗してると判断されて環境が削除される
- 必要数に足りないので再度環境のデプロイを頑張る 以降繰り返し…。
そのため、ずっとデプロイと削除を繰り返し行う動きになっていたようですね。
最後はECS側の「ヘルスチェックの猶予期間」を3600秒(60分)にまで延長したらうまく行きました。
既存環境と同じ構成なのにデプロイに時間が掛かる原因は分かりませんでした。
以降は特に影響出ていないので、問題無いと判断してこのまま走らせることを決意したのであります。
以降は特に影響出ていないので、問題無いと判断してこのまま走らせることを決意したのであります。
参考サイト
AWS ECSにて、サービスで実行したタスクが3分置きに停止してしまう原因がわからない
https://teratail.com/questions/262962