Tomcat Clustering With Apache-[warn] proxy: URL / に対して有効なプロトコル ハンドラーがありませんでした。mod_proxy の DSO バージョンを使用している場合

Tomcat Clustering With Apache-[warn] proxy: URL / に対して有効なプロトコル ハンドラーがありませんでした。mod_proxy の DSO バージョンを使用している場合

私は Apache と Tomcat の初心者で、mod_proxy を使用してクラスタリングを実装し、複数の Tomcat インスタンスを実行できるようにしようとしましたが、行き詰まってしまいました。これが私の設定です:

httpd.conf:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_balancer.so
<Proxy balancer://testcluster stickysession=JSESSIONID>
BalancerMember ajp://localhost:8109 min=10 max=100 route=server1 loadfactor=1
BalancerMember ajp://localhost:8209 min=20 max=200 route=server2 loadfactor=1
</Proxy>
ProxyPass / balancer://testcluster/

Apache を再起動すると、error.log に次の内容が表示されます。

[Fri Feb 27 16:45:44 2015] [notice] Apache/2.2.22 (Ubuntu) configured -- resuming normal operations
[Fri Feb 27 16:46:48 2015] [warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

また、2 つのインスタンスの server.xml は、jvmRoute="server1" および jvmRoute="server1" に設定されています。

答え1

これは古い質問だとはわかっていますが、その答えが他の人にとって役立つかもしれません。

最後にロードされた 2 つのモジュールのモジュール名が間違っています。は として、は としてmod_proxy_ajp.soロードされます。proxy_modulemod_proxy_balancer.soproxy_http_module

間違っている:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_balancer.so

右:

LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module /usr/lib/apache2/modules/mod_proxy_balancer.so

答え2

どの OS を使用しているかはわかりませんが、次の手順を実行するのが一般的です。

  1. モジュールを有効にします: a2enmod proxy a2enmod proxy_http
  2. あなたの場合、AJP を使用したいので、おそらくいくつかのものをインストールする必要があります (例: a2enmod proxy_ajp)。
  3. 仮想ホストで (実行できますhttp.confが、最も柔軟な方法ではありません)。

これはあなたの質問からコピーしたものです:

<Proxy balancer://testcluster stickysession=JSESSIONID>
  BalancerMember ajp://localhost:8109 min=10 max=100 route=server1 loadfactor=1
  BalancerMember ajp://localhost:8209 min=20 max=200 route=server2 loadfactor=1
<Proxy>
ProxyPass / balancer://testcluster/

これが私のやり方です(あまり変わりません):

<Proxy balancer://testcluster >
  BalancerMember ajp://localhost:8109 min=10 max=100 route=server1 loadfactor=1
  BalancerMember ajp://localhost:8209 min=20 max=200 route=server2 loadfactor=1
<Proxy>
ProxyPass / balancer://testcluster/ stickysession=JSESSIONID

関連情報