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

le 27/01/2009 par Olivier Martin
Tags: Évènements

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.