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の状態はこちら。

Apache balancer status

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.