« Apache&Tomcatでロードバランサー | Main | Apache-Tomcat連携部分のステータス表示 »

2007.05.22

Apache2.2とTomcatでロードバランサー

 Apache2.0.59とTomcat5.5.23の代わりに、Apache2.2.4とTomcat5.5.23で、mod_jkではなくproxy_ajpで連携する環境を構築してみるテスト。

 普段利用しているHunterには2.2.3までしかないのと、proxy周りのモジュールが2.2.4でいろいろと修正されていたこともあり、Apache2.2.4はApache Loungeからダウンロードしました(ここで公開されているものはVC8でコンパイルされているので、そのランタイムも別途必要となります)。

【httpd.conf】
 以下のモジュールをロードします(コメントを外します)。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

 以下のような感じで、Proxyの設定を行います(最低限の設定しかしていませんので、実際に運用するとなると他にもいろいろと設定する必要があります)。なお、Tomcat側の設定は、Apache2.0.59+mod_jkと組み合わせた場合と同じ環境とします(なお、負荷分散を行わないのであれば、もっとシンプルな記述で連携できます)。

<Location /Test>
  ProxyPass balancer://tomcats stickysession=JSESSIONID nofailover=On
</Location>
<Proxy balancer://tomcats>
  BalancerMember ajp://localhost:8009/Test route=Tomcat1
  BalancerMember ajp://localhost:18009/Test route=Tomcat2
</Proxy>

 http://localhost/Test/~に対するリクエストを全てbalancer://tomcatsという仮想サーバに転送します。で、balancer://tomcatsの処理として、実際のリクエスト転送先(Tomcat×2)の設定を行います。仮想サーバのtomcatsというのは任意(さすがに実在するホスト名とかぶってしまうとまずいのかもしれませんが)で、今回は単純にTomcatが複数だからという理由でtomcats(複数形)にしただけです。

 重要なのは、ProxyPassの設定に付加するstickeysessionパラメータで、セッションIDを格納している(Cookieの)キーを指定します。Apacheはこの部分の値(大文字小文字を区別します)を手がかりにセッションIDを取得し、そこからルート情報の取得を行います。セッションIDを格納するキーはアプリケーションサーバの設定で変更可能(加えて、初期値もサーバによって異なる可能性がある)なので、この部分の設定はサーバ依存となってしまいます。

 その他のパラメータ等、Proxyの設定に関する詳細はこちらに記載されています。

#なお、アプリケーションサーバがフェールオーバーに対応していれば、nofailover=Offとなります。

|

« Apache&Tomcatでロードバランサー | Main | Apache-Tomcat連携部分のステータス表示 »

Java」カテゴリの記事

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Apache2.2とTomcatでロードバランサー:

« Apache&Tomcatでロードバランサー | Main | Apache-Tomcat連携部分のステータス表示 »