Apache 2.2.0 + mod_proxy_balancer

Apache 2.2.0 がついにリリースされまして、かねてから期待されていた mod_proxy_balancer が安定版で使えるようになりました。mod_proxy_balancer はその名のとおり Apache でロードバランスするための proxy モジュールです。詳しい解説は yappo さんがしてくれてるのでそちらを。

実は mod_proxy_balancer 使ってみるかーと思って Apache 2.2.0 をインストールしようとしたらいきなり躓きました。APR 1.2.0 が入ってないから駄目だよ! と configure に叱られまして、でも APR 1.2.0 って Apache 2.2.0 インストールしないと入らなくね? みたいな矛盾が発生しました。なので、まず最初に srclib にある APR をコンパイル & インストールして、その後 Apache2 のインストールという順番でやってうまくいきました。

$ cd httpd-2.2.0
$ cd srclib/apr
$ ./configure
$ make
$ sudo make install

$ cd ..
$ cd apr-util
$ ./configure --with-apr=/home/naoya/apr/bin/apr-1-config
$ make
$ sudo make install

$ cd ../..
$ ./configure --prefix=/usr/local/httpd_proxy --enable-deflate \
--enable-rewrite \
--enable-proxy \
--enable-proxy-balancer \
--enable-ssl \
--with-mpm=prefork \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apu=/usr/local/apr/bin/apu-1-config 
$ make
$ sudo make install

こんな感じで。

Proxy Balancer はなかなか使い手もいいし、簡単な設定ですぐに使えるのがいいです。管理画面からノードの追加削除ができたりとかも便利。あと、何気に RewriteRule の中で balancer://foo が使えるのがいい。

<Proxy balancer://foo>
  BalancerMember http://192.168.0.1 loadfactor=10
  BalancerMember http://192.168.0.2 loadfactor=10
  BalancerMember http://192.168.0.3 loadfactor=10
</Proxy>

RewriteEngine on
RewriteRule ^/(.*)$ balancer://foo/$1 [P]

こんな感じでもちゃんと動く。なので mod_rewrite でいろいろ複雑なことをした結果でもちゃんと balancer に任せることができる。スバラシス。