In questo articolo vedremo come configurare un cluster di server Apache Tomcat. Useremo 3 istanze o VM di Ubuntu 18.04 EC2, qui ho usato istanze EC2. Vedremo anche i passaggi per installare Java poiché Apache Tomcat richiede Java.
I seguenti sono i dettagli del mio cluster.
Dettagli cluster:
- Nodo1:Directory di base =/root/tomcat1, IP =172.31.35.11
- Nodo2: directory di base =/root/tomcat2, IP = 172.31.39.120
- Nodo3: directory di base =/root/tomcat3, IP = 172.31.32.185
Prerequisiti
- Account AWS (crea se non ne hai uno e vuoi creare un cluster su istanze EC2) (facoltativo).
- 3 istanze EC2 (fai clic qui per imparare a creare un'istanza EC2) OPPURE 3 VM con Ubuntu 18.04 LTS su di esse.
- Accesso root ai server.
Cosa faremo
- Scarica Apache Tomcat
- Installa Java8
- Configura il cluster Apache Tomcat
- Avvia/arresta Apache Tomcat
Scarica Apache Tomcat
Passa all'utente "root" per evitare errori di autorizzazione. Ma non è consigliabile utilizzare l'utente "root" negli ambienti di produzione.
sudo -i
Crea una directory. Qui memorizzeremo il pacchetto Apache Tomcat.
mkdir tomcat1 #On Node2 mkdir tomcat2, On Node3 mkdir tomcat3
cd tomcat1/ #On Node2 cd tomcat2/, On Node3 cd tomcat3/
Scarica ed estrai Apache-Tomcat-9.0.0.M17 oppure puoi scaricare una versione a tua scelta da qui.
#Su ciascun 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 #Estrai
Installa Java 8
#Su ogni nodo
sudo apt-get update #Update System Package Details
sudo apt install openjdk-8-jdk #Install Java
java --version #Check Java Version
Configura Apache Tomcat
Prima di apportare le modifiche richieste, eseguiamo un backup del file server.xml predefinito.
#Su ciascun nodo
cd apache-tomcat-9.0.0.M17/ #Cambia la directory.
cp conf/server.xml conf/server.xml.bak #Fai un backup del file di configurazione esistente .
Apporta le modifiche richieste nel file server.xml.
#Su ciascun nodo
ifconfig #Ottieni l'IP del server.
vim conf/server.xml #Apri il file di configurazione per effettuare le configurazioni richieste.
Trova le righe seguenti e cambia localhost in IP del nodo
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps
Per configurare il cluster, cerca il codice seguente
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
E aggiungi il seguente codice su ciascun nodo e sostituisci IP-Of-Node con l'IP del nodo stesso.
<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>
Avvia/arresta Apache Tomcat
Avvia Apache Tomcat
Utilizza startup.sh per avviare il servizio Apache Tomcat. Utilizzando netstat comando puoi vedere che il servizio è stato avviato sulla porta predefinita 8080.
#Su ciascun nodo
bin/startup.sh #Avvia il servizio Apache Tomcat.
netstat -tulpn #Controlla le porte attualmente utilizzate sul sistema.
Controlla i log
catalina.out contiene i log di Apache Tomcat. Puoi utilizzare il comando tail per vedere le ultime righe del file.
tail -100f logs/catalina.out
Chiudi Apache Tomcat
Il servizio Apache Tomcat può essere interrotto utilizzando il file shutdown.sh
bin/shutdown.sh #Interrompi il servizio Apache Tomcat.
Conclusione
In questo articolo, abbiamo visto i passaggi per creare un cluster di Apache Tomcat con 3 nodi, visto la configurazione di base da eseguire per creare un cluster.