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:

  1. Nodo1: Directorio Base = /root/tomcat1, IP = 172.31.35.11
  2. Nodo2: Directorio Base = /root/tomcat2, IP = 172.31.39.120
  3. Nodo3: Directorio Base = /root/tomcat3, IP = 172.31.32.185

Requisitos previos

  1. Cuenta de AWS (Créala si no tienes una y quieres crear un cluster en Instancias EC2) (Opcional).
  2. 3 Instancias EC2 (Haz clic aquípara aprender a crear una Instancia EC2) O 3 VMs con Ubuntu 18.04 LTS en ellas.
  3. Acceso root a los servidores.

Qué vamos a hacer

  1. Descargar Apache Tomcat
  2. Instalar Java8
  3. Configurar el clúster de Apache Tomcat
  4. 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

Descargar Apache Tomcat

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

Instalar 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.

Configurar Aapache Tomcat

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.

Configurar el archivo server.xml

Busca las siguientes líneas y cambia localhost por la IP del Nodo

<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost"  appBase="webapps

Configurar el host para las aplicaciones web

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>

Configurar la dirección IP del nodo

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.

Iniciar y detener 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.

También te podría gustar...