Agrupación en clústeres de Tomcat con proxy Apache-[advertencia]: ningún controlador de protocolo era válido para la URL /. Si está utilizando una versión DSO de mod_proxy

Agrupación en clústeres de Tomcat con proxy Apache-[advertencia]: ningún controlador de protocolo era válido para la URL /. Si está utilizando una versión DSO de mod_proxy

Soy nuevo en Apache y Tomcat, intento implementar la agrupación en clústeres con mod_proxy y pude ejecutar varias instancias de Tomcat, pero me quedé atascado. Aquí está mi configuración:

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/

Al reiniciar Apache, se muestra lo siguiente en 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.

Y también mi server.xml de dos instancias se ha configurado en jvmRoute="server1" y jvmRoute="server1"....

Respuesta1

Sé que esta es una vieja pregunta, pero tal vez la respuesta sea útil para otros.

Los nombres de los módulos de los dos últimos módulos cargados son incorrectos. mod_proxy_ajp.sose carga como proxy_moduley mod_proxy_balancer.socomo proxy_http_module.

equivocado:

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

bien:

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

Respuesta2

No estoy seguro de qué sistema operativo está utilizando, pero se acostumbra hacer lo siguiente:

  1. Habilite los módulos: a2enmod proxy a2enmod proxy_http.
  2. En su caso, desea utilizar AJP, por lo que probablemente tenga que instalar un par de cosas (por ejemplo a2enmod proxy_ajp).
  3. En tu Host Virtual (puedes hacerlo http.confpero no es la forma más flexible).

Esto es lo que has copiado de tu pregunta:

<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/

Así es como lo hago (no muy diferente):

<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

información relacionada