Debido al incremento de las aplicaciones web, la escalabilidad y la disponibilidad se transforma en un recurso transcendental para garantizar el servicio eficiente a los clientes web; la implementación de clustering para los servidores de aplicaciones web es una solución eficaz y relativamente sencilla.
La implementación de clustering con Tomcat provee:
Las soluciones de clustering típicas ofrecen un paradigma de servidor que consiste en ofrecer un sistema basado en ejecución distribuida, a pesar de que existe limitación respecto a la escalabilidad, podemos observar el esquema de Jakarta Tomcat server engine works.
Clustering/Session Replication How-To (en inglés)
El conector del servidor de cluster recibe la petición desde los clientes, y el procesador del servidor de cluster encapsula las peticiones en los objetos "RequestEntry
" y los escribe en JavaSpace. El conector del Worker del cluster toma dichas peticiones y el procesador del worker del cluster resuelve las peticiones.
Para establecer una configuración de cluster en Tomcat podremos seguir los siguientes pasos:
- Todos los atributos de sesion deben implementar
java.io.Serializable
.
- Descomentar el elemento
Cluster
en server.xml.
- Descomentar
Valve
(ReplicationValve
) en server.xml
- Si las múltiples instancias de Tomcat están en la misma máquina el parámetro
tcpListenPort
tiene que ser único para cada una de las instancias.
- Establecer en el archivo web.xml el elemento
<distributable/>
o bien definirlo de forma <Context distributable="true"/>
.
- El atributo
jvmRoutes
tiene que estar definido en el "Engine
" <Engine name="Catalina" jvmRoute="nodeX">
estableciendo su valor al nombre de la instancia en el cluster.
- Sincronizar la hora de todos los nodos con un servicio NTP.
- Configurar el parámetro
loadbalancer
en modo "sticky session
".