Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Tomcat Última actualización: 15 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Configurar Tomcat con Apache utilizando Módulo Proxy y Sticky Session

Configurar Tomcat Load Balancer con el servidor web Apache usando Mod Proxy es bastante fácil.

Es fácil cuando sigues la secuencia y todo va bien. He enumerado siguiente paso a paso sobre cómo configurar Apache con Tomcat para configurar Load Balancer usando Mod Proxy.

En un entorno de producción siempre se recomienda equilibrar la carga para mejorar la disponibilidad.

Configuración del servidor web Apache

  • Activar proxy_module, proxy_balancer_module y proxy_http_module en httpd.conf del servidor web Apache
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Añada el pase de proxy junto con el nombre del equilibrador para la raíz del contexto de la aplicación.

En este ejemplo, tengo un proxy ruta como ejemplos y equilibrador nombre como micluster.

Es muy importante incluir stickysession ya que no tener esta opción distribuirá la misma petición a múltiples servidores Tomcat, y tendrá problemas de expiración de sesión en una aplicación.

ProxyRequests Desactivado
ProxyPass /ejemplos balancer://mycluster stickysession=JSESSIONID
ProxyPassReverse /ejemplos balancer://mycluster stickysession=JSESSIONID

BalancerMember http://localhost:8080/examples route=servidor1
BalancerMember http://localhost:8090/examples route=servidor2

Como se puede ver en la configuración anterior, he añadido una ruta en BalancerMember por lo que el valor de la ruta se puede añadir a la ID de sesión.

Ahora, vamos a configurar Apache para que imprima JSESSIONID en los logs de acceso.

  • Añada lo siguiente en la directiva LogFormat
%{JSESSIONID}C

Ex:

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""%{JSESSIONID}C"" combinado
  • Reiniciar el servidor web Apache

Configuración de Tomcat

Debe configurar las instancias de tomcat con el mismo id de ruta que hizo en EquilibradorMiembro arriba.

  • Añadir jvmRoute parámetro en server.xml de Tomcat. Esto debe añadirse en la etiqueta de nombre del motor.

Instancia de Tomcat configurada con 8080 puerto


Instancia de Tomcat configurada con 8090 puerto

 
  • Reinicie el servidor Tomcat

Verificación

Genere un poco de carga en la aplicación y compruebe el registro de acceso del servidor apache para asegurarse de que su solicitud se enruta a una sola instancia de tomcat.

También observará que su ID de sesión se añade a la ruta como se muestra en el siguiente ejemplo.

Ex:

127.0.0.1 - - [18/Sep/2013:10:02:02 +0800] "POST /examples/servlets/servlet/RequestParamExample HTTP/1.1" 200 662 "http://localhost/examples/servlets/servlet/RequestParamExample" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:06 +0800] "GET /examples/servlets/servlet/RequestInfoExample HTTP/1.1" 200 693 "http://localhost/examples/servlets/" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:17 +0800] "GET /examples/servlets/reqinfo.html HTTP/1.1" 200 3607 "http://localhost/examples/servlets/" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:20 +0800] "GET /examples/servlets/servlet/SessionExample HTTP/1.1" 200 1124 "http://localhost/examples/servlets/" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:26 +0800] "POST /examples/servlets/servlet/SessionExample HTTP/1.1" 200 1142 "http://localhost/examples/servlets/servlet/SessionExample" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:28 +0800] "GET /examples/servlets/servlet/SessionExample?dataname=fda&datavalue=fadaf HTTP/1.1" 200 1159 "http://localhost/examples/servlets/servlet/SessionExample" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B4EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:32 +0800] "GET /examples/servlets/servlet/SessionExample?dataname=foo&datavalue=bar HTTP/1.1" 200 1174 "http://localhost/examples/servlets/servlet/SessionExample?dataname=fda&datavalue=fadaf" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"
127.0.0.1 - - [18/Sep/2013:10:02:36 +0800] "GET /examples/servlets/servlet/RequestHeaderExample HTTP/1.1" 200 1423 "http://localhost/examples/servlets/" "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130807 Firefox/17.0""B80557A1D9B48EC1D73CF8C7482B7D46.server2"

Espero que esto te ayude en la configuración de Tomcat Load Balancer con Apache Mod Proxy y Session Sticky.

Si está interesado en aprender sobre la administración de Tomcat, consulte esto curso en línea.

  • Chandan Kumar
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre Tomcat
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba el lunes
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder