LE Cloud Computing (l’informatique « dans les nuages ») est un paradigme de l’informatique qui vise à mettre à disposition des services ou des infrastructures disposant de très grandes capacités de calculs et de stockages, facturés en fonction de la demande (modèle pay-as-you-go). Les différentes offres de Cloud Computing reposent principalement sur 3 niveaux : Infrastructure as a Service (IaaS), Plateform as a Service (PaaS) et Software as a Service (SaaS). Ainsi, les services offerts par le Cloud Computing peuvent aller de la mise à disposition d’applications en ligne (SaaS) jusqu’à la mise à disposition de ressources matérielles (IaaS). Au niveau Iaas, les fournisseurs de Cloud mettent à disposition ces ressources sous forme de machines virtuelles (VM). Pour l’utilisateur, les machines virtuelles sont en tout point identiques à des machines physiques, appelées « serveurs ». La mise en place des machines virtuelles est possible grâce aux techniques de virtualisation permettant ainsi d’utiliser efficacement les ressources des serveurs (processeur, mémoire, E/S réseau, etc).
Aujourd’hui, les systèmes d’IaaS (VMware® VCenter, CloudStack, OpenStack, etc.) sont des produits matures et largement diffusés au sein des centres de données des entreprises. Pour le fournisseur de service IaaS, l’intérêt de proposer des machines virtuelles (VM) est double. Premièrement, il peut déployer des machines virtuelles dans des temps très courts, par rapport au déploiement d’un serveur physique. Deuxièmement, d’héberger sur un même serveur physique, plusieurs machines virtuelles et ainsi optimiser ses coût de fonctionnement et d’investissement. La conséquence de ce déploiement rapide et facile est que le nombre de machines virtuelles au sein de l’IaaS n’a cessé de croître, pour arriver, d’après une étude interne, à des taux de consolidation d’environ 3 machines virtuelles par cœur logique, soit environ 50 machines virtuelles pour un serveur de 16 cœurs logiques. Cette explosion du nombre de machines virtuelles incite les administrateurs à s’équiper d’outils d’analyses pour la gestion de leurs centaines à milliers de machines virtuelles.
Des outils, tels que VCOps de VMware® DCScope d’EasyVirt ou VM Turbo, analysent l’activité des machines virtuelles (principalement les ressources processeur et mémoire) dans l’objectif de déterminer leur comportement. L’analyse comportementale permet de détecter d’éventuels problèmes de performances, des problèmes de dimensionnement ou au contraire détecter des machines virtuelles probablement non inutilisées. Les solutions précédemment citées réalisent les mêmes analyses, faites à partir de comportements que nous définissons comme « pré-déterminés ». En effet, ils sont « pré-déterminés » dans la mesure où il est difficile voir impossible de changer les paramètres de ces comportements. Par exemple, dans VCOps, une machine virtuelle est classée idle si son activité processeur et mémoire n’excède jamais 10% de ses capacités. Définir un pourcentage fixe pour un centre de données dans lequel coexiste des serveurs physiques hétérogènes n’a pas de sens. Ces solutions ont également un deuxième inconvénient. Elles ne permettent pas de filtrer le bruit. Une machine virtuelle dispose toujours d’une activité (pics d’activités) même si elle n’est plus utilisée. Cette activité peut provenir du système d’exploitation (vérification/installation des mises à jour) ou d’une application ayant une activité temporaire (exécutions d’anti-virus). Il est important pour un administrateur de pouvoir paramétrer les comportements « pré-déterminés » en fonction de son centre et gérer la notion de bruits dans le but d’affiner la détection de comportements des machines virtuelles analysées. Il est nécessaire que l’outil d’analyses puisse déterminer également les machines virtuelles à comportement atypique, afin d’identifier facilement, dans un parc de plusieurs centaines de machines virtuelles, les machines virtuelles à surveiller. En effet, nous savons que globalement les machines virtuelles d’un même centre de données font principalement toutes plus ou moins la même chose. Une machine virtuelle est dite atypique si son profil (consommation ressources systèmes) s’éloigne des autres. Potentiellement, une machine virtuelle atypique peut s’expliquer par un fonctionnement normal mais unique de l’application qu’elle encapsule (analyseur de spams) mais peut également être provoqué par une application vérolée ou tombée en panne. Identifier de manière dynamique, rapide et automatique les machines virtuelles atypiques, permet des gains très important en terme de sûreté de fonctionnement d’un centre.
La surveillance des ressources systèmes consommées par les machines virtuelles sur un serveur physique est également un élément clé pour garantir le bon fonctionnement d’une plate-forme IaaS. Les métriques classiques sont le taux d’occupation processeur ou mémoire, les accès disques et réseaux ou la latence. Il existe de nombreux outils permettant de collecter ces métriques. Ils peuvent être classifiés suivant trois approches différentes et complémentaires. Les premiers utilisent des sondes systèmes au niveau de l’hyperviseur. Ces sondes, orientées serveur, permettent de collecter des données gros grain sur la consommation des ressources d’une ou de plusieurs machines virtuelles. Si ces sondes sont assez simples à mettre en œuvre, elles ne permettent pas de collecter la consommation ressource des processus s’exécutant dans la machine virtuelle. Ainsi, la seconde approche consiste à installer des sondes à l’intérieur des machines virtuelles. Ces sondes orientées processus accèdent, de la même manière que les sondes serveur, au métrique du système d’exploitation. Pour affiner l’analyse, la troisième approche consiste à instrumenter une application au sein d’une machine virtuelle en vue de récolter des métriques dans le but de s’assurer du bon fonctionnement de l’application (temps de réponse, latence applicative etc). Par rapport à un client d’une solution Cloud, l’installation de sonde peut être plus ou moins intrusive. Les sondes systèmes peuvent être déployées sans intrusion. Les sondes processus imposent l’installation dans la machine virtuelle du client d’un composant logiciel système. Les sondes applicatives peuvent nécessiter une réécriture de l’application du client. Dans de très nombreux contextes, essentiellement pour des raisons de sécurité et de maintenance, les clients ne souhaitent pas installer au sein de leurs machines virtuelles des composants logiciels non maîtrisés. De ce fait, les fournisseurs de Cloud ne peuvent installer que des sondes systèmes, perdant ainsi la finesse d’analyse que pourrait apporter des sondes processus ou applicatives.
L’objectif de cette thèse est de développer un système d’analyse avancée et d’optimisation d’infrastructures Cloud, allant de l’introspection à l’analyse comportementale des machines virtuelles. Dans ce but, cette thèse met en avant quatre sous-objectifs :
• Métriques de performances avancées : Mesurer et analyser l’activité des machines virtuelles et des serveurs est une préoccupation majeure des fournisseurs de Cloud, en vue de garantir les contrats de service négociés avec leurs clients. Malheureusement les métriques disponibles au niveau d’un IaaS sont d’assez gros grains et ne permettent pas une analyse fine des consommations ressources d’une machine virtuelle. L’analyse fine de l’activité des machines virtuelles repose alors sur une étude approfondie des métriques de performances. Pour une même ressource, le nombre de compteurs est important. Il faut alors bien comprendre la sémantique de chacun des compteurs dans le but de bien choisir ceux représentant l’activité réelle de la machine virtuelle.
• Introspection non intrusive : Déployée au niveau de l’hyperviseur, les sondes systèmes non intrusives permettent de suivre l’activité des serveurs et des machines virtuelles. Ces sondes nous permettent ainsi de collecter les métriques de performances, principalement pour les ressources processeur et mémoire. La non intrusivité de ces sondes permet un déploiement sans contraintes chez les fournisseurs de Cloud dans le mesure où elles ne nécessitent aucun agent dans les machines virtuelles, respectant ainsi la sécurité et le bon fonctionnement des machines virtuelles des clients de solutions Cloud.
• Analyses comportementales : L’analyse fine des ressources systèmes peut être utilisée dans plusieurs contextes tels que la sécurité, la tolérance aux pannes, les fuites mémoires ou encore l’optimisation de l’infrastructure et sa consommation énergétique. Nous distinguons deux types d’analyses. La première recherche les machines virtuelles ayant des comportements pré-déterminés. Il s’agit de machines dont l’activité répond à des critères identifiés. Ce type d’analyse permet par exemple, de connaître rapidement les machines virtuelles « à risque », celles dont les consommations en ressources sont importantes. La seconde analyse recherche les machines virtuelles ayant des comportements atypiques. Il s’agit de rechercher automatiquement les machines virtuelles ayant un profil d’activités différent des autres.
• Préconisations / Optimisations : L’analyse des comportements pré-déterminés et atypiques permet à l’administrateur d’identifier des machines virtuelles sans activités (comportements idle,lazy), qui peuvent potentiellement être arrêtées. En arrêtant voir supprimant ces dernières, l’administrateur peut de ce fait libérer des ressources au sein du centre de données et donc éviter le rachat de nouveaux équipements. Cette analyse lui permet également d’identifier les machines virtuelles dont les capacités des ressources doivent être augmentées (buzy, undersized) ou au contraire diminuées (oversized). En redimensionnant les machines virtuelles, les gains en ressources peuvent être importants. En effet, le redimensionnement peut se faire sur 2 ressources : la ressource processeur, via l’affectation de vPCU (virtual CPU) et la ressource mémoire.
1 Introduction |