manager connectiontimeout java apache tomcat

java - connectiontimeout - tomcat 8 admin console



SesiĆ³n pegajosa con servidor web apache y servidores tomcat. (5)

Creo que tu problema es que estás usando mybalancer donde tienes tu uso balanceador:

ProxyPass /myapp/ balancer://mybalancer/ stickysession=JSESSIONID

Estoy usando el servidor web apache como un equilibrador de carga para dos instancias de Tomcat detrás de apache. Cuando la primera solicitud va al nodo A y la segunda solicitud del mismo cliente va al nodo B, no puedo acceder a las variables de sesión dentro del nodo A. Es obvio. Navegué en Internet y descubrí que permitir sesiones pegajosas ayudaría. Pero todos los tutoriales para habilitar las sesiones pegajosas en apache parecen confusos. ¿Hay algún tutorial paso a paso simple para esto? Por favor ayuda.

Fragmento de código del comentario:

ProxyPass /balancer-manager ! ProxyPass /balancer://mycluster/ stickysession=JSESSIONID ProxyPassReverse /balancer://mycluster/ <Proxy balancer://mycluster>; BalancerMember ajp://localhost:9001/ route=NodeA1000 retry=10 BalancerMember ajp://localhost:9002/ route=NodeB1000 retry=10 </Proxy>


Este es un problema con el que me he encontrado también: si define su equilibrador dentro de un host, entonces parece que utiliza la sesión como está documentado. Sin embargo, si está definiendo un equilibrador fuera del vhost en el que se utiliza, entonces la sesión se pierde, por lo que debe configurarlo utilizando ProxySet dentro del propio equilibrador.


Esto me funcionó ...

En lugar de usar stickysession = JSESSIONID en la directiva ProxyPass, se debe establecer dentro de la configuración del equilibrador usando ProxySet stickysession = JSESSIONID:

<Proxy balancer://mybalancer> BalancerMember ajp://server1:8009 route=tomcat1 BalancerMember ajp://server2:8009 route=tomcat2 ProxySet lbmethod=bytraffic ProxySet stickysession=JSESSIONID </Proxy> ProxyPass /myapp/ mybalancer://myapp/

No me funcionó cuando lo estaba usando en ProxyPass como se muestra a continuación:

ProxyPass /myapp/ mybalancer://myapp/ stickysession=JSESSIONID

Esto debería agregarse a los documentos de apache, porque es un dolor de resolver.


Para que apache httpd mantenga sus sesiones vinculadas al mismo backend, necesita saber qué cookie mantiene el ID de sesión. Para Java, esto es (generalmente) JSESSIONID .

Si está utilizando la directiva ProxyPass , use

ProxyPass /example http://backend.example.com stickysession=JSESSIONID

Para encontrarlo en la excelente documentación de apache httpd .


Por favor, intente esto, estoy seguro de que esto funcionará para usted.

Paso 1: Agregue el siguiente código en httpd.conf:

<Proxy balancer://mycluster> BalancerMember http://<NODE1>/<APP>/ route=jvm1 BalancerMember http://<NODE2>/<APP>/ route=jvm2 ProxySet lbmethod=bytraffic ProxySet stickysession=JSESSIONID </Proxy> ProxyPass /<APP>/ balancer://mycluster/ ProxyPassReverse /<APP>/ balancer://mycluster/

Paso 2: Agregue el siguiente código en server.conf:

a) <NODE1> <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> b) <NODE2> <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">