• 現在、自分で作成し
    ているlaravelのサービスをデプロイしました。き...
  • guest 
    現在、自分で作成しているlaravelのサービスをデプロイしました。きちんと画面も表示され動いていたのですが、時間を置き、再度自分のサービスにアクセスすると、504 Gateway Time-outと表示されるようになりました。リロードしても表示が変わりません。これは何かインスタンスの設定などがおかしいのでしょうか?
    回答 3

    ウェブカツコーチ 
    講師からの回答
    現在の構成(ALB⇔EC2)や画面が表示されて動いていたことを考えますと、ALBのタイムアウト値が短い可能性があると思われます。
    以下のURLを参考にしてタイムアウト値を延ばして(例:60から300へ変更)解消されるか試してはいかがでしょうか。
    https://qiita.com/nagaakihoshi/items/f7326978221ee053d208

    インスタンス側で問題がある場合、ALB⇔EC2との通信が取れていない状態(ヘルスチェックでunhealthyとなる)、
    Apache側でアクセス制御設定等といったケースが考えられます。
    こちらについてはApacheのログ等で確認が可能です。


    お手数ですが、ご確認の程よろしくお願いいたします。

    guest 
    アドバイスに従い、まずALBのタイムアウト値を伸ばしてみましたが、504エラーが表示されました。
    そのため、インスタンス側に問題があると考え、webサーバーに対応しているターゲットグループを見てみたところ、Health statusがunhealthy 、Health status detailsがRequest timed outとなっていました。

    こちらが原因のような気がしますが、ターゲットグループの設定を変更する必要があるのでしょうか?

    ちなみにドメイン名ではアクセスできませんが、webサーバーのインスタンスのElastic IPアドレスだときちんと表示されます。

    ウェブカツコーチ 
    講師からの回答
    ----
    そのため、インスタンス側に問題があると考え、webサーバーに対応しているターゲットグループを見てみたところ、Health statusがunhealthy 、Health status detailsがRequest timed outとなっていました。

    こちらが原因のような気がしますが、ターゲットグループの設定を変更する必要があるのでしょうか?
    ----

    まず、考えられるケースは、EC2のセキュリティグループの設定です。
    ALBでTCP443の通信を受け、ALBからEC2への通信許可が設定されていること(例:ターゲットグループで設定したProtocol設定がTCP80であることを確認後、EC2のセキュリティグループでTCP80の通信許可がされているかどうか)を確認します。また、Laravel側での通信設定(動画18:24~19:43)も合わせて確認してみてください。

    確認後、Apacheのアクセスログ(/var/log/httpd/access.log)を確認します。ここでHTTPステータス200が出力されていることを確認してみてください。

    -----
    ちなみにドメイン名ではアクセスできませんが、webサーバーのインスタンスのElastic IPアドレスだときちんと表示されます。
    -----

    ここから判断しますと、外部からEC2への通信は問題なしで、ALB→Webサーバの通信に問題があると推測しています。いかがでしょうか。
    もし、見当違いでしたら、ご指摘くださいませ。
    ※ドメイン名のAレコードにALBのエイリアスレコードが登録されていることを前提としています。

    よろしくお願いいたします。

    guest 
    アドバイスありがとうございます。

    結論から申し上げると、ドメイン名でアクセスすることができました。

    アドバイスにあった通り、EC2のセキュリティグループに問題があったようです。元々webサーバーのセキュリティグループにインバウンドルールを2つ設けていました。

    ①タイプ:カスタムTCP ポート範囲:49200 ソース:bastionサーバーのセキュリティグループID

    ②タイプ:HTTP ポート範囲:80 ソース:マイIP

    上記のような設定のため、ドメイン名でつながらなかったようです。

    そこで②のソースを0.0.0.0/0に変更したところ、ドメイン名でアクセスすることができました。

    これは、ソースを0.0.0.0/0にすることにより、どこからでもアクセスすることが可能になったため、ドメイン名でアクセスすることが可能になったという認識で間違いないでしょうか?



    ウェブカツコーチ 
    講師からの回答
    ありがとうございます。

    -------
    これは、ソースを0.0.0.0/0にすることにより、どこからでもアクセスすることが可能になったため、ドメイン名でアクセスすることが可能になったという認識で間違いないでしょうか?
    -------

    はい、このレッスンではドメイン名にALBのエイリアス名をルーティング先に設定(※詳しくはRoute53のレコードを確認してみてください)され、EC2のセキュリティグループでTCP80の接続許可設定がされることにより、ALBからの接続が可能になり、ドメイン名での接続ができるようになったという意味です。

    正確にはどのIPアドレスからでもアクセスが可能になっている状態ということが正しい言い方です。