En este artículo, veremos cómo configurar un clúster de servidores Apache Tomcat. Usaremos 3 instancias Ubuntu 18.04 EC2 o VM, aquí he usado instancias EC2. También veremos los pasos para instalar Java ya que Apache Tomcat requiere Java.
Los siguientes son los detalles de mi clúster.
Detalles del clúster:
- 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 (cree si no tiene una y desea crear un clúster en instancias EC2) (opcional).
- 3 instancias EC2 (haga clic aquí para aprender a crear una instancia EC2) O 3 máquinas virtuales con Ubuntu 18.04 LTS.
- Acceso raíz a los servidores.
Lo que haremos
- Descarga Apache Tomcat
- Instalar Java8
- Configurar clúster de Apache Tomcat
- Iniciar/Detener Apache Tomcat
Descargar Apache Tomcat
Cambiar a usuario "raíz" para evitar errores de permisos. Pero no se recomienda utilizar un usuario "raíz" en entornos de producción.
sudo -i
Crear un directorio. Aquí almacenaremos el paquete Apache Tomcat.
mkdir tomcat1 #En el nodo2 mkdir tomcat2, En el nodo3 mkdir tomcat3
cd tomcat1/ #En el nodo2 cd tomcat2/, En el nodo3 cd tomcat3/
Descargue y extraiga Apache-Tomcat-9.0.0.M17 o puede descargar una versión de su elección 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 #Download
tar -zxvf apache-tomcat-9.0.0.M17.tar.gz #Extraer
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 predeterminado.
#En cada nodo
cd apache-tomcat-9.0.0.M17/ #Cambie el directorio.
cp conf/server.xml conf/server.xml.bak #Realice una copia de seguridad del archivo de configuración existente .
Realice los cambios necesarios en el archivo server.xml.
#En cada nodo
ifconfig #Obtenga la IP del servidor.
vim conf/server.xml #Abra el archivo de configuración para realizar las configuraciones necesarias.
Busque las siguientes líneas y cambie localhost a la IP del nodo
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps
Para configurar el clúster, busque el siguiente código
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
Y agregue el siguiente código en cada nodo y reemplace IP-Of-Node con la 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
Utilice startup.sh archivo para iniciar el servicio Apache Tomcat. Usando netstat puede ver que el servicio se ha iniciado en el puerto predeterminado 8080.
#En cada nodo
bin/startup.sh #Iniciar el servicio Apache Tomcat.
netstat -tulpn #Comprobar los puertos que se utilizan actualmente en el sistema.
Comprobar registros
catalina.out contiene los registros de Apache Tomcat. Puede usar el comando tail para ver las últimas líneas del archivo.
cola -100f logs/catalina.out
Apagar Apache Tomcat
El servicio Apache Tomcat se puede detener usando el archivo shutdown.sh
bin/shutdown.sh #Detener el servicio Apache Tomcat.
Conclusión
En este artículo, vimos los pasos para crear un clúster de Apache tomcat con 3 nodos, vimos la configuración básica que se debe realizar para crear un clúster.