私は 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_module
mod_proxy_balancer.so
proxy_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 を使用しているかはわかりませんが、次の手順を実行するのが一般的です。
- モジュールを有効にします:
a2enmod proxy
a2enmod proxy_http
。 - あなたの場合、AJP を使用したいので、おそらくいくつかのものをインストールする必要があります (例:
a2enmod proxy_ajp
)。 - 仮想ホストで (実行できます
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