やりたいこと
Amazon-ALBとECSを紐付け、HTTP通信ができるようにしたいです。
ECSのコンテナはNginxとPuma、Postgresqlで構成されています。
エラー内容
ロードバランシングのターゲットグループに上記のEC2インスタンスを登録したところ、
statusが「unhealthy」と表示されています。
確認したこと
・ECSにSSH接続し、さらにNginxコンテナの中でcurl localhost:80
を入力したところ、
期待した内容が返ってきました。そのため、Nginx-Puma-Postgres間は問題ないと考えています。
・次に、ECSのインバウンドに不備があると考え、下記のように設定しました。
ただ、結果は「unhealthy」のままでした。
|タイプ|プロトコル|ポート範囲|ソース|
|:--|:--:|--:|
|HTTP|TCP|80|0.0.0.0/0|
|すべてのTCP|TCP|0 - 65535|sg-xxxxxx(ロードバランサのセキュリティーグループ)|
|SSH|TCP|22|0.0.0.0/0|
・また、ALBとNginx間のタイムアウトが原因で接続が切れているのかと思い、
ALBのアイドルタイムアウトを「60秒」、
Nginxのkeepalive_timeoutを「65秒」に設定したのですが、これもエラー解消には繋がりませんでした。
Nginxの設定はこちらになります
# プロキシ先の設定 upstream backend { server unix:///app/tmp/sockets/puma.sock; } server { listen 80; server_name ElasticIPアドレス; keepalive_timeout 65; error_log /var/log/nginx.error.log; access_log /var/log/nginx.access.log; root /app/public; try_files $uri/index.html $uri.html $uri @app; location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://backend; } client_max_body_size 4G; error_page 500 502 503 504 /500.html; location = /500.html { root /app/public; } }
お聞きしたいこと
ロードバランサとNginx間に問題があるとは思うのですが、その詳細まではわかりませんでした。
次に何を確認すべきかアドバイスいただけないでしょうか。よろしくお願いします。
環境
Ruby: 2.7.1
Rails: 6.0.3.5
参考にさせていただいている記事
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。