33 0 1MB
VIRTUALISATION HAUTE DISPONIBILITÉ
VIRTUALISATION DES SERVEURS
Département TIC ENIT
Mohamed Escheikh 2021/2022
1
Virtualisation de serveurs 2
2
Virtualisation de serveurs 3
Définition et principes ❑La virtualisation de serveurs est : ➢un ensemble de techniques et d’outils permettant de faire tourner plusieurs systèmes d’exploitation sur un même serveur physique. ➢Un partage les ressources du serveur par les différents systèmes d’exploitation. ❑La virtualisation doit respecter deux principes fondamentaux : ❖Le cloisonnement : chaque système d’exploitation a un fonctionnement indépendant, et ne peut interférer avec les autres en aucune manière. ❖La transparence : le fait de fonctionner en mode virtualisé ne change rien au fonctionnement du système d’exploitation et a fortiori des applications.
3
Virtualisation de serveurs 4
Avantages
✓Faire fonctionner plusieurs OS sur le même environnement physique: Au lieu d'utiliser seulement 5% du processeur et de la mémoire de chaque serveur, on utilise un seul serveur à 90% ! ✓Electricité et climatisation: Un seul serveur physique vous coutera nettement moins cher en climatisation et électricité sur une période de 4 ans que 3 ou 4 serveurs. ✓Rapidité pour déployer un nouveau serveur: Déployer un nouveau serveur se compte ainsi en heures ou en minutes et non plus en semaines ✓Portabilité: Pour une machine physique, un serveur virtuel n'est qu'une suite de fichiers. Ils peuvent être déménagés sur n'importe quel type de matériel sans risque d‘erreurs au démarrage. Si besoin, ces fichiers peuvent être copiés sur un disque dur externe et être emportés pour remonter le serveur virtuel sur un serveur physique distinct dans d’autres locaux par exemple
4
Virtualisation de serveurs 5
Avantages
✓Continuité de service « haute disponibilité: Il s’agit ici d’installer 2 serveurs physiques (ou plus) en redondance (Cluster). Ainsi si un serveur physique rencontre une panne, les machines virtuelles qu’il héberge seront automatiquement migrées en quelques secondes vers le deuxième serveur physique. On peut ainsi avoir un taux de disponibilité de 99,9%. ✓Répartitions des applications, fiabilité: l'installation d'une application métier risque de remettre en cause le fonctionnement de la messagerie Microsoft Exchange pour d’éventuels problèmes de compatibilité. Ou bien encore un prestataire installant son application va devoir redémarrer plusieurs fois le serveur rendant ainsi indisponible le partage de fichiers et d’impressions. ➢Dans un environnement virtuel on peut dédier un serveur virtuel à une application spécifique, diminuant ainsi les risques d’immobilisations de l’ensemble des applications.
5
Virtualisation de serveurs Niveaux de virtualisation 6
❑ Au niveau applicatif : alias DNS, Virtual Hosts Apache ❑ Au niveau logiciel : machines virtuelles (java) ❑ Noyau en espace utilisateur : ❑ l'OS invité s'exécute comme une application utilisateur ❑ performances faibles (empilement de 2 noyaux) ❑ utilisé dans le développement noyau ❑ exemples : UML (User Mode Linux), coLinux, L4L (pour le temps réel)
6
Notions essentielles 7
Systèmes d'exploitation hôtes et invités
❖Le système d'exploitation a une main mise sur le matériel, c'est lui qui orchestre les accès à ce dernier. Mais alors, comment cela se passe lorsque plusieurs systèmes d'exploitation tournent en parallèle, sur un même ordinateur. Qui orchestre quoi? ➢la plupart du temps c'est un système d'exploitation qui gère les accès matériels, on l'appelle l'os hôte. On l'appelle ainsi car il héberge les autres systèmes d'exploitation, et orchestre les accès au matériel demandés par ces derniers, que l'on appelle os invités. ❖Cette hiérarchie permet de partager des ressources hardware entre plusieurs os
7
Notions essentielles 8
Machine virtuelle
❖Une machine virtuelle est un logiciel chargé d'émuler une machine physique. ❖Pour comprendre cela, il faut savoir qu'un système d'exploitation est fait pour s'exécuter sur une architecture d'ordinateur particulière (type de processeur, drivers spécifiques, langage assembleur...). L'OS a donc des contraintes matérielles qui doivent être respectées pour que ce dernier puisse faire son travail. ❖La machine virtuelle est une couche logicielle qui présente un ensemble d'instruction au système d'exploitation qu'elle héberge. ❖Cet ensemble d'instruction permet au système de faire des accès hardware sur du matériel virtuel (matériel émulé). La VM traduit et redirige ensuite ces appels vers le système hôte afin qu'ils soient 8 exécutés sur le matériel réel.
Opérations sur les machines virtuelles ❑Allocations dynamiques des ressources : ❑RAM, CPU, Disques, Bande Passante ❑Installation, sauvegarde, déplacement à chaud ❑Répartition des machines virtuelles (VM) sur les ❑machines physiques pour optimiser les charges ❑système et la consommation d’énergie ❑Sécurité, environnement de test ❑Livraison d'applicatif (appliance virtuelle) 9
Pilotage des machines virtuelles par Web services
L'automatisme: Ecrire un pseudo code d'allocation des ressources qui respecte les caractéristiques du NIST
10
Web services ❑Échange de données entre applications et systèmes hétérogènes ❑Exemple
–XML-RPC (XML - Remote Procedure Call) –SOAP (Simple Object Access Protocol) –REST (REpresentational State Transfer)
11
Notions essentielles 12
Hyperviseur ❖L’hyperviseur est la couche logicielle qui s’insère entre le matériel et les différents systèmes d’exploitation. ❖C’est un composant clé, que l'on retrouve dans la plupart des technologies de virtualisation de bas niveau.
❖L’hyperviseur peut soit gérer lui-même toutes les ressources matérielles du serveur, soit s’appuyer pour cela sur un système d’exploitation existant.
12
Notions essentielles Hyperviseur de type 1 Un hyperviseur de type 1 est un logiciel qui s'exécute directement sur une plateforme hardware. Il permet aux systèmes d'exploitation invités de rester relativement près du matériel et donc de conserver des performances proches d'un système de manière native.
13
Notions essentielles Hyperviseur de type 2 Un hyperviseur de type 2 est un logiciel qui s'exécute à l'intérieur d'un système d'exploitation, le système hôte. Les système invités devront donc traverser deux couches logicielles avant d'accéder au hardware. Les performances s'en ressentent, mais la facilité d'installation et de configuration de ce type de système de virtualisation représente un gros avantage.
14
Notions essentielles 15
Emulation
❖L’émulation consiste à simuler l’exécution d’un programme en interprétant chacune des instructions destinées au micro-processeur. ❖Il est possible d’émuler ainsi n’importe quel processeur et l’environnement complet d’un serveur. ❖L’émulation est la technique qui offre le plus haut niveau d’abstraction de la plateforme. ❖Pour les autres techniques de virtualisation tous les exécutables doivent être compilés pour le processeur physiquement disponible sur le serveur. ❖L’émulation lève cette contrainte car les instructions ne sont jamais exécutées par le processeur, elles sont interprétées en simulant le processeur. Cette interprétation est coûteuse en performances, de sorte que l’émulation est rarement utilisée en dehors d’applications ludiques ou de recherche. ❖Le projet QEMU est une solution open source de virtualisation par émulation.
15
Notions essentielles 16
Emulation
16
Techniques de virtualisation ❑ Isolation ❑Même noyau → même OS ❑ Para virtualisation ❑ Noyau modifié ou drivers spécifiques ❑→ OS spécifiques ❑ Virtualisation complète
❑ Système invité non modifié ❑→ n'importe quel OS
17
Techniques de virtualisation Par niveau d'abstraction croissant : ❑L’isolation (cloisonnement): consiste à mettre en place, sur un même noyau de système d’exploitation, une séparation forte entre différents contextes logiciels. ❑La paravirtualisation : présente aux systèmes d’exploitation une machine générique spéciale, qui requiert donc des interfaces spéciales, intégrées aux systèmes invités sous la forme de drivers ou de modifications du noyau. ❑La virtualisation complète, ou machine virtuelle: l’hyperviseur intercepte de manière transparente tous les appels que le système d’exploitation peut faire aux ressources matérielles, et supporte donc des systèmes invités nonmodifiés.
18
Isolation (cloisonnement)
19
Isolation (cloisonnement) ❑ La technique d'isolation (cloisonnement) : ❑ Intervient au sein d’un même système d'exploitation. ❑ Sépare un système en plusieurs contextes ou environnements différents. Chacun d'entre eux est régi par l'OS hôte, mais les programmes de chaque contexte ne peuvent communiquer qu'avec les processus et les ressources associées à leur propre contexte. ❑ Partitionne un serveur en plusieurs dizaines de contextes, presque sans ralentissement. ❑ Fournit un espace noyau non différencié, unique, et partagé entre les différents contextes. Mais on définit de multiples espaces utilisateurs cloisonnés. ❑ Faire cohabiter différentes distributions de système d’exploitation sur le même noyau.
20
Isolation (cloisonnement) ❖L’isolation est utilisée sous Unix pour protéger les systèmes. ❖Via des mécanismes comme chroot ou jail il est possible d'exécuter des applications dans un environnement qui n'est pas celui du système hôte, mais un « mini système » ne contenant que ce dont l'application a besoin, et n’ayant que des accès limités aux ressources. ❖Il est possible également de lancer des programmes dans une autre distribution que celle du système principal. Avantages: ✓une solution légère (Linux). ✓Performances natives. ✓faible overhead. Inconvénients: ✓noyau unique => robustesse(plantage du noyau ) ✓Mais le cloisonnement est généralement imparfait
21
Isolation (cloisonnement)
Architecture d'un isolateur
22
22
Isolation (cloisonnement) Exemples
❑ chroot (changement de racine) ❑ BSD Jail ❑ Linux Vserver ❑ OpenVZ (plus mature et disposant du plus grand nombre de ❑ fonctionnalités.) ❑ Zones Solaris
❑ LXC ❑ Docker
23
Paravirtualisation
24
Paravirtualisation ❑La para virtualisation ou pseudo virtualisation, est un type de virtualisation utilisant un Hyperviseur. ❑Au dessus de l’Hyperviseur, plusieurs systèmes d’exploitation cohabitent. ❑Parmi ces instances, il existe une qui est particulière appelée DOM0. ❑Cette instance privilégiée est la seule ayant un accès direct aux périphériques, les autres instances doivent être modifiées et leurs interruptions matérielles doivent être converties en interruptions logicielles. ❑Ainsi au niveau des OS modifiés, toutes les instructions sont modifiées avant d’être transmises à l’Os privilégié. Ces derniers en recevant les interruptions logicielles, les convertissent en interruptions matérielles avant de les transmettre aux périphériques. Ils permettent ainsi aux OS non privilégiés d’accéder aux périphériques. ❑Une telle technique de virtualisation impose la modification du code des OS qui y seront hébergés. Un exemple d’Hyperviseur utilisant la para virtualisation est Xen
25
Paravirtualisation ❑Si les systèmes d’exploitations invités fonctionnent en ayant « conscience » d’être virtualisés et sont optimisés pour ce fait, on parle alors de para-virtualisation. ❑Une technique de virtualisation de plus bas niveau que l'isolation. Elle partage avec cette dernière la nécessité d'utiliser un OS modifié. ❑Présente au système d’exploitation une machine générique spéciale, qui requiert des interfaces spéciales intégrées aux systèmes invités, sous la forme de drivers. ❑Le cœur de la paravirtualisation est un hyperviseur fonctionnant au plus près du matériel, et fournissant une interface qui permet à plusieurs systèmes hôtes d'accéder de manière concurrente aux ressources. ❑L'OS hôte doit être modifié ainsi que les OS appelés à s'exécuter sur les environnements virtuels. ❑Chaque système virtuel doit être modifié de façon à utiliser cette interface pour accéder au matériel.
26
Paravirtualisation ❑Contrairement à l'isolation, plusieurs OS de familles différentes peuvent fonctionner sur un même serveur physique. Il est ainsi possible de faire fonctionner Linux, NetWare, Solaris (et d'autres) simultanément sur une même machine. ❑Chaque OS aura alors accès à ses propres périphériques de stockage, sa propre mémoire, sa ou ses propres interfaces réseau, son ou ses propres processeurs, chaque ressource matérielle virtualisée étant partagée avec les autres environnements. ❑La nécessité de petites modifications au système d’exploitation invité exclut le support de systèmes fermés, et en particulier de Microsoft Windows.
27
Paravirtualisation Architecture
Hyperviseur type1
28
Paravirtualisation
Le mécanisme de redirection des appels système ❑Le contrôle d'un ou plusieurs matériel(s) est donné à un des OS virtualisé (celui qui contient le driver backend), ici le système d'exploitation 1. ❑Une fois celà compris, il sera simple d'imaginer que l'OS 2, qui souhaite accéder au hardware, devra passer par son driver front end qui redirigera les appels système vers l'OS 1. ❑L'inconvénient de cette technique est donc la dépendance d'un OS virtualisé vis à vis d'un autre qui se créé par ce mécanisme de driver. En effet si l'OS 1 tombe en panne, l'OS 2 ne pourra plus accéder au matériel.
29
Paravirtualisation Exemples ❑ Citrix Xen Server (libre) ❑ Vmware vSphere (anciennement Vmware ESXi et Vmware ESX) ❑ Microsoft Hyper-V ❑ Parallels Server Bare Metal ❑ Oracle vm (gratuit)
30
Virtualisation Complète
31
Virtualisation Complète
32
Virtualisation Complète Par exemple : ❑logiciels Microsoft (Microsoft VirtualPC, Microsoft Virtual Server), ❑logiciels Parallels (Parallels Desktop, Parallels Server), ❑Oracle VM VirtualBox (libre), ❑logiciels VMware (VMware Fusion, ❑VMware Player, ❑VMware Server, ❑VMware Workstation), ❑logiciels libres (QEMU : émulateur de plateformes x86, PPC, Sparc, et bochs : émulateur de plateforme x86), ❑KVM(libre).
33
Virtualisation Complète ❑La virtualisation complète, c’est un système d’exploitation qui exécute un logiciel nommé hyperviseur. ❑L’hyperviseur va permettre l’exécution de plusieurs machines virtuelles sur la machine physique. Il gère les accès mémoire, l’allocation du CPU et toutes les ressources nécessaires aux machines virtuelles. ❑L’hyperviseur gère l’ensemble des requêtes des machines virtuelles ce qui permet aux machines virtuelles de fonctionner sans aucune modification de leur noyau. ❑L'ensemble des systèmes d'exploitation virtualisés s'exécutant sur un unique ordinateur, peuvent fonctionner de manière totalement indépendante les uns des autres et être vu comme des ordinateurs à part entière sur un réseau. ➢Les machines virtuelles ne savent pas qu’elles s’exécutent de manière virtuelle.
34
Les solutions de virtualisation complètes disponibles sous LINUX ❑VMware, solution propriétaire comportant en sus des coûts de licence conséquents. ❑VirtualBox, solution libre et gratuite comportant cependant des Additions propriétaires fournis par Oracle. ❑QEMU/KVM, solution entièrement libre et gratuite intégrée dans le noyau Linux.
35
Flexibilité vs Performance
36
Règles simples pour choisir une solution de virtualisation 37
❖OpenVZ pour des environnements purement Linux, avec des besoins de hautes performances, sans contrainte au niveau du noyau. ❖Xen pour des environnements purement Linux, mais avec des besoins plus précis en termes de version noyaux, ou de fonctionnalités de haute-disponibilité, ou une grande hétérogénéité. ❖Xen pour des environnements Linux, ainsi que quelques serveurs Windows où la performance n'est pas un impératif, choisissez également Xen. ❖XenServer de Citrix pour des environnement purement Windows avec des besoins de haute performance, et de simplicité d'utilisation. ❖VMWare ESX pour des environnement mixte (Linux/Windows) mais avec peu de compétences spécifiques et besoin de la meilleure simplicité d’utilisation.
37
Comparaison Isolateurs-Hyperviseurs
38
La virtualisation par conteneurs ❑ La virtualisation par conteneurs consiste à déployer un système d’exploitation (OS) virtualisé. Ce système est partagé entre plusieurs instances. En outre ces différentes instances, s’exécutant en parallèle, se partagent un ensemble de librairies d’une manière sécurisée.
Architecture de Vserver ❑Ce type de virtualisation se base sur la présence d’une VM host possédant un accès privilégié au système, d’autres VM s’exécutent sur le même OS en utilisant les librairies exposées par le système. Un exemple de système utilisant la virtualisation par conteneur est Linux VServer
39
Récapitulons Plusieurs types de virtualisation existent, chacun ayant ses propres avantages et inconvénients. ❑virtualisation complète, l’hyperviseur se charge de créer un environnement virtuel complet en simulant du « faux » matériel. Le système d’exploitation invité n’aura alors accès qu’à ces ressources simulées, et non aux ressources matérielles réelles. Ce type de virtualisation est toutefois limité aux systèmes d’exploitation prévus pour la même architecture matérielle (x86, x64, ARM, ...) que le processeur physique de la machine hôte. ❑Pour dépasser cette limite, il faut faire appel à l’émulation : l’hyperviseur créé alors un environnement virtuel complet, en allant jusqu’à simuler un microprocesseur qui peut alors avoir une architecture matérielle différente de celle du CPU hôte. Le principal inconvénient de ce type de solution est alors le niveau de performances, souvent médiocre.
40
Récapitulons La paravirtualisation , le système d’exploitation invité est conscient de s’exécuter dans un environnement virtualisé, ce qui nécessite bien entendu certaines modifications logicielles. En
contrepartie, il devient capable d’interagir avec l’hyperviseur et de lui demander, le cas échéant, de transmettre directement les appels systèmes au matériel du serveur hôte. Les performances « virtuelles » sont alors théoriquement proches de celles qu’il serait possible d’atteindre avec le matériel réel.
Les quatre solutions gratuites, Microsoft Hyper-V Server 2012, VMWare vSphere Hypervisor 5.1.0, Citrix XenServer 6.1 et Proxmox VE 2.2, font justement partie des hyperviseurs capables de prendre en charge la paravirtualisation, sous certaines conditions.
41
Récapitulons
42