Ich bin neu bei Apache und Tomcat und versuche, Clustering mit mod_proxy zu implementieren und mehrere Tomcat-Instanzen ausführen zu können, stecke aber fest. Hier ist meine Konfiguration:
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/
Beim Neustart von Apache wird Folgendes im error.log angezeigt:
[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.
Und auch meine server.xml von zwei Instanzen ist auf jvmRoute="server1" und jvmRoute="server1"... eingestellt.
Antwort1
Ich weiß, das ist eine alte Frage, aber vielleicht ist die Antwort für andere hilfreich.
Die Modulnamen der letzten beiden geladenen Module sind falsch. mod_proxy_ajp.so
wird als proxy_module
und mod_proxy_balancer.so
als geladen proxy_http_module
.
falsch:
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_balancer.so
Rechts:
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module /usr/lib/apache2/modules/mod_proxy_balancer.so
Antwort2
Ich bin nicht sicher, welches Betriebssystem Sie verwenden, aber es ist üblich, Folgendes zu tun:
- Aktivieren Sie die Module:
a2enmod proxy
a2enmod proxy_http
. - In Ihrem Fall möchten Sie AJP verwenden, daher müssen Sie wahrscheinlich ein oder zwei Dinge installieren (z. B.
a2enmod proxy_ajp
). - In Ihrem virtuellen Host (das können Sie tun,
http.conf
aber es ist nicht die flexibelste Möglichkeit).
Folgendes haben Sie aus Ihrer Frage kopiert:
<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/
So mache ich es (nicht viel anders):
<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