mar
21
2011

Tomcat : plusieurs instances sur la même machine

Pour ceux qui espèrent que le titre de cet article renferme en fait les secrets du serveur Tomcat , vous pouvez passer votre chemin car je vais simplement expliquer quelles sont les configurations à changer pour pouvoir déployer sur une même machine plusieurs instances du serveur.

Tout d’abord…

Comment est organisé Tomcat ?

Tomcat peut se décomposer en deux parties, deux dossiers dont on met le chemin dans les deux variables d’environnement correspondantes.

  • CATALINA_HOME pointe vers le dossier qui contient les informations communes à toutes les instances
    • le dossier bin : les exécutables Tomcat
    • le dossier lib : les librairies utilisées par Tomcat
  • CATALINA_BASE pointe vers le dossier qui contient les informations spécifiques à chaque instance
    • le dossier conf : les fichiers de configuration de l’instance
    • le dossier temp : le dossier temporaire de la JVM (java.io.tmpdir)
    • le dossier webapps : les applications web déployés
    • le dossier work : les dossiers de travail temporaires utilisés par le serveur
    • le dossier logs : les logs du serveur et des différentes applications

Pour déployer plusieurs instances de Tomcat sur une même machine, il faut donc spécifier pour chaque instance un dossier CATALINA_BASE et un CATALINA_HOME (celui-ci pouvant être commun pour toutes les instances)

Dans une installation standard, le dossier CATALINE_HOME et CATALINE_BASE sont identiques.

Comment configurer mes instances ?

Maintenant que nous avons vu comment s’organise Tomcat, mettons en place nos instances. Pour l’exemple, disons que nous en voulons 3.

Je vais donc créer les 4 dossiers suivants (1 CATALINA_HOME et 3 CATALINA_BASE) qui contiennent les fichiers par défaut d’une installation tomcat avec l’organisation des répertoires expliquée précédemment. (Pour créer les dossiers CATALINA_BASE, copiez simplement le dossier original auquel vous pouvez enlever les dossiers bin et lib. Pour CATALINA_HOME, copier également le dossier original mais ne gardez cette fois-ci que les dossiers bin et lib.)

maintenant, je vais modifier les fichiers de configuration de chaque instance pour leur associer des ports différents. Pour cela, il faut éditer le fichier server.xml qui se trouve dans le dossier conf.

Tout d’abord changer le port d’écoute de la commande SHUTDOWN

<Server port="8005" shutdown="SHUTDOWN">

Personnellement, je choisis de mettre les ports 8001, 8002 et 8003.

Ensuite, pour chaque connecteur déclaré dans le fichier server.xml, il faut définir un numéro de port pour chaque instance. Par défaut, la configuration de Tomcat contient deux connecteurs, un HTTP et un AJP.

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3"
           redirectPort="8443" />

Je vais donc mettre 8080, 8081 et 8082 pour les connecteurs HTTP et 8009, 8010 et 8011 pour les connecteurs AJP. Le « redirectPort » correspond au port sur lequel seront renvoyées toutes les requêtes qui requièrent un transport SSL. Si vous vous en servez et que vous avez également défini le connecteur SSLEnabled correspondant, il faut également penser à modifier ce port.

Maintenant, ça devrait marcher ? Une petite dernière chose, configurer les CATALINA_BASE pour chaque instance.

Avec d’appeler les script de démarrage de Tomcat situé le dossier bin de CATALINA_HOME, il suffit d’exporter dans la variable d’environnement CATALINA_BASE le dossier de l’instance que l’on souhaite démarrer (de même pour l’arret).

Ce qui donne sous Unix


export CATALINA_BASE=Path/Vers/Mon/Instance/1
$CATALINA_HOME/bin/startup.sh

Ce qui a pour effet de démarrer une instance de Tomcat en utilisant la configuration situé dans Path/Vers/Mon/Instance/1

On répète ensuite cette opération pour chaque instance que l’on souhaite démarrer et l’on peut (doit ?) bien évidemment mettre tout ça dans des scripts pour automatiser
Pour arrêter une instance souhaité, le principe est le même, excepté qu’au lieu d’appeler le script startup.sh, nous appelerons cette fois-ci shutdown.sh

Et voilà, nos trois serveurs Tomcat tournent en même temps sur la même machine… Et en plus, on a économisé de la place en mutualisant les exécutables dans un seul dossier :)

Leave a comment

*
To prove you're a person (not a spam script), type the security word shown in the picture.
Anti-spam image

Langage

  • Français
  • English

Tag cloud