Lighttpd+MongrelでRailsを動かす

Apacheでの懸案がなくなったので、またLighttpdに戻しました。良い機会なので1.4.11から1.4.13にバージョンアップも敢行。手間は大してありませんでしたが(Lighttpd関連の記事参照)アップグレードついでにMongrelを試してみることにしました。

まず、Mongrelのインストール。http_proxyはメモ代わり。いつも忘れるので。

export http_proxy=http://www.example.com:8080/
gem install mongrel

後は解説に従ってセットアップ。mod_fastcgiをコメントアウトし代わりにmod_proxyを有効にします。リクエストをLighttdで受け、複数のMongrelサーバをバックエンドバックで稼動させる構成となります。Mongrelへの振り分けはProxyモジュールで行います。proxy.balanceパラメータには、

  • hash
  • round-robin
  • fair

がありますがMongrel: Lighttpdでは、'fair'がベストだということですので'fair'を指定します。

proxy.balance = "fair"
proxy.server=("/"=> \
  (("host"=>"127.0.0.1","port"=>8001),
   ("host"=>"127.0.0.1","port"=>8002),
   ("host"=>"127.0.0.1","port"=>8003))
)

実際のMongrelサーバを起動します。

mongrel_rails start -d -p 8001 -e production \
  -P /var/run/mongrel-1.pid  \
  -l log/mongrel1.log
mongrel_rails start -d -p 8002 -e production \
  -P /var/run/mongrel-2.pid  \
  -l log/mongrel2.log
mongrel_rails start -d -p 8003 -e production \
  -P /var/run/mongrel-3.pid  \
  -l log/mongrel3.log

これでめでたくアクセスできました。なんとなく早くなったような気もするのですがベンチをとったわけでありませんのでなんとも言えません。また、Mongrel: Lighttpdでキャッシュ(Cache Meta Language(CML))を使ってよりパフォーマンスを高める方法がありましたので時間があればこちらも試してみようかと思います。

導入の簡易さは評判どおり。mod_proxyとの組み合わせでスケールにも対応できるしちょっといい感じですね。(mongrel_clusterといのもあるみたいですがこちらは試していません)いづれにしても個人的にはやっぱりApacheよりLightyのほうが好みかな。

この記事のトラックバックURL:

http://hippos-lab.com/blog/trackback/87

返信