【AWS】ヘルスチェックが通らないを解決する【Fargate】

AWS
2024年4月
 123456
78910111213
14151617181920
21222324252627
282930  

こんにちは、咲矢です。

先日AWSにてFargateでタスクを起動したところ、ロードバランサーからのヘルスチェックでhealthyにならずに落ちてしまうという現象に遭遇しました。
そんな状況にハマったので、ぼくがRailsコンテナデプロイしたときの経験をもとに、
ヘルスチェックに関するチェックポイントを紹介したいと思います。

■ ヘルスチェックに失敗してしまう

アプリが正常に起動しているのに、ロードバランサーは許してくれない。
ヘルスチェックのパスも正しい。
少し待つと、ドレイニングになってタスクは削除。
規定のタスク数に足りないので新たにタスクを立ち上げ、また落ちる。

・・・

無限ループって怖くね?

タスクが一旦はランニングになるし、ログも問題なし。
にも関わらずヘルスチェックに失敗する。

さて、困った・・・!

■ ロードバランサーの設定

リスナーの設定は適切ですか?
ターゲットグループの選択は正しいですか?
まずはHTTP接続で適切なターゲットグループへ転送できるよう設定しましょう。

■ ターゲットグループの設定

セキュリティーグループの設定は適切ですか?
ソースは、特に制限する必要がなければ、インバウンドルールですべてからのアクセスを許可しましょう。(例:0.0.0.0/0)
タイプは設定に応じてHTTPもしくはHTTPSを設定。

ヘルスチェックの設定は厳しすぎないですか?
タスクが落ち続ける場合は、時間や回数の設定を甘くして変化があるか見てみましょう。

■ サービスの設定

ECSにてサービスの設定をする際、ロードバランサーを使用する場合、デフォルトだとヘルスチェックをパスできない場合があります。
それがヘルスチェックの猶予期間です。
ここが、デフォルトだと0になっています。
正直、あまり詳しくないので詳細はわかりませんが、ぼくの経験上ここが0だと、アプリが立ち上がる前にヘルスチェックでドレイニングになり、タスクが落ちてしまいます。
自分は280秒の設定でRailsが起動しています。
200秒ではダメでした。
環境にもよるでしょうが参考までに。

■ まとめ

今回はアプリが正常に起動しているにも関わらず、ヘルスチェックをパスできないという現象を解消する役に立てばと思い書きました。
ぼく自身、学習中にハンズオン通りに設定してもダメで、解決までに結構時間を取られました。
あくまで個人で、とりあえず動くアプリをデプロイするというレベルの対処ですが、初学者の皆様の参考になればと思います。

コメント

タイトルとURLをコピーしました