バックエンドはLaravel、フロントエンドはvue、Webサーバはnginx、のアプリケーションをECSで稼働させる業務をした。 そこでハマったことを書いておく。 結局のところnginxの設定が一番ハマった。ローカルで動くんだからECSでも同じ感じで動くだろと思ってたらAWSやドメインなどでハマった。特にnginxまで届いてるのか、ALBあたりでこけてるのかの切り分けができてなかったのでちょっとハマった。
healthチェックを甘く考えていた
ターゲットグループにhealthチェックがあってデフォルトパスが/なのだけれどもECSにデプロイした直後に問題なく動くのは稀でエラーになりつつ調査する流れになるのだが、/
が404などのエラーになるとサービスが30秒ぐらいで落ちてしまい503が返ってくる。サービスにaws execでログインできないので中にも入れなくて詰んでた。解決方法としてはhealthチェックパスを/health_check
などにして、nginxにもlocation health_check
などのルートを設定してとりあえずhealthチェックを通すことが大事。これはECSに限らずの話ではあるが、なかなか時間を溶かしてしまったのでhealth_checkをとりあえず通すことはとても大事です。
nginxなかなかなめてたのでnginx実践ガイドという書籍買ったので勉強していく。