apache+mod_proxy_balancer+mongrelでRailsを動かす方法
kaeruspoonは今までLighttpd+FastCGIで動かしていましたが、OSをcentOSからDebianに移したのを契機に、apache+mod_proxy_balancer+mongrelで動かすことにしました。
まずはapacheとmongrel、mongrel_clusterのインストールから。
sudo aptitude install apache2
sudo gem install mongrel --include-dependencies
sudo gem install mongrel_cluster --include-dependencies
それからmod_proxyとmod_proxy_balancerを有効にします。
a2enmod proxy
a2enmod proxy_balancer
そして/etc/apache2/mods-available/proxy.confの設定。
<VirtualHost *>
ServerName www.kaeruspoon.net
<IfModule mod_proxy.c>
<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Deny from all
Allow from 192.168.0
</Location>
ProxyRequests Off
<Proxy *>
Order deny,allow
allow from all
</Proxy>
proxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
<Proxy balancer://mycluster>
BalancerMember http://192.168.0.1:3000 loadfactor=10 keepalive=On
BalancerMember http://192.168.0.1:3001 loadfactor=10 keepalive=On
BalancerMember http://192.168.0.1:3002 loadfactor=10 keepalive=On
</Proxy>
</IfModule>
</VirtualHost>
こんな感じ。詳しいことはあちこちでいろんな人が書いているのでそちらを参考に。ぼくは見よう見まねでやっいてるだけです。
proxyPass / balancer://mycluster/ のところは最後のスラッシュがあったりなかったりするだけで動作が変わってきたりするのでハマりどころでした。
それからmongrel_clusterの設定。
mongrel_rails cluster::configure -e production -p 3000 -N 3
これでRailsアプリがproductionモードで、ポート番号3000, 3001, 3002の3つのプロセスで立ち上がる設定が完了です。あとは、
mongrel_rails cluster::start
とやれば、設定どおりにRailsアプリが3つ起動します。
とめるときは、
mongrel_rails cluster::stop
でOK。