Sans-titre.jpg
logo Axopen

18+

années
d'expérience

60+

experts
techniques

150K

écoutes de notre podcast

Clustering TOMCAT et MULTICAST

Tomcat 7 offre des solutions de clustering performante et simple d’utilisation. Retour d’expérience sur la mise en place des adresses MULTICAST

Pierre LISERON
Mis à jour le 5 Mai 2025

Prérequis

La première chose  a faire pour réaliser un clustering TOMCAT est bien sur de posséder deux instances de TOMCAT.

Deux cas sont possibles. Vos deux instances sont sur la même machine (ou VM), auquel cas, il faut bien changer les ports découte de vos TOMCAT. (Rappel ceci sont situés dans le fichier server.xml)

Si vous avez deux machines (ou VM) bien distincte, il nest pas nécessaire de changer le ports découte.

Configuration du cluster 
cluster.jpg

Pour ceci il suffit de rajouter cette instruction dans le fichier server.xml. Vous pouvez lancer les deux instances de TOMCAT et celles-ci vont se trouver. Bien entendu, la configuration du cluster peut aller beaucoup plus loin. Dans la documentation, on peut constater quil est possible de faire beaucoup plus de chose comme le montre cette exemple. En particulier spécifier les adresses de multicast.

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

          <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="auto"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      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.MessageDispatch15Interceptor"/>
          </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.JvmRouteSessionIDBinderListener"/>
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>

De facto ladresse de MULTICAST peut poser problème si vous avez deux machines séparées sur un réseau (ou VM). De base sur Debian (cas ou vous avez plusieurs interfaces) par exemple la route nexiste pas et les deux instances de TOMCAT ne se verront pas sur le réseau. Pour pallier ce problème, il faut rajouter la route comme ceci:

route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

Ainsi les deux TOMCAT pourront se trouver à travers le réseau et votre CLUSTER de TOMCAT pourra fonctionner correctement.

 

Pour aller plus loin

Scripts OJS : utilisation des paramètres P5

Quelle est la syntaxe à utiliser pour appeler ou modifier un paramètre OPX2 ?

Small right arrow

Optimiser ses requêtes SQL : bonnes pratiques pour les développeurs web

Comment optimiser ses requêtes SQL lorsqu’on est développeur d’applications web ? S’il y a bien une chose qui reste constante dans le développement informatique, c’est que toutes les applications manipulant des données structurées utilisent le SQL. Cette couche est indispensable dès que vous avez besoin de stocker et d’accéder à des données. Ainsi, peu importe le langage ou le framework que vous choisissez pour votre projet, SQL sera toujours présent. Lors des audits de performance que nous effectuons, les principales problématiques que nous rencontrons proviennent d’une mauvaise utilisation des bases de données par les applications. Il est donc crucial de bien maîtriser les principes d’optimisation SQL pour garantir des performances pérennes. Aujourd’hui, nous allons explorer ces différentes optimisations SQL, en particulier dans le cadre du développement d’applications web.

Small right arrow

Cloud français : quel avenir pour la souveraineté numérique ?

À l'heure où les données numériques sont devenues un levier de pouvoir économique, politique et industriel, la souveraineté numérique devient un enjeu stratégique incontournable. Pour la France, il ne s'agit plus simplement de protéger les données personnelles ou d'assurer la cybersécurité. L'enjeu est bien plus vaste : il s'agit de reprendre les rênes de ses infrastructures technologiques clés, et notamment de son cloud computing. La dépendance aux géants étrangers, surtout américains, soulève de vraies questions d'indépendance technologique, de conformité (Cloud Act vs RGPD), et bien sûr de compétitivité. Mais alors, le cloud français peut-il réellement se faire une place face aux mastodontes mondiaux ?

Small right arrow