Cómo configurar un clúster de Apache Tomcat con 3 nodos en Ubuntu
En este artículo, veremos cómo configurar un cluster de servidores Apache Tomcat. Utilizaremos 3 instancias EC2 o VMs de Ubuntu 18.04, aquí he utilizado instancias EC2. También veremos los pasos para instalar Java ya que Apache Tomcat requiere Java.
A continuación los detalles de mi cluster.
Detalles del cluster:
- Nodo1: Directorio Base = /root/tomcat1, IP = 172.31.35.11
- Nodo2: Directorio Base = /root/tomcat2, IP = 172.31.39.120
- Nodo3: Directorio Base = /root/tomcat3, IP = 172.31.32.185
Requisitos previos
- Cuenta de AWS (Créala si no tienes una y quieres crear un cluster en Instancias EC2) (Opcional).
- 3 Instancias EC2 (Haz clic aquípara aprender a crear una Instancia EC2) O 3 VMs con Ubuntu 18.04 LTS en ellas.
- Acceso root a los servidores.
Qué vamos a hacer
- Descargar Apache Tomcat
- Instalar Java8
- Configurar el clúster de Apache Tomcat
- Iniciar/Detener Apache Tomcat
Descargar Apache Tomcat
Cambia al usuario «root» para evitar errores de permisos. Pero no se recomienda utilizar el usuario «root» en entornos de producción.
sudo -i
Crea un directorio. Aquí almacenaremos el paquete de Apache Tomcat.
mkdir tomcat1 #En Nodo2 mkdir tomcat2, En Nodo3 mkdir tomcat3
cd tomcat1/ #En Nodo2cd tomcat2/, En Nodo3 cd tomcat3/
Descarga y extrae Apache-Tomcat-9.0.0.M17 o puedes descargar la versión que prefieras desde aquí.
#En cada Nodo wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.0.M17/bin/apache-tomcat-9.0.0.M17.tar.gz #Descarga tar -zxvf apache-tomcat-9.0.0.M17.tar.gz #Extrae
Instalar Java 8
#En cada nodo sudo apt-get update #Actualizar los detalles del paquete del sistema sudo apt install openjdk-8-jdk #Instalar Java java --version #Comprobar la versión de Java
Configurar Apache Tomcat
Antes de realizar los cambios necesarios, hagamos una copia de seguridad del archivo server.xml por defecto.
#En cada nodo cd apache-tomcat-9.0.0.M17/ #Cambia el directorio. cp conf/server.xml conf/server.xml.bak #Toma una copia de seguridad del archivo de configuración existente.
Haz los cambios necesarios en el archivo server.xml.
#En cada nodo ifconfig #Obtén la IP del servidor. vim conf/server.xml #Abre el archivo de configuración para realizar las configuraciones necesarias.
Busca las siguientes líneas y cambia localhost por la IP del Nodo
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps
Para configurar el cluster, busca el siguiente código
<!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> -->
Y añade el siguiente código en cada nodo y sustituye IP-del-nodo porla IP del propio nodo.
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="IP-Of-Node" port="5000" selectorTimeout="100" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster>
Iniciar/Detener Apache Tomcat
Iniciar Apache Tomcat
Utiliza el archivo startup.sh para iniciar el servicio Apache Tomcat. Utilizando el comando netstat puedes ver que el servicio se ha iniciado en el puerto por defecto 8080.
#En cada nodo bin/startup.sh #Inicia el servicio Apache Tomcat. netstat -tulpn #Comprueba los puertos que se utilizan actualmente en el sistema.
Comprueba los registros
catalina.out contiene los registros de Apache Tomcat. Puedes utilizar el comando tail para ver las últimas líneas del archivo.
tail -100f logs/catalina.out
Apagar Apache Tomcat
El servicio de Apache Tomcat se puede detener utilizando el archivo shutdown.sh
bin/shutdown.sh #Detener el servicio Apache Tomcat.
Conclusión
En este artículo, hemos visto los pasos para crear un cluster de Apache tomcat con 3 nodos, hemos visto la configuración básica que hay que hacer para crear un cluster.