質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

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

Tomcat

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

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

6094閲覧

AWSのターゲットグループのHealth StatusがRequest timed outとなるので解決したい(Tomcat Apache連携)

KNakamura

総合スコア1

Apache

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

Tomcat

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

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2021/09/22 09:38

編集2021/09/22 09:55

環境

Java
SpringBoot
AWS
(Route53により、別途取得したドメイン名を設定)
(ACMを用いてhttps化しています)
(EC2のOSはAmazon Linux使用)
Tomcat9 (EC2内)
Apache httpd 2.4.48(EC2内)

前提・実現したいこと

AWSのALBにて設定したターゲットグループのHealth StatusがRequest timed outとなるので解決したいです。

![イメージ説明

※ドメインURLをブラウザへ入力すると、
504 Gateway Time-outとなります。

※元々Tomcat単体で動かしていた時は問題ありませんでしたが、
Apache httpdと連携している時に当問題が発生しました。

TomcatとApache連携のために行ったこと

①EC2内 /etc/httpd/conf.modules.d/ 00-proxy.conf に下記記載

〜 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 〜

②EC2内 /etc/httpd/conf.d/proxy-ajp.confを新規作成し下記記載
(/etc/httpd/conf/httpd.confに「IncludeOptional conf.d/*.conf」の記載があることを確認)

ProxyRequests Off ProxyPass / ajp://Elastic IPアドレス:8009/ ProxyPassReverse / ajp://Elastic IPアドレス:8009/

③Tomcatのserver.xml設定

〜 以下コメントアウト <!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> 以下コメントアウト解除 <Connector protocol="AJP/1.3" port="8009" redirectPort="8443" secretRequired="false" /> 〜

補足情報

  • 以下の通りALBのリスナー設定を行い、http通信はhttpsへリダイレクトさせています。

イメージ説明

  • EC2のセキュリティグループのインバウンドルールは何度も確認し、以下の通りに設定しています。

イメージ説明

初学者のため恐れ入りますが、みなさまのお知恵をお貸しいただけますと幸甚です。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

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

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

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

yu_1985

2021/09/22 10:33

ProxyPassに設定するのをEIPではなくてlocalhostにしたら変わりますかね。 EIPを指定してしまうともう一度インターネットを経由するアクセスになっちゃうと思いますが。
yu_1985

2021/09/22 10:36

タイムアウトの原因はALBからのリクエストをわざわざインターネットを経由してもう一度EC2インスタンスにアクセスさせようとしているものの、渡している先のポートが8009で、そのポートはインターネットに向けては開放していないからではないかと思われますが、まずは↑の修正を試してみてください。
KNakamura

2021/09/23 05:54

yu_1985様 ありがとうございます! ご指摘の通り /etc/httpd/conf.d/ 内の proxy-ajp.conf を以下のように書き換え、解決しました!! ProxyRequests Off ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/ ターゲットグループのヘルスチェックはHealthyとなり、 ブラウザにURLを入力すればアプリにアクセスできるようになりました。 仰るとおり、ALBからのリクエストを再度インターネットを経由させEC2にアクセスさせていたのだと思います。自分で検証してみます。
guest

回答1

0

ベストアンサー

ALBは、ヘルスチェックエラーのターゲットに対してはリクエストを転送しません。

どこが原因でヘルスチェックに失敗しているのか、切り分ける必要があります。

原因切り分けの1例です。

ターゲットグループのヘルスチェック設定の情報がなかったので、次の設定であると仮定します。以降の説明はご自身の設定で置き換えてください。

イメージ説明

  1. ALB
  2. EC2
  3. ネットワーク(ALBとEC2の通信)

のどこに問題があるか切り分けます。

http://EC2のIPアドレス/healthにリクエストを送り、HTTPレスポンスのステータスが200であれば、EC2に問題はなく、原因は1,3のどちらかです。

ステータスが4xx5xxであれば、EC2に問題があるとわかります。

投稿2021/09/22 10:37

編集2021/09/22 10:42
jhashimoto

総合スコア838

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

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

KNakamura

2021/09/23 05:56

jhashimoto様 ありがとうございます! yu_1985様のご指摘により本問題は解決できましたが、 問題の切り分けの方法が非常に参考になりました。 今後またAWSで問題が発生した際に試させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問