Tomcat-Clustering mit Apache-[warn] Proxy: Für die URL / war kein Protokollhandler gültig. Wenn Sie eine DSO-Version von mod_proxy verwenden

Tomcat-Clustering mit Apache-[warn] Proxy: Für die URL / war kein Protokollhandler gültig. Wenn Sie eine DSO-Version von mod_proxy verwenden

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.sowird als proxy_moduleund mod_proxy_balancer.soals 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:

  1. Aktivieren Sie die Module: a2enmod proxy a2enmod proxy_http.
  2. In Ihrem Fall möchten Sie AJP verwenden, daher müssen Sie wahrscheinlich ein oder zwei Dinge installieren (z. B. a2enmod proxy_ajp).
  3. In Ihrem virtuellen Host (das können Sie tun, http.confaber 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

verwandte Informationen