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。