Dec 202006
Apache 2.2のproxyモジュールを使って複数のTomcatに負荷分散。
HTTPリクエストをReverse Proxyするのではなく、mod_jkを使って接続するわけでもなく、mod_proxy_ajpを使ったAJP13プロトコル接続で負荷分散してみようという試みです。
こんな感じでできるだろうかと、Solaris 10マシンで試してみました。
Apache 2.2とTomcat5はCSWパッケージ版を導入して、もうひとつのTomcat5を公式サイトのバイナリで導入し、ポート番号のみ変更して動かしてます。
ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> <Location /jsp-examples> ProxyPass balancer://appservers/jsp-examples stickysession=JSESSIONID nofailover=Off Order Deny,Allow Allow from all </Location> <Proxy balancer://appservers/jsp-examples> BalancerMember ajp://127.0.0.1:8009 BalancerMember ajp://127.0.0.1:8010 </Proxy> <Location /servlets-examples> ProxyPass balancer://appservers/servlets-examples stickysession=JSESSIONID nofailover=Off Order Deny,Allow Allow from all </Location> <Proxy balancer://appservers/servlets-examples> BalancerMember ajp://127.0.0.1:8009 BalancerMember ajp://127.0.0.1:8010 </Proxy> <Location /balancer-manager> SetHandler balancer-manager Order Deny,Allow Deny from all Allow from ::1 127.0.0.1 192.168.0.0/24 </Location>
とりあえずTomcatについてくるjsp-examplesとservlets-examplesは動作したのですが…
実は最初、
<Location /jsp-examples> ProxyPass balancer://appservers stickysession=JSESSIONID nofailover=Off Order Deny,Allow Allow from all </Location> <Proxy balancer://appservers> BalancerMember ajp://127.0.0.1:8009 BalancerMember ajp://127.0.0.1:8010 </Proxy>
という定義を試していました。
ところが/jsp-examplesにアクセスするとTomcatのトップページが表示されてしまうので、前述のやりかたに変更したものの、正しいやりかたなのかよくわかりません。
ちなみに/balancer-managerの状態はこちら。
Worker URLのエントリ自体も重複していますし、ステータスがエラーになっているものもあります。やはり何かしらやりかたを間違えているような気がします… 😕
■2006-12-24追記
こんな感じでできました。ProxyPass先にURLパスまで指定する必要があったようです。
<Location /jsp-examples> ProxyPass balancer://appservers/jsp-examples stickysession=JSESSIONID nofailover=Off Order Deny,Allow Allow from all </Location> <Proxy balancer://appservers> BalancerMember ajp://127.0.0.1:8009 BalancerMember ajp://127.0.0.1:8010 </Proxy>
Sorry, the comment form is closed at this time.