Le Cloud Computing ou l’informatique dans les nuages
Le Cloud Computing est un terme généralement employé pour désigner le paradigme de gestion et de prestation de services à la demande sur Internet. Il décrit un modèle, représentant l’infrastructure informatique comme un « nuage », accessible de n’importe où dans le monde, offrant de la puissance de calculs, de l’espace de stockage ou encore des logiciels en ligne à la demande. Les clients paient uniquement les services et les ressources utilisées, en fonction d’accords de qualité de service (SLA pour Service Level Agreement). Un SLA est un contrat passé entre le client et le fournisseur de services dans lequel sont indiquées les modalités d’exécutions des tâches. Ainsi, ce contrat peut indiquer une échéance de terminaison de la disponibilité du service, des temps d’exécutions inférieurs à un certain seuil, un délai maximum de réponse, etc. Bien qu’il s’agisse d’un concept récent, dans la littérature, les définitions du Cloud Computing sont variées. Deux d’entres-elles, retenues dans les travaux de Saurabh Kumar Garg and Rajkumar Buyya [GB12] présentent le Cloud Computing de manières différentes. La première définition est focalisée sur la technique alors que la seconde est axée sur l’aspect financier.
Ainsi, le NIST (National Institute of Standards and Technology)[MG11] défini le Cloud computing comme étant un modèle permettant d’accéder à la demande à des ressources partagées (serveurs, réseaux, stockages, applications et services). Celles-ci pouvant être rapidement réservées et libérées en fonction des besoins. De plus, le NIST indique que ce modèle favorise la disponibilité et qu’il est composé de : 5 caractéristiques principales : disponibilité en libre-service à la demande, ressources mutualisées, élasticité rapide, accès réseau universel (un environnement de type Cloud nécessite et est accessible via le réseau de n’importe où), service mesurable et facturable (l’utilisation est mesurée et facturée au détail).
4 modèles de déploiement : privé (ressources appartenant uniquement à un client), communautaire (ressources appartenant à et partagées pour plusieurs clients), public (ressources partagées pour tout les monde) et hybride (à la fois privé et public).
3 niveaux de services : Infrastructure-as-a-Service (IaaS), Plateform-as-a-Service (PaaS) et Software as-a-Service (SaaS).
La virtualisation, la technologie du Cloud Computing
La virtualisation est la technologie pouvant être décrite comme une technologie clé sur laquelle repose le Cloud Computing. Toutes applications déployées dans le Cloud sont exécutées au sein de plate-formes virtuelles, communément appelées machines virtuelles. La virtualisation permet la séparation de la couche matérielle et logicielle. Au sein d’une machine virtuelle, il n’ y a aucune connaissance de l’architecture sous jacente, architecture matérielle sur laquelle elle s’exécute. L’hyperviseur joue le rôle de passerelle entre la couche matérielle physique et les machines virtuelles. L’infrastructure informatique traditionnelle exécute plusieurs applications et consacre un serveur physique à chaque tâche. Cette approche est clairement coû teuse et peut être pas la meilleure utilisation des ressources dans la mesure où la tâche ne consomme pas la totalité des capacité des ressources 100% du temps. En effet, The Green Grid [BL09] montre dans son étude que les serveurs sont sous-utilisés. Le taux d’utilisation processeur moyen est de 5% avec un maximum de 10%. Dans cette étude 85% des serveurs ont un taux d’utilisation CPU inférieur ou égal à 6%. Cette même étude montre qu’en fonction des capacités et utilisations des serveurs physiques, une consolidation de 10 :1 est possible, sans surcharge processeur. C’est-à-dire qu’un serveur physique est capable de supporter la charge de 10 autres serveurs. Cette consolidation est possible en utilisant la virtualisation. Une autre étude [KT15], plus récente, montre qu’un tiers des serveurs est inutilisé. Ce pourcentage représente potentiellement 10 millions de serveurs dans le monde, portant la virtualisation ou non. Lié à cette sous utilisation des serveurs physiques, le coût énergétique peut également devenir un énorme problème dans les centres de données de grandes tailles. Les serveurs sont certes inutilisés mais consomment toujours de l’énergie, augmentant le gaspillage énergétique.
Les différentes études mettent donc en avant l’imparfaite exploitation des centres de données. La virtualisation permet de mutualiser plusieurs systèmes physiques sur une seule et même machine, sous forme de machines virtuelles. Elle réduit alors le nombre de serveurs physiques au sein des centres de données et permet de réduire le coût lié à l’inutilisation des ressources.
Les différents types d’hyperviseurs
Un hyperviseur est une couche logicielle sur laquelle s’exécute les machines virtuelles. Il permet la gestion des machines virtuelles, c’est à dire son cycle de vie. Le cycle de vie d’une machine virtuelle consiste en sa création et sa configuration (la configuration de ses ressources virtuelles, c’est à dire l’allocation d’une quantité de mémoire, d’un nombre de cœurs virtuels (VCPU), des périphériques virtuels et la capacité de stockage), son exploitation (utiliser la machine virtuelle et gérer son état) puis sa destruction. L’hyperviseur gère également l’accès aux ressources matériels des machines virtuelles. Dans [PG74], les auteurs Gerald J.Popek et Robert P.Goldberg classifient les hyperviseurs selon deux types.
Les Hyperviseurs de type 1 : Les hyperviseurs de ce type sont des hyperviseurs dits « natifs » ou « bare metal » car ils reposent directement sur le matériel. En effet, ce sont des systèmes d’exploitation à part entière. La VMM est directement intégrée dans le noyau du système d’exploitation. Contrairement à des systèmes d’exploitation standards, les hyperviseurs ne sont utilisés que pour supporter les tâches liées à la virtualisation. Les hyperviseurs de type 1 les plus connus sont VMware ESX/ESXi [MW05], Microsoft Hyper-V [VV09], XEN [BDF+03] et KVM [KKL+07].
Les Hyperviseurs de type 2 : Contrairement aux hyperviseurs de type 1, les hyperviseurs de type 2 ne reposent pas sur le matériel mais s’appuient sur un système d’exploitation existant. Ce sont les hyperviseurs les plus utilisés puisqu’ils sont destinés grand public. En effet, ces hyperviseurs sont simples d’utilisation et d’installation. Ils s’installent comment n’importe quelle autre application sur le système. Ainsi, la mise en place d’une machine virtuelle est rapide et permet de switcher rapidement entre le système hôte (celui qui supporte la virtualisation) et la machine cliente (la machine virtuelle). En revanche, ils sont moins performants que les hyperviseurs de type 1 dans la mesure où l’hyperviseur de type 2 s’exécute à côté des autres applications du système d’exploitation. De plus, ces hyperviseurs n’ont pas accès directement aux matériels, ils doivent communiquer avec le système d’exploitation sur lequel ils reposent. Les hyperviseurs de type 2 les plus répandus sont VMware Workstation/Player [vmwc], Microsoft Virtual PC [msv] et Oracle VirtualBox [ora].
Le cycle de vie des machines virtuelles
Le cycle de vie d’une machine virtuelle se décompose en plusieurs étapes : Création : la création d’une machine virtuelle peut se faire de deux façons. Soit la machine virtuelle est créée de zéro, soit elle est importée ou clonée. Dans le premier cas, cela consiste à créer une machine virtuelle « nue », c’est-à-dire définir ses caractéristiques (donner un nom, définir le serveur physique sur lequel elle est hébergée) et configurer ses ressources virtuelles (définir un nombre de VCPU ,une quantité de mémoire virtuelle, un ou plusieurs disques durs, un ou plusieurs périphériques de stockage). La machine virtuelle « nue » ne dispose d’aucun système d’exploitation, elle n’est pas « prête à l’emploi ». Dans le second cas, il s’agit d’importer ou cloner une machine virtuelle déjà existante. Ce procédé permet de déployer facilement et rapidement une nouvelle machine virtuelle. Facilement dans la mesure où sa mise en place ne nécessite que quelques actions par l’administrateur. Rapidement car le déploiement consiste uniquement en la copie de la machine virtuelle importée ou clonée. Le temps de déploiement est donc plus rapide que le temps passé à la création d’une machine virtuelle de zéro (création, installation du système d’exploitation, environnement logiciel, etc…). De plus, une fois son déploiement effectuée, la machine virtuelle est « prête à l’emploi ».
Exploitation : l’exploitation d’une machine virtuelle consiste en son utilisation. Au cours de cette période, tout comme pour un serveur physique, une machine virtuelle peut être démarrée, redémarrée ou arrêtée. La virtualisation apporte de plus d’autres possibilités : suspendre : il s’agit de « mettre en pause » l’activité de la machine virtuelle. Cette dernière cesse son exécution, libérant ainsi les ressources processeur, mémoire (la mémoire utilisée par la ma chine virtuelle est alors stockée sur disque dur) et réseau. sauvegarder : il s’agit de copier l’état actuel de la machine virtuelle. La copie créée est appelée snapshot. Ces sauvegardes permettent de redémarrer la machine virtuelle à un état antérieur en cas de besoin (suite à une application vérolée par exemple). migrer : il s’agit de déplacer la machine virtuelle d’un serveur à un autre. La migration est souvent liée aux besoins en ressources. Il existe deux types de migrations. La migration dite à « froid », qui consiste à déplacer une machine virtuelle suspendue et à « chaud » [CFH+05], qui consiste à déplacer une machine virtuelle en cours d’exécution.
Destruction : il s’agit du processus de dé-commissionnement de la machine virtuelle. Une fois que cette dernière n’est plus utile, la machine virtuelle est soit désinscrite, soit supprimée. La désinscription consiste en la suppression de la liste des machines virtuelle à administrer. L’ensemble des fichiers liés à la machine virtuelle sont sauvegardés. La suppression consiste en la suppression de tous les fichiers liés à cette machine virtuelle.
Les compteurs processeur
Une machine virtuelle ressemble en tout point à une machine physique dans la mesure où elle dispose égale ment d’un ensemble de ressources matérielles mais virtualisées. Comme une machine physique, la machine virtuelle possède un nombre de processeurs virtuels appelés vCPU. De la même manière qu’un processeur ordonnance des processus, l’hyperviseur, qui met à disposition des machines virtuelles les ressources matérielles, ordonnance les accès aux différents cœurs logiques (autrement appelés « Threads ») du processeur. De cette façon, chaque vCPU dispose d’un état. Lors du démarrage d’une machine virtuelle, les vCPU as sociés à cette machine virtuelle sont créés. Chacun de ces vCPU est à l’état « RUN » ou à l’état « READY », en fonction de la disponibilité de la ressource matérielle. Un vCPU à l’état « RUN » dispose de l’accès au pro cesseur. Un vCPU à l’état « READY » est en attente d’accès au processeur, ce dernier n’étant pas disponible, probablement dû à une surcharge du processeur. Il rentre dans l’état « RUN » une fois que l’ordonnanceur lui donne accès au processeur. Il peut ensuite être dés-ordonnancé et rentre dans l’état « READY » ou « COS TOP » ou être mis en attente si ce dernier est bloqué par l’accès à une ressource (disque ou réseau). Il sera plus tard réveillé une fois que la ressource bloquante est disponible. L’état « COSTOP » n’existe que pour des machines virtuelles ayant plusieurs vCPU. En effet, le « COSTOP » est un état dans lequel un vCPU est en attente d’autres vCPU afin d’être ordonnancés simultanément.
Table des matières
1 Introduction
1.1 Contexte
1.2 Objectifs
1.3 Contributions
1.4 Organisation du document
1.5 Diffusion scientifique
I Contexte
2 Le Cloud Computing et la Virtualisation
2.1 Le Cloud Computing ou l’informatique dans les nuages
2.1.1 Définition
2.1.2 Les niveaux de services
2.1.2.1 IaaS-Infrastructure-as-a-Service
2.1.2.2 PaaS-Platform-as-a-Service
2.1.2.3 SaaS-Software-as-a-Service
2.1.3 Les systèmes Ia aS
2.1.3.1 Les caractéristiques
2.1.3.2 Le monitoring
2.1.4 La virtualisation, la technologie du Cloud Computing
2.2 La Virtualisation
2.2.1 Définition
2.2.2 Les différents types d’hyperviseurs
2.2.2.1 Les Hyperviseurs de type1
2.2.2.2 Les Hyperviseurs de type2
2.2.3 La mise à disposition des ressources
2.2.3.1 Les ressources matérielles
2.2.3.2 Les ressources virtuelles
2.2.4 Le cycle de vie des machines virtuelles
2.3 Conclusion
II Contributions
3 Supervision des ressources systèmes dans les centres de données
3.1 Études des compteurs de performances
3.1.1 Les compteurs processeur
3.1.1.1 Run
3.1.1.2 Ready
3.1.1.3 Wait
3.1.1.4 Costop
3.1.2 Les compteurs mémoire
3.1.2.1 Terminologie
3.1.2.2 Partage de pages mémoires
3.1.2.3 NUMA
3.1.2.4 Ballooning
3.1.2.5 Compression mémoire
3.1.2.6 Swapping
3.1.3 Les compteurs disque
3.1.3.1 Architecture stockage
3.1.3.2 IOPS
3.1.3.3 Latence disque
3.1.4 Les compteurs réseau
3.1.4.1 Architecture réseau
3.1.5 Disponibilités des métriques de performances au sein des hyperviseurs
3.2 L’Introspection
3.2.1 Définition
3.2.2 Contexte
3.2.3 Les principaux frameworks basés sur l’introspection
3.2.4 Le fossésémantique
3.3 Contribution
3.3.1 Etude de la gestion de la mémoire sous Linux
3.3.2 Etude des structures de données pour la gestion des processus dans Linux
3.3.2.1 Structuretask_struct
3.3.2.2 Structuremm_struct
3.3.3 Une extension à LibVMI
3.4 Conclusion
4 Analyses des ressources systèmes
4.1 Analyse avancées des compteurs de performance des serveurs physiques et virtuels
4.1.1 Analyse d’anomalies liées au processeur
4.1.1.1 Détection d’une surcharge au sein de la machine virtuelle
4.1.1.2 Détection d’une surcharge vCPU au niveau de l’hyperviseur
4.1.1.3 Détection d’une surcharge vCPU au niveau de la machine virtuelle
4.1.2 Analyse d’anomalies liées à la mémoire
4.1.2.1 Etude fine de la mémoire active
4.1.2.2 Détection de sur-provisionnement mémoire au niveau de l’hyperviseur
4.1.2.3 Détection de contention mémoire au niveau de l’hyperviseur
4.1.3 Analyse d’anomalies liées au disque
4.1.3.1 Détection de latence au niveau de la machine virtuelle
4.1.3.2 Détection de commandes échouées au niveau de la machine virtuelle
4.1.4 Analyse d’anomalies liées au réseau
4.1.4.1 Détection de paquets perdus/erronés au niveau de la machine virtuelle
4.1.4.2 Reconfiguration de la carte virtuelle de la machine virtuelle
4.2 Analyse comportementale des centres de données
4.2.1 Etat de l’Art
4.2.2 Contributions
4.2.2.1 Traces récoltées
4.2.2.2 Comportements pré-déterminés
4.2.2.3 Comportements atypiques
4.3 Conclusion
5 Expérimentations
5.1 Evaluation de la sonde VMware
5.1.1 Impact de la sonde sur leVMware® VCenter
5.1.2 Impact de durée de l’échantillonnage sur l’analyse comportementale
5.2 Evaluation de la sonde Linux
5.3 Evaluation de l’analyse comportementale
5.3.1 Recherche de comportements pré-déterminés
5.3.2 Recherche de comportements atypiques
5.3.3 Evaluation de l’outil d’analyses comportementales
III Conclusion
6 Conclusion et Perspectives
6.1 Conclusion
6.2 Perspectives
6.2.1 Etude énergétique Docker/Virtualisation
6.2.2 Sonde de supervision
6.2.3 Gestion des capacités
6.2.4 Plan de consolidation