🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Elastic Load Balancing

Elastic Load Balancingは、Amazon社が提供する、 EC2インスタンス間で自動的にトラフィックの負荷分散を行うサービスです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

2回答

15155閲覧

AWSのインスタンスにアクセスすると504 Gateway Time-outになる

jiro-sima

総合スコア20

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Elastic Load Balancing

Elastic Load Balancingは、Amazon社が提供する、 EC2インスタンス間で自動的にトラフィックの負荷分散を行うサービスです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

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ページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

  1. apahce -> tomcat の連携でエラーが出てる気がします。

Tomcatのログを確認して Exception や Error を確認してみてください。

  1. ELB -> apache の通信でタイムアウトしている可能性もあります。

ELBのタイムアウトは60秒です。それより長い応答時間がかかる場合はタイムアウトをのばすか、プログラムの修正するなど検討してください。切り分け方は CloudWatchで、ELBのメトリクスを見て、HTTPCode_ELB_5XX (ELBが返した500番台のレスポンス) のカウントを見てあたりをつけてください

投稿2019/12/16 00:03

編集2019/12/16 00:07
take88

総合スコア1467

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jiro-sima

2019/12/16 04:08

回答ありがとうございます まだ解決には至っていませんが進展があったのでお伝えしておきます httpdのアクセスログを監視していたところ、 [IPらしき数値] - - [16/Dec/2019:03:54:52 +0000] "GET / HTTP/1.1" 302 - "-" "ELB-HealthChecker/2.0" が5回ほどまとまって出力されたときに504となることが分かりました 特定のServletを叩いたときに起こる訳ではない、 コンソールではインスタンスに接続出来ている、 tomcatとhttpdのstatusはactive(running)であることから ELBが原因の線が濃いようです
yu_1985

2019/12/16 06:40

使っているのはALBではなくCLBでしょうか?
yu_1985

2019/12/16 07:17

すいません、聞いたあとに気づきましたがどちらにせよ考慮すべきことは大きく変わらなかったですね…。 回答の方に書きます。
take88

2019/12/16 08:09

yu_1985 さんの回答を私も支持します。 LB のヘルスチェックによって、EC2インスタンスが不健全(Unhealthy)状態にマークされてしまったため、504になってるというのが 正解っぽいですね。(通常、不健全化するのに 数分間かかります) LB のヘルスチェックの設定を見直してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問