EC2にデプロイしたServletにアクセスしようとすると504 Gateway Time-outになります
但しインスタンスを再起動し、ApacheとTomcatを起動した直後はアクセス出来ます
数分置いてアクセスすると上記のエラーが発生するという状態です
インスタンスへのアクセスはELBを介しています
情報が少なくて恐縮ですがご助力頂ければ幸いです
考えられるケースを挙げて下さるだけでもとても助かります
環境
Ec2 linux2
Apache Tomcat 9.0.29
Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。
Elastic Load Balancingは、Amazon社が提供する、 EC2インスタンス間で自動的にトラフィックの負荷分散を行うサービスです。
TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。
Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。
Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。
Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。
Elastic Load Balancingは、Amazon社が提供する、 EC2インスタンス間で自動的にトラフィックの負荷分散を行うサービスです。
TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。
Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。
Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。
0グッド
0クリップ
投稿2019/12/15 17:43
EC2にデプロイしたServletにアクセスしようとすると504 Gateway Time-outになります
但しインスタンスを再起動し、ApacheとTomcatを起動した直後はアクセス出来ます
数分置いてアクセスすると上記のエラーが発生するという状態です
インスタンスへのアクセスはELBを介しています
情報が少なくて恐縮ですがご助力頂ければ幸いです
考えられるケースを挙げて下さるだけでもとても助かります
Ec2 linux2
Apache Tomcat 9.0.29
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
[IPらしき数値] - - [16/Dec/2019:03:54:52 +0000] "GET / HTTP/1.1" 302 - "-" "ELB-HealthChecker/2.0"
が複数回続いたあとにエラーとなっているということは、ヘルスチェックに失敗していないでしょうか。
デフォルトであればヘルスチェックで正常とみなすステータスコードは200です。
にもかかわらずサーバが302(300番台はリダイレクトです)を返しているので、ヘルスチェックに失敗して応答が504になっているのでは、と思います。
確認を忘れていましたが、504エラーが出ているのはブラウザからアクセスしたときですか?
もしApacheのログの方に504が出ているのであれば、上記ではなくアプリかApacheかに問題があることになりますね。
ヘルスチェックに失敗しているのであれば、登録したインスタンスがUnhealthyになっているはずで、インスタンスまでリクエストが届いていないはずです。
コンソールのターゲットグループのところからステータスを確認してみてください。(CLBの場合はロードバランサーのところから)
ALB/NLBを使っている場合はターゲットグループなので、正常とみなすステータスコードを指定することが出来ます。
ターゲットからの正常なレスポンスを確認するために使用する HTTP コード。200~499 の間で値または値の範囲を指定できます。デフォルト値は 200 です。
CLBを使っている場合はステータスコードは指定できなかったと思うので、ヘルスチェックのほうのリクエストの仕方を200が返るようなリクエストにする必要があります。
そもそもの話ですが、302リダイレクトとなるのは想定した挙動でしょうか?
上記の通りの現象であれば302を正常とみなせばヘルスチェックは通るようになるかと思いますが、それが想定した挙動でないのであればヘルスチェックの意味がなくなってしまう(Healthyとは…)ので、302になっている理由を先に確認すべきです。
投稿2019/12/16 07:30
総合スコア7586
0
Tomcatのログを確認して Exception や Error を確認してみてください。
ELBのタイムアウトは60秒です。それより長い応答時間がかかる場合はタイムアウトをのばすか、プログラムの修正するなど検討してください。切り分け方は CloudWatchで、ELBのメトリクスを見て、HTTPCode_ELB_5XX (ELBが返した500番台のレスポンス) のカウントを見てあたりをつけてください
投稿2019/12/16 00:03
編集2019/12/16 00:07総合スコア1455
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/16 04:08
2019/12/16 06:40
2019/12/16 07:17
2019/12/16 08:09
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。