Administration Autonome d’Applications
Réparties
DANIEL HAGIMONT
Problématique
Les environnements informatiques
d’aujourd’hui sont de plus en plus sophistiqués. Ils
intègrent de nombreux logiciels complexes qui coopèrent
dans le cadre d’une infrastructure logicielle, potentiellement à
grande échelle. Ces logiciels se caractérisent par une
grande hétérogénéité, en particulier
en ce qui concerne les modèles de programmation utilisés
pour les concevoir et les développer. De plus, ces logiciels
fournissent des fonctions d’administration elles aussi marquées
par une grande hétérogénéité en
termes d’interfaces d’utilisation.
Parmi ces opérations
d’administration, on trouve principalement :
- L’installation sur les machines composant le parc informatique.
L’installation se résume en général à une
copie d’un ensemble de binaires exécutables, mais pour
être en mesure d’assurer le bon fonctionnement d’un logiciel, il
faut s’assurer que le logiciel installé ne possède pas de
dépendance vers d’autres entités logicielles non
présentes sur la machine d’installation (par exemple des
librairies).
- La configuration du logiciel. Pour être utilisé, le
logiciel doit être configuré (ou paramétré)
pour une utilisation particulière. Cette configuration prend en
compte les conditions d’utilisation du logiciel dans un environnement
particulier, par exemple le fait que le logiciel soit couplé
avec d’autres logiciels dans le cadre d’une infrastructure logicielle
globale.
- Le réglage pour des performances. Dans certains cas, un
réglage s’impose pour obtenir de bonnes performances. Ce
réglage peut consister à prévoir les ressources
allouées pour l’exécution du logiciel (par exemple le
nombre de machines sur lesquelles le logiciel va s’exécuter),
afin d’obtenir les performances requises en fonction de la charge qui
va lui être soumise. Lorsque les conditions peuvent changer en
cours d’exécution, ce réglage peut être
effectué dynamiquement, afin d’éviter un
écroulement des performances du service fourni.
- Traitement des pannes. Différentes pannes peuvent se
produire, en particulier des pannes matérielles
(défaillance d’une machine ou d’un organe physique sur une
machine) et des pannes logicielles (défaillance d’un service
logiciel sur une machine). Des actions de réparation doivent
alors être effectuées pour rétablir les services
affectés par ces pannes.
L’administration des logiciels dans une infrastructure répartie
pose de nombreux problèmes, provenant de la complexité
des logiciels ainsi que du fait qu’elle est généralement
effectuée par des humains :
- Erreurs. Une grande partie des mauvais fonctionnements
observés dans les environnements informatiques sont dus à
des erreurs de configuration des logiciels utilisés. Ces erreurs
proviennent principalement de la complexité des fonctions
d’administration de ces logiciels, mais aussi du fait que
l’intervention humaine est source d’erreurs.
- Réactivité. Une intervention humaine pour
régler ou réparer un service logiciel implique un
délai d’intervention qui n’est pas toujours acceptable. Un
réglage pour résoudre un problème de surcharge
temporaire doit être effectué dès que le
problème est détecté. De même, une panne
d’un service doit être réparée au plus vite afin de
maintenir la disponibilité du service.
- Ressources humaines. La tâche d’administration d’une
infrastructure logicielle est très coûteuse en termes de
ressources humaines. Le nombre de personnes affectées à
cette tâche croît avec la complexité des logiciels
utilisés. De plus, la réactivité se traduit
également par une augmentation des ressources humaines
affectées à l’administration.
- Ressources matérielles. Comme il est très difficile
d’être réactif lorsque l’administration est
effectuée par des humains, les politiques d’administration vont
se traduire par une sur-réservation de ressources
matérielles. Par exemple, pour maintenir la disponibilité
d’un service en présence de pannes, le service sera
dupliqué sur plusieurs machines ; pour anticiper une surcharge
temporaire, on surdimensionnera le nombre de machines allouées
pour ce service.
Approche
Une approche prometteuse pour traiter ces problèmes est de
concevoir un logiciel d’administration autonome (ou
auto-géré). Un tel logiciel est alors utilisé pour
installer, déployer et configurer les logiciels
administrés. Ce logiciel peut également observer
l’environnement d’exécution et les logiciels qu’il administre,
et réagir à des événements comme des pannes
ou des montées de la charge, afin de reconfigurer les logiciels
de façon autonome (sans intervention humaine). Les principaux
avantages de cette approche sont :
- Moins d’erreurs. Les logiciels sont administrés à
travers une interface programmatique, par opposition à des
fichiers de configuration complexes. Les opérations
d’administration globales sont effectuées par des programmes
autonomes utilisant ces interfaces. L’intervention humaine consiste
à décrire un comportement d’administration dans un
formalisme d’un haut niveau d’abstraction, dictant le comportement
suivi par le programme autonome.
- Réactivité. Concevoir un logiciel d’administration
autonome permet d’effectuer des actions d’administration
(réglage, réparation …) dynamiquement, en réponse
à des observations et sans intervention humaine.
- Economie de ressource. Un logiciel d’administration autonome
permet d’économiser des ressources humaines et
matérielles. Les ressources humaines sont
économisées parce que de nombreuses actions
d’administration ne nécessitent pas d’intervention humaine. Les
ressources matérielles sont économisées parce
qu’elles ne doivent pas nécessairement être
pré-allouées, mais peuvent être allouées
dynamiquement par le logiciel d’administration lors de la
réparation d’une panne ou lorsqu’une montée de la charge
est observée.
Dans le groupe de recherche que j’anime, nous explorons la conception
et la réalisation d’un logiciel d’administration autonome,
baptisé Jade [2,4]. Jade repose sur les concepts suivants :
- Un modèle à composants [5]. Jade modélise
l’environnement administré sous la forme d’une architecture
logicielle à composants qui fournit les fonctions de
déploiement, configuration et reconfiguration requises par les
opérations d’administration. Les logiciels administrés
sont encapsulés dans des composants et les opérations de
base d’administration de ces logiciels sont représentées
par des interfaces sur ces composants. Les entités
administrées sont donc manipulées à travers des
interfaces programmatiques clairement définies.
- Les services d’administration. Des services d’administration de
plus haut niveau gèrent cette architecture logicielle. Ils
incluent des boucles de contrôle permettant de relier des sondes
d’observation à des actions d’administration (reconfiguration).
Ces services sont eux-mêmes structurés en composants et
administrés par Jade. Ces services permettent de définir
les comportements autonomes souhaités.
Un prototype a été développé et est
opérationnel. Il met en oeuvre une administration autonome
visant la réparation des applications en cas de pannes et
l'adaptation dynamique de ces applications afin de gérer le
passage à l'échelle. Il sera étendu afin de
traiter d’autres aspects d’administration. Je décris dans la
section suivante quatre cibles applicatives sur lesquels nous avons
entrepris des travaux.
Applications
Serveurs
de données s’exécutant sur une grappe de machines
Un domaine d’application privilégié est celui des
serveurs de données s’exécutant sur une grappe de
machines. Nous étudions actuellement l’exemple des serveurs Web
à contenu dynamique [6]. Dans un tel serveur, une application
interagit avec des clients au travers de pages Web
générées dynamiquement. Un exemple
caractéristique est un serveur de commerce électronique
comme eBay.
Une des technologies disponibles pour construire ce type d’application
est de la développer suivant une architecture J2EE,
composée d’un serveur Web, d’un serveur de Servlets, d’un
serveur d’EJB (programmes Java) et d’un serveur de base de
données. Le serveur Web gère les pages statiques de
l’application. Le serveur de Servlets est chargé de
générer les pages Web dynamiques (partie
présentation). Le serveur EJB inclut les programmes constituant
le code métier de l’application (par exemple la gestion
d’enchères dans une application de type eBay). La base de
donnée gère les données persistantes de
l’application. Ces différents composants peuvent être
dupliqués sur des machines de la grappe pour des raisons de
performances et de disponibilité ; ils sont
interconnectés pour former une architecture logicielle
répartie sur la grappe.
Cependant, en cas de panne affectant un des composants de cette
architecture ou en cas de surcharge affectant le service fourni aux
clients, l’architecture logicielle ainsi que son implantation sur la
grappe doivent être reconsidérés. Alors que
traditionnellement, une intervention humaine est nécessaire pour
modifier l’implantation de l’application sur la grappe, Jade permet de
décrire un comportement autonome visant à détecter
les événements sensibles et à réparer
l’application. Dans le cas d’une panne, le composant fautif est
redémarré sur une nouvelle machine (allouée
dynamiquement) et les liaisons arrivant au et partant du composant
fautif sont mises à jour. Un comportement autonome
équivalent est décrit pour prendre en compte une
surcharge du serveur, ou tout autre aspect d’administration.
Application
multimédia répartie
Un autre domaine d’application potentiel pour la validation de ces
travaux est celui des applications multimédia réparties
utilisées dans un contexte ubiquitaire. L’informatique
ubiquitaire est caractérisée par des conditions
d’exécution très variées nécessitant des
adaptations. Les applications multimédia réparties sont
très sensibles aux conditions d’exécution :
capacités de traitement des machines impliquées,
capacités des réseaux traversés, capacités
d’affichage des terminaux utilisés, mais également nature
des logiciels (codecs) utilisés sur les différentes
machines. Il est alors intéressant d’adapter ces applications en
cours d’exécution afin de mieux gérer la qualité
de service.
Dans cet axe de travail, nous étudions l’adaptation dynamique
des applications multimédia, de façon transparente aux
applications installées sur les machines clientes et serveurs.
Les adaptations sont mises en oeuvre sur des sites
intermédiaires (proxy) et elles consistent à transformer
les données multimédia à la volée pour en
changer les caractéristiques (taille, format d’encodage, facteur
de compression …), ce qui impacte significativement les performances
des applications. Les proxies sont configurés dynamiquement en
fonction des besoins, sous la forme d’une architecture à
composants. Cette architecture peut être adaptée
dynamiquement (et de façon autonome) si les besoins changent en
cours d’exécution. Des résultats prometteurs ont
été obtenus, démontrant l’intérêt
d’une gestion autonome dans le contexte des applications
multimédia [3].
Plate-forme
de messagerie asynchrone
Le troisième domaine d’application de ces travaux que nous
envisageons est l’administration d’une plate-forme de messagerie
asynchrone. Ces plate-formes sont très utilisées comme
support pour implanter des systèmes de Médiation. La
société ScalAgent [13], créée par des
anciens membres du projet INRIA Sirac, développe des solutions
de médiation pour des clients comme Schneider Electric en
s’appuyant sur l’intergiciel JORAM, initialement
développé dans Sirac. JORAM [9] est une plate-forme de
messagerie asynchrone conforme à la spécification JMS
(Java Messaging Service) [10], fournissant des fonctions
avancées de messagerie (communication point à point ou
publish/subscribe). Un environnement JORAM est composé d’un
ensemble de serveurs installés dans une infrastructure
répartie (par exemple le réseau privé d’une
entreprise), ces serveurs étant chargés de l’acheminement
des messages. L’installation, la configuration et la maintenance de ces
serveurs est une tâche d’administration complexe. Des outils
d’administration sont nécessaires pour déployer une
architecture de serveurs, et la mettre à jour en cas de pannes
ou de déséquilibre (surcharge sur un des serveurs).
Notre objectif est de démontrer que ces tâches
d’administration peuvent être avantageusement prises en charge
par un logiciel d’administration autonome tel que Jade, qui permet
d'observer les conditions d’exécution et de reconfigurer
l’architecture des serveurs JORAM en conséquence. Dans ce
contexte, les politiques d’administration à implanter couvrent
les problèmes de la performance, de la disponibilité et
de la fiabilité, mais également les aspects de
sécurité.
Grilles de
calcul
Une infrastructure logicielle de calcul intensif sur une grille est
caractérisée par une grande complexité qui rend
difficile sa configuration et son administration. L'utilisation du
logiciel d'administration autonome Jade permet de simplifier le
déploiement et la configuration des applications sur la grille,
et de faire évoluer dynamiquement la configuration de ces
applications en fonction des besoins et des disponibilités en
ressources.
Une première expérimentation a été
menée avec Diet, un ordonanceur de calcul sur la grille
implanté au Laboratoire d'Informatique du Parallélisme
à Lyon. Nous avons utilisé Jade pour gérer le
déploiement et la reconfiguration en cas de panne de Diet sur un
ensemble de machines d'une grille.
Contexte scientifique
Dans le domaine des systèmes et applications répartis,
les dix dernières années ont vu une évolution
constante vers plus de flexibilité. Cette flexibilité a
été introduite initialement dans des outils de
développement (langages et compilateurs), puis dans des outils
de construction (configuration) et de déploiement. Les travaux
les plus récents visent des adaptations dynamiques des
logiciels, et la définition de politiques d’adaptation
associées à ces logiciels ; on parle alors de
systèmes et applications autonomes, ou encore d’administration
autonome. En 2002-2003, une initiative d’IBM [1] a défini plus
clairement les défis liés à la définition
de systèmes autonomes, et a marqué la création
d’une communauté très active.
En 2004, la première conférence internationale sur les
systèmes autonomes (ICAC) a été organisée
[8]. Le programme de cette conférence montre que l’attention a
principalement été portée sur l’optimisation et
les performances, et en second plan sur la tolérance aux pannes.
De nombreux autres aspects d’administration devront être
étudiés, en particulier la sécurité.
Plusieurs articles [7,11,12,14] ont proposé d’exploiter les
architectures logicielles à composants pour la construction de
systèmes autonomes.
Bibliographie
[1] Autonomic computing: IBM’s perspective on the state of information
technology. http://researchweb.watson.ibm.com/autonomic/.
[2] S. Ben Atallah, D. Hagimont, S. Jean, N. de Palma. A first step
toward autonomous clustered J2EE applications management. In 1st
International Workshop on Operating Systems, Programming Environments
and Management Tools for High-Performance Computing on Clusters
(COSET-1), Saint- Malo, France, June 2004.
[3] S. Ben Atallah, O. Layaïda, N. De-Palma, D. Hagimont. Dynamic
Configuration of Multimedia Applications In Proceedings of the 6th
IFIP/IEEE International Conference on Management of Multimedia Networks
and Services (MMNS), Belfast, Northern Ireland, September 2003.
[4] S. Bouchenak, F. Boyer, D. Hagimont, S. Krakowiak, N. Depalma, V.
Quéma, J.-B. Stefani, Architecture-Based Autonomous Repair
Management: Application to J2EE Clusters, 2nd International Conference
on Autonomic Computing (ICAC) - short paper, Seattle, June 2005.
[5] E. Bruneton, T. Coupaye, M. Leclercq, V. Quéma and J.-B.
Stefani. An Open Component Model and its Support in Java. In
Proceedings of the International Symposium on Component-based Software
Engineering, Edinburgh, Scotland, may 2004.
[6] E. Cecchet, A. Chanda, S. Elnikety, J. Marguerite and W.
Zwaenepoel. Performance Comparison of Middleware Architectures for
Generating Dynamic Web Content. In Proceedings of the 4th
ACM/IFIP/USENIX International Middleware Conference (Middleware), Rio
de Janeiro, Brazil, June 16-20, 2003.
[7] I. Georgiadis, J. Magee, and J. Kramer. Self-organizing software
architecture for distributed systems. In Proceedings of the 1st
Workshop on Self-Healing Systems, WOSS 2002. ACM, 2002.
[8] ICAC-2004, International Conference on Autonomic Computing, New
York, May 2004
http://www.caip.rutgers.edu/~parashar/ac2004/organization.html
[9] JORAM: Java (TM) Open Reliable Asynchronous Messaging
http://joram.objectweb.org/
[10] Java Message Service (JMS) http://java.sun.com/products/jms/
[11] H. Liu and M. Parashar, "Component-based programming model for
autonomic applications," in Proceedings of the International Conference
on Autonomic Computing (ICAC-04), (New York, NY), May 2004.
[12] P. Oriezy,M. Gorlick, R. Taylor, G. Johnson, N. Medvidovic, A.
Quilici, D. Rosenblum, and A. Wolf. An Architecture- Based Approach to
Self-Adaptive Software. IEEE Intelligent Systems 14(3), 1999.
[13] ScalAgent Distributed Technologies, http://www.scalagent.com/
[14] S. White, J. Hanon, I. Whalley, D. Chess, and J. Kephart. An
Architectural Approach to Autonomic Computing. In Proceedings IEEE Int.
Conference on Autonomic Computing (ICAC 2004), 2004.
Publications sur ces travaux
[5.25] N. de
Palma, S. Jean, S. Ben
Atallah, D. Hagimont, J2EE
Applications Deployment: A first Experiment, International
Conference on Parallel and Distributed Processing Techniques and
Applications (PDPTA’04), Las Vegas, June 2004. [PDF]
[5.28] S.
Bouchenak, F. Boyer, D.
Hagimont, S. Krakowiak, N. Depalma, V. Quéma, J.-B.
Stefani, Architecture-Based Autonomous Repair Management:
Application to J2EE Clusters, 2nd International Conference on
Autonomic Computing (ICAC) - short paper, Seattle, June 2005.
[5.30]
S.
Bouchenak, F. Boyer, D.
Hagimont, S. Krakowiak, A. Mos, N. Depalma, V. Quema, J.-B.
Stefani, Architecture-Based Autonomous Repair Management: An
Application to J2EE Clusters, 24th IEEE Symposium on Reliable
Distributed Systems (SRDS), Orlando, Florida, October 2005. [PDF]
[5.31] S. Sicard, N.
Depalma, D. Hagimont, J2EE Server
Scalability through EJB Replication, ACM Symposium on Applied
Computing (SAC), Special Track on Distributed
Systems and Grid Computing, Dijon, France, April 2006. [PDF]
[5.32] J. Philippe,
N.
Depalma, S. Bouchenak, J. Kornas, D. Hagimont, Offline Profiling for
Guaranteed Performance in Multi-Tiered Web Applications, International
Conference on Internet Computing, Las
Vegas, USA, June 2006. [PDF]
[5.33] D.
Hagimont, S.
Bouchenak, N. De Palma, C. Taton, Autonomic Management of Clustered Applications, IEEE International Conference on Cluster
Computing, Barcelona September 25th-28th, 2006. [PDF]
[5.34] B.
Claudel, N. De
Palma, R. Lachaize, D. Hagimont, Self-protection for Distributed Component-Based Applications,
Eighth International Symposium on Stabilization, Safety, and
Security of Distributed Systems
, Dallas,
USA, November 2006.
[PDF]
[7.8] S. Ben Atallah, D.
Hagimont, S. Jean, N. de Palma, A first step towards
autonomous clustered J2EE applications management, First
International Workshop on Operating Systems, Programming Environments
and Management Tools for High-Performance Computing on Clusters,
Saint-Malo, June 2004. [PDF]
[7.9] S.
Bouchenak, N. de Palma,
D. Hagimont, Autonomic
administration of clustered J2EE applications, IFIP/IEEE
International Workshop on Self-Managed Systems & Services, Nice,
May 2005. [PDF]
[7.10] C. Taton, S. Bouchenak, F. Boyer, NI de Palma, D.
Hagimont and A. Mos, Self-Manageable Replicated Servers. In VLDB
Workshop on Design, Implementation, and Deployment of Database
Replication (WDIDDR), at 31st International Conference on Very Large
Data Bases, Trondheim, Norway, August 2005. [PDF]
[7.11] C. Taton, S. Bouchenak, N. Depalma, D. Hagimont, S. Sicard,
Self-Sizing of Clustered Databases, 2nd IEEE International
Workshop on Autonomic Communications and Computing (ACC 2006),
Niagara-Falls, June 2006. [PDF]
Transparents
- Présentation au projet ANR Lego [PDF]
- Présentation workshop SelfMan [PDF]
Financements contractuels
Ces travaux menés à l'IRIT bénéficient du
support de l'ANR (Agence Nationale de la Recherche) au travers des
projets suivants :
- Lego: algorithmes and logiciels pour les infrastructures à
grande échelle
- Selfware: intergiciel pour l'administration autonome
d'infrastructures logicielles patrimoniales
- Scorware : intergiciel pour des infractuctures SCA (Service
Component Architecture)
Contact
Daniel Hagimont
Web : http://www.enseeiht.fr/~hagimont
Email : Daniel.Hagimont@enseeiht.fr
Phone : (+33) 561 588 383 (GMT+1)
Fax : (+33) 561 588 306