CR du séminaire SpringSource « Expert Tomcat » [1/2]

Mardi 20 janvier dernier avait lieu le séminaire « Expert Tomcat » organisé par SpringSource. Une fois n’est pas coutume, il n’a pas été question de développement d’applications Web Java mais de problématiques avancées de production avec au menu : déploiement à grande échelle, optimisation de performances ou bien encore résolution d’incidents de production. Filip Hanik de SpringSource et committer actif sur le projet assurait la présentation.

Voici la première partie du compte-rendu résumant quelques-unes des recettes permettant d’utiliser Tomcat dans un environnement de production. Les slides de l’évènement sont disponibles à cette adresse.

Gestion des instances Tomcat en Production

Séparer l’installation des applicatifs

La première règle d’or à appliquer lors d’une installation de Tomcat est la séparation des fichiers d’installation et des fichiers applicatifs, ce qui permet de :

  • mettre à jour Tomcat facilement sans impacter les applications (et inversement on peut revenir à une version antérieure en cas de découverte de bug)
  • mettre des droits différents sur les répertoires sur un système Unix, ainsi une équipe projet peut avoir accès en écriture à son répertoire webapps sans pouvoir toucher aux fichiers d’installation

Plus concrètement, dans les scripts de démarrage on peut distinguer deux variables : CATALINA_HOME et CATALINA_BASE : la première définit le répertoire d’installation, la deuxième celui d’exécution. Pour obtenir une instance Tomcat, il suffit de recopier le répertoire conf et de créer les répertoires logs, temp, webapps et work :

C

Autre bénéfice, le répertoire webapps ne contient pas les applications web de l’installation originale, la nouvelle instance démarre donc en quelques centaines de millisecondes et ne contient que le strict nécessaire.

Il est important de noter que cette séparation installation / applicatif est un pattern appliqué depuis de nombreuses années dans les grands comptes utilisant des serveurs d’application commerciaux et où les contraintes de production sont très fortes. Or, ont voit que des produits OpenSource comme Tomcat sont tout à fait à même de répondre à ces exigences.

Gestion du multi-instance par mutualisation du fichier server.xml

Une autre propriété intéressante dans le cas du multi instances (pour du fail-over par exemple), on peut mutualiser le fichier de configuration server.xml et utiliser des variables de substitution. Ainsi on ne modifiera plus que le fichier de propriétés catalina.properties dans les répertoires des différentes instances.

C

Dans cet exemple, server.xml est commun et définit des paramètres, ici le port d’écoute :

connector.port=8080

Enfin, on spécifie à Tomcat d’utiliser le fichier server.xml commun en passant le paramètre –config au script catalina.sh.
Pour créer un nouveau nœud il suffira de créer une arborescence basique et quelques fichiers de configuration, ce qui est facilement scriptable et donc automatisable.
Fin du premier article, dans le prochain nous aborderons la configuration avancée et présenterons le dernier produit de la gamme SpringSource basé sur Tomcat.

5 commentaires sur “CR du séminaire SpringSource « Expert Tomcat » [1/2]”

  • Le chapitre d'intro est présent deux fois

  • Je le corrige merci
  • Une autre approche que j'utilise en production est l'utilisation de lien symbolique. Une installation principale, un petit script qui crée les répertoires, et fait les liens symboliques des jars vers l'installation principale. les fichiers de configuration sont d'ailleurs générés par le dit scripts. Ca marche plutôt bien puisqu'on peut avoir jusqu'à 40 tomcat par machine (i5/OS)
  • Oui c'est effectivement ce que nous faisons en interne chez OCTO pour deployer nos applications Java. Un Tomcat et des scripts shell (sous ubuntu) pour ajouter / supprimer / démarrer / arrêter / installer en tant que service / superviser via zabbix des instances sur un serveur donné. Nous essaierons de voir si l'on peut faire un article dessus prochainement car cela marche très bien.
  • Salut, Je suis en train de tester. Je me pose la question : est-ce que vous savez si le même principe est aussi possible avec tomcat 5.5.x ? Ou alors, quelles sont les choses qui ne fonctionneraient pas ou moins bien ? Merci
    1. Laisser un commentaire

      Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


      Ce formulaire est protégé par Google Recaptcha