mod_proxy_balancerを使ったリバースproxyの設定は以下のようになります。
まず、コンパイル時にmod_proxy_balancerを有効にしてください。先ほどのコンパイルオプションに、リスト3のように--enable-proxy-balancerのオプションを追加すればOKです。
リスト3:mod_proxy_balancerを有効にする
$ ./configure --prefix=/usr/local/httpd_docs \
(省略)
--enable-proxy-balancer
(省略)
次いでApacheの設定です。先ほどのmod_rewriteの設定をリスト4のように書き換えます。
リスト4:mod_rewriteの設定を変更
<Proxy balancer://bookmark>
BalancerMember http://192.168.0.10 loadfactor=10
BalancerMember http://192.168.0.11 loadfactor=10
</Proxy>
RewriteEngine on
RewriteRule ^/images/ - [L]
RewriteRule ^/css/ - [L]
RewriteRule ^/(.*)$ balancer://bookmark/$1 [P,L] ----(1)
<Proxy>…</Proxy>の中に、BalancerMemberとして複数構えるアプリケーションサーバーのURIを指定します。ここでは192.168.0.10と192.168.0.11が2台のアプリケーションサーバーのアドレスであると想定した設定になっています。
URIの後ろにあるloadfactorパラメータは、負荷分散の割合を調整するパラメータです。ここでは両者を同一の値にしているので、それぞれ1/2の確率で振り分けが行われます。この値に差をつけることで他方の受け取り確率を上げたりすることも可能です。アプリケーションサーバーのそれぞれのマシンスペックに差がある場合などに役立つことでしょう。詳しくはマニュアルを参照してください。
そして、バックエンドへの転送の設定を(1)のように記述します。Proxyディレクティブで指定したbalancer://bookmarkというURIがRewriteRuleの中で利用でき、そのURIはBalancerMemberで指定したURIとして展開される、という具合です。分かりやすいですね。
新たにアプリケーションサーバーを一台追加する場合は、BalancerMemberにそのサーバーのURIを追加するだけで完了です。Webサーバーを増設するのは簡単だというのがお分かりいただけるかと思います。
|