Terug naar overzicht
Techblogs

Tomcat & TomEE Clustering

In dit techblog delen we handige tips voor het automatisch clusteren van Tomcat- en TomEE-servers, met specifieke aandacht voor installatie en horizontale schaalbaarheid binnen Previder PaaS+.
Door: Peter Bult
PaaS+

Tips voor Tomcat- en TomEE

Apache Tomcat is een open-source applicatieserver die wordt onderhouden door de Apache-community. Het is een van de meest populaire oplossingen voor het hosten van Java-toepassingen vanwege de gebruiksvriendelijkheid en de lichte maar veelzijdige functionaliteit. Als je echter projecten uitvoert op basis van Jakarta EE 8 (of hoger), wil je misschien de TomEE-server gebruiken, die is voorzien van de vereiste enterprise-technologie die niet te vinden is in Tomcat.

Tomcat TomEE

Vanwege de enorme populariteit van deze stacks wereldwijd, en met name binnen Previder PaaS+, hebben we besloten om tips te delen over hoe je automatisch geclusterde Tomcat- en TomEE-servers kunt installeren om een zeer beschikbare oplossing te krijgen die efficiënt een groot aantal gebruikers kan bedienen, veel verkeer kan verwerken en betrouwbaar is.

De implementatie van een Tomcat / TomEE cluster binnen PaaS+ heeft een aantal unieke eigenschappen:

  1. Efficiënte verwerking van een groot aantal requests (performance)
  2. Ondersteuning van horizontale schaalbaarheid in geval van toename van de workload
  3. Geen downtime in geval van uitval van instanties (redundantie)

Hieronder kun je meer te weten komen over de implementatie van automatisch clusteren van Tomcat en TomEE in Previder PaaS+, evenals hoe je deze clusters kunt opzetten en laten draaien.

Hoe installleer je een Tomcat / TomEE Auto-Cluster?

Er zijn meerdere tutorials beschikbaar over het opzetten van Tomcat-clusters, maar de configuratie is complex en omvat veel handmatige aanpassingen. Met de PaaS+ Auto-Clustering wordt echter het hele proces geautomatiseerd,

1. Log in op je PaaS+-account en klik bovenaan op new environment.

New environment Tomcat TomEE

2. In de geopende topologie-wizard, kies Tomcat of TomEE tussen de Java-applicatieservers en schakel de Auto-Clustering schakelaar in. Voer eventuele andere noodzakelijke aanpassingen uit en klik op Creëren.

Auto clustering in TomCat en TomEE

3. Binnen enkele minuten zal je Tomcat-cluster verschijnen op het dashboard.

Tomcat TomEE cluster

Wat zijn de kenmerken van Tomcat / TomEE Cluster?

De topologie van het zeer beschikbare Tomcat-cluster is eenvoudig en efficiënt, zonder onnodige elementen die het ingewikkelder maken of de prestaties verminderen. De standaardcluster-topologie ziet er als volgt uit:

Topologie Tomcat TomEE cluster

Zo'n topologie zorgt ervoor dat aan de perforamnce- en redundantievereisten wordt voldaan. De NGINX load balancer voor het cluster handelt de verdeling van de workload af. Het registreert ook automatisch eventuele wijzigingen in het cluster, reageert op toevoeging, verwijdering of uitval van nodes. Je kunt de load balancing testtutorial volgen om een evaluatie van de verdeling van de workload te krijgen.

Over het algemeen maakt Auto-Clustering een eenvoudig TCP-cluster dat meerdere Tomcat-servers verbindt via het TCP-protocol. In onze configuratie gebruiken we DeltaManager die sessiewijzigingen ontdekt en deze wijzigingen overdraagt naar andere Tomcat-instanties in het cluster. Zodra beide nodes met elkaar verbinden, stellen ze een reeks zender- en ontvangersocketkanalen in. De gegevensoverdracht van sessiereplicatie gebeurt via deze kanalen. De implementatie biedt sessiereplicatie, replicatie van contextattributen en implementatie van clusterbrede WAR-bestanden. Er zijn ook verschillende interceptors geconfigureerd om datatransfer te onderscheppen.

Hier zijn enkele specifieke wijzigingen en optimalisaties voor Tomcat op basis van de clusterinstallatie die in de bovenstaande sectie is beschreven:

Na het inschakelen van Auto-Clustering voor Tomcat wordt het Cluster-element toegevoegd aan de "Engine"-sectie van het configuratiebestand /opt/tomcat/conf/server.xml:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">

waar:

  • className het bovenstaande beschreven clustertype definieert.
  • channelSendOptions="6" / channelSendOptions="sync,use_ack" - De zender blokkeert de voltooiing van het huidige verzoek totdat alle ontvangende nodes hebben bevestigd dat ze het bericht hebben ontvangen en verwerkt.

Je kunt dit controleren en aanpassen indien nodig via de ingebouwde Configuration File Manager.

  • De instantie zelf wordt toegevoegd aan de configuratie als LocalMember. Andere Tomcat-nodes in de laag worden toegevoegd op basis van hun IP-adressen en unieke ID's, die worden gegenereerd met behulp van de IP-adressen en ID's van de containers.
  • De DeltaManager wordt gebruikt voor het repliceren van sessies. Als gevolg hiervan wordt de sessiedata verspreid over alle nodes in de laag (van alle naar alle).
  • Statische lidmaatschap wordt gebruikt voor het ontdekken van de cluster-peers - de volledige en exacte lijst van alle clusterleden staat vermeld in de server.xml op elk node.
  • De onderlinge verbinding vindt plaats via poort 4004 met behulp van het TCP-protocol - een passende regel wordt toegevoegd aan de firewall tijdens de configuratie van het cluster.
  • Daarnaast wordt in het configuratiebestand /opt/tomcat/conf/context.xml de klasse org.apache.catalina.ha.context.ReplicatedContext gebruikt voor de context-implementatie om replicatie te bieden.

Al deze instellingen worden automatisch uitgevoerd tijdens de creatie en vereisen geen handmatig onderhoud gedurende de levenscyclus van het cluster.

Tomcat / TomEE Cluster Horizontale Schaling

Het is duidelijk dat hoge beschikbaarheid bijna voor elke toepassing vereist is, dus het is een groot voordeel dat je het toevoegen/verwijderen van cluster nodes kunt automatiseren op basis van configureerbare schalingstriggers om aan de variabele belasting te voldoen.

1. Ga naar Instellingen > Auto Horizontale Schaling voor je Tomcat / TomEE clusteromgeving.

Auto horizontale schaling Tomcat TomEE

2. Stel schalingstriggers in voor de benodigde resources (RAM, CPU, Netwerk, Schijf).

Houd er rekening mee dat het minimale aantal worker nodes in het cluster 2 is, stel daarom de limiet voor het schalen naar binnen respectievelijk in, zoals op de bovenstaande afbeelding. Dus, als je op zoek bent naar betrouwbare Tomcat-hosting om je projecten schaalbaar en zeer beschikbaar te houden, is de auto-clustering een uitstekende oplossing om gemakkelijk te implementeren. Je hoeft niet te worstelen met routinematige en complexe configuratietaken, laat PaaS+ gewoon al het werk voor je doen en krijg gegarandeerd resultaat binnen enkele minuten. Probeer het zelf op Previder PaaS+!

PaaS+