LoginSignup
0
0

More than 3 years have passed since last update.

RailsアプリにELBを導入

Posted at

概略

RailsアプリをAWSでデプロイ後、ELBを導入し負荷分散を試みた。
AMIから2つ目のEC2インスタンスを作成し、ロードバランサーを作成。
しかし、2つ目のインスタンスのみ、ヘルスチェックでunhealthy。ターミナルからインスタンスへのログインは可能。

ログの確認

エラーとなっているEC2インスタンスでログを確認。
catコマンドだと膨大な量になるので、自分はtail -n (行数) などで確認した。

/var/www/アプリ名/current/log/production.log
ActionView::Template::Error (Webpacker can't find application in /var/www/kangolog/releases/20210112152601/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
   unless you are using the `webpack -w` or the webpack-dev-server.

webpackのエラーかな?

bundle exec cap productionした際のログを確認

コンパイルのログがない!

RAILS_ENV=production bundle exec rails webpacker:compile
して見たが、
Everything's up-to-date. Nothing to do
となり、もちろん挙動も変わらず、、、むむむ。

解決方法

サーバーの指定の問題でした。

config/deploy.production.rb
server 'Elastic IP', user: 'ec2-user', roles: %w{app db web}
server 'IP', user: 'ec2-user', roles: %w{app db web2}

なぜかwebとweb2に分けてしまっており、これが原因で2つ目のインスタンスのみデプロイされなかったようです。
以下に修正。

config/deploy/production.rb
server 'Elastic IP', user: 'ec2-user', roles: %w{app db web}
server 'IP', user: 'ec2-user', roles: %w{app db web}

学び

ローカル環境ではエラー画面で内容を教えてくれるので、ログを確認することが疎かになってました。
本番環境ではあの真っ赤なエラー画面がデフォルトでは出ないので、(当たり前のことですが)ログを確認するようになりました。

インフラ面の導入は、アプリ自体に変化は見えませんが、自分の中ではアプリが成長した実感がありなかなか楽しいです。
今まで触れてこなかったネットワークやセキュリティなど、web開発の土台となる部分の勉強になり、とても有意義でした!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0