CentOS5上でRuby on RailsアプリをApacheで動かす
移転しました。
最近は
勉強会参加者の8割が「Apache2.2 + mod_proxy_balancer + mongrel(cluster)」という構成で運用していた。これが現在の日本の Rails 運用のデファクトぽいので、迷ったらこの構成がよいだろう。
参考URL
http://wota.jp/ac/?date=20070520#p03
らしいので、「Apache2.2 + mod_proxy_balancer + mongrel(cluster)」を構築してみる。
導入も手軽でスピードも結構速いらしい。
バージョンは以下
Apache 2.2
Mongrel 1.1.1
Mongrel 1.0.5
RailsとGem, Apacheはインストールされているものとする。
Mongrelインストール
本体インストール gem install mongrel クラスターインストール gem install mongrel_cluster クラスタ設定ファイルを作成 mongrel_rails cluster::configure -p 3000 -N 4 クラスタ起動 cd ROOT_APP_DIR mongrel_rails cluster::start クラスタ停止 mongrel_rails cluster::stop
めちゃめちゃ簡単だった。。。
これで以下URLでアクセスができる。
http://localhost:3000
http://localhost:3001
http://localhost:3002
http://localhost:3003
今度はこのURLに負荷分散するようApache2.2をインストールする
Apache2.2の設定
次にロードバランサーとなるApacheの設定
ロードバランサの設定は、
http://d.hatena.ne.jp/kusakari/20071011/1192072268
からの引用です。
# cd /etc/httpd/conf # cp -ap httpd.conf httpd.conf.orig # vi ----- <VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /home/rails_projects/exam/public <Directory "/home/rails_projects/exam/public"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> RewriteEngine On RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f RewriteRule (.*) $1 [L] ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / balancer://mongrel_cluster/ stickysession=_exam_session_id nofailover=On ProxyPassReverse / balancer://mongrel_cluster/ <Proxy balancer://mongrel_cluster/> BalancerMember http://127.0.0.1:3000 route=0 BalancerMember http://127.0.0.1:3001 route=1 BalancerMember http://127.0.0.1:3002 route=2 BalancerMember http://127.0.0.1:3003 route=3 </Proxy> </VirtualHost> ----- # /etc/rc.d/init.d/httpd restart