La
virtualisation
Oumarou KABORE
Consultant Ingénieur DevOps & Cloud
Sommaire 1. Généralités
2. Présentation de l’hyperviseur
3. Pratiques sur les Machines virtuelles
4. Vagrant – Automatisation de VMs
5. Machine virtuelle & cloud
6. Docker vs Machine virtuelle
Questions
La virtualisation
selon vous!
Généralités Historique
Le mot "virtuel" a connu une évolution au cours des dernières
années. Pas le mot lui-même, bien sûr, mais son usage s'est élargi
parallèlement à l'expansion de l'informatique, notamment avec
l'utilisation généralisée d'Internet et des smart phones. Les
applications en ligne nous ont permis de faire des achats dans des
magasins virtuels, d'examiner des lieux de vacances potentiels
grâce à des visites virtuelles, et même de conserver nos livres
virtuels dans des bibliothèques virtuelles. De nombreuses
personnes investissent un temps considérable et de l'argent réel
pour explorer et s'aventurer dans des mondes entiers qui n'existent
que dans l'imagination de quelqu'un et sur un serveur de jeux.
La première virtualisation à grande échelle a été réalisée sur les
mainframes IBM dans les années 1960.
La virtualisation est l’une des clés principales qui a donné naissance
aux services cloud en pleine expansion ces dernières années.
Généralités Définitions
• Selon les ingénieurs d’IBM, une machine virtuelle (VM) peut virtualiser toutes les
ressources matérielles, y compris les processeurs, la mémoire, le stockage et la
connectivité réseau. Un moniteur de machine virtuelle (VMM), qui est aujourd'hui
communément appelé hyperviseur, est le logiciel qui fournit l'environnement dans
lequel les VMs fonctionnent.
• Une définition simpliste serait de dire que la virtualisation est un ensemble de
technologies qui permettent d’obtenir tout type de ressources virtuelles (abstraites)
dont le fonctionnement et les performances très proches des ressources physiques à
partir desquelles elles ont été créées.
• La virtualisation utilise un logiciel (hyperviseur) qui simule les fonctionnalités du
matériel afin de créer un système virtuel.
Généralités Types de virtualisation
Virtualisation de serveurs Virtualisation de poste de travail
La virtualisation de serveurs est le type de virtualisation La virtualisation d’un poste de travail permet d’utiliser et
le plus répandu. Elle permet de créer facilement de de stocker des fichiers à des endroits auxquels tous les
nouveaux serveurs pour le déploiement de nouveaux membres d’une équipe peuvent accéder facilement.
services, créer des environnements de tests ou mieux Cela permet aux employés de travailler à distance en cas
gérer la répartition de ressources d’un serveur physique de problème.
Virtualisation d’applications Autres
D’autres types de virtualisation existent tels que la
Grâce à la virtualisation des applications, les utilisateurs
virtualisation de stockage, virtualisation des réseaux et la
peuvent accéder à une application qui n’est pas installée
virtualisation des données.
sur leur ordinateur.
Cette virtualisation est essentielle au travail à distance. Les
employés peuvent ainsi travailler depuis chez eux en
profitant de leurs outils professionnels
Généralités Avantages de la virtualisation
Moins de serveurs Meilleure sécurité
Le nombre de serveurs Les services applicatifs peuvent
physiques est réduit grâce aux être déployés de façon
VMs cloisonnée sur différentes VMs
assurant ainsi plus de sécurité
par le fait de l’isolation
Meilleure disponibilité Meilleure performance
Capacité de migrer les machines Scalabilité verticale sans downtime
à chaud en déplaçant une VM et possibilité d’équilibrer la charge
d’un serveur physique à un entre plusieurs VMs limitant les
autre sans besoin de la stopper ruptures de service
Economie financière Tremplin vers le cloud privé
Economie sur les coûts de La possibilité d’automatiser la
licence, possibilité de tester création de VMs à la demande
également de nouveaux services pour les services de votre
sans rien payer en remplaçant entreprise
les serveurs de test par des VM
Hyperviseur Description
Un hyperviseur est un arbitre des ressources. C'est un
logiciel qui se situe entre les ressources physiques Virtual Virtual Virtual
d'un serveur physique et les machines virtuelles qui Machine Machine Machine
fonctionnent sur ce serveur. En plus de l'allocation
Guest OS Guest OS Guest OS
des ressources, les hyperviseurs fournissent un
environnement virtuel pour ces charges de travail, Virtual Machine Monitor (VMM) or Hypervisor
permettent des réseaux virtuels pour la
communication entre les charges de travail et avec le
monde extérieur, et offrent diverses formes de Physical Server or Host
clustering pour la haute disponibilité.
Hyperviseur Rôles
Abstraction Performance Contrôleur
Fournir un Fournir cet Conserver
environnement environnement le contrôle
identique à avec un coût complet des
l'environnement minimal de ressources
physique performance du système
Virtualization Essentials 2nd Edition By Matthew Portnoy
Hyperviseur Types d’hyperviseur (1/2)
Virtual
Machine
Un hyperviseur de type 1 s'exécute directement sur le matériel
du serveur sans système d'exploitation en dessous. Comme il n'y
Hypervisor
a pas d'autre couche logicielle intermédiaire entre l'hyperviseur
et le matériel physique, on parle aussi d'implémentation "bare-
metal". Sans intermédiaire, l'hyperviseur de type 1 peut Physical server
communiquer directement avec les ressources matérielles de la
pile située en dessous de lui, ce qui le rend beaucoup plus Type 1
efficace que l'hyperviseur de type 2.
Exemples: vSphere, ESXi and ESX, Microsoft Hyper-V, Oracle VM
Virtual
Server, Citrix Hypervisor.
Machine
Hypervisor
Un hyperviseur de type 2 est en soi une application qui
fonctionne au-dessus d'un système d'exploitation traditionnel. OS
L’hyperviseur s’appuie sur l’os qui gère déjà toutes les ressources
matérielles. Physical server
Exemples: VMware Player, VMware Workstation, and Microsoft Type 2
Virtual Server, VirtualBox
Hyperviseur Types d’hyperviseur (2/2)
Les hyperviseurs de type 2 sont également moins fiables
car il y a plus de points de défaillance : tout ce qui affecte
la disponibilité du système d'exploitation sous-jacent peut
également avoir un impact sur l'hyperviseur et les invités
qu'il prend en charge. Par exemple, les correctifs standard
du système d'exploitation qui nécessitent un
redémarrage du système forceraient également le
redémarrage de toutes les machines virtuelles sur cet
hôte.
Un déploiement d'hyperviseur de type 2 utilise davantage
de ressources physiques qu'un hyperviseur de type 1,
dans la mesure où le système d'exploitation sous-jacent
consomme des ressources système en plus de celles
consommées par les activités de l'hyperviseur.
VM
Pratiques sur les VMs
Prérequis À faire
• Avoir au moins 4 Gb • Télécharger et Installer VirtualBox:
RAM
Lab1 • Avoir au moins 25 Gb
[Link]
d’espace disque libre
• Télécharger Ubuntu Desktop image:
• [Link]
• Créer une machine virtuelle (2Go RAM/25Go Disque)
basée sur Ubuntu Desktop et utilisant VirtualBox
comme hyperviseur.
Prérequis À faire
• Créer un répertoire nommé lab2 dans votre home
Lab2 directory de la VM
• Créer un point de montage entre lab2 et un
répertoire nommé data sur le bureau de la machine
hôte
• Déposer des fichiers dans le répertoire data de la
machine hôte et s’assurer qu’ils sont aussi disponibles
dans le répertoire lba2 de la VM.
Prérequis À faire
Lab3 • Lab1 réussi • Sur la machine virtuelle Ubuntu lab1 crée Installer un
serveur Nginx
• S’assurer que le service Nginx est démarré et
accessible sur la VM
• Faire les configurations nécessaires pour exposer le
service sur la machine hôte.
Prérequis À faire
Lab4 • Lab1 & 3 réussi
• Ajouter une clé SSH à la VM
• Se connecter à distance (depuis la machine hôte) à la
VM en utilisant la clée SSH
• Taper la commande curl localhost:80 et s’assurer que
le service Nginx est accessible
Vagrant Présentation
Vagrant est un logiciel libre et open-source
développé par Hashicorp pour la création et la
configuration des environnements de
développement virtuels.
Vagrant est compatible avec différents providers
dont virtualBox, vmware, docker etc.
La configuration nécessaire à vagrant pour
provisionner les ressources est contenue dans un
fichier nommé Vagrantfile
Docs: [Link]
Vagrant Fonctionnement
VM 1
Vagrant utilise des boxes pour la création des
Ubuntu machines virtuelles.
Une boxe est le format de package des
environnement vagrant. Elle peut être vu comme les
images iso utilisée pour la création des VMs.
La boxe à utiliser est spécifiée dans le Vagrantfile, la
machine virtuelle est alors instanciée selon les
Ubuntu Box spécifications dans la configuration.
Registry des boxes:
[Link]
VM 2
Ubuntu
Vagrant Vagrantfile
La fonction principale du fichier Vagrantfile
est de décrire le type de machine requis
pour un projet, ainsi que la manière de
configurer et de provisionner ces
machines.
Les fichiers Vagrant sont portables sur
toutes les plateformes supportées par
Vagrant. Exemple de Vagrantfile
On a la possibilité d’y définir l’hyperviseur
sur lequel la VM doit être créée, de préciser
la configuration réseau, l’installation des
packages à appliquer à la création etc.
Vagrant commandes
Initialisation du Vagrantfile: vagrant init
Téléchargement de box vagrant en local: vagrant box add box_name
Lister les boxes en local: vagrant box list
Suppression de box: vagrant box remove box_name
Création d’une VM à partir d’un Vagrantfile: vagrant up
Connexion ssh à la VM: vagrant ssh
Arrêt de la VM: vagrant halt
Suppression de la VM: vagrant destroy
Plus de commandes sur: [Link]
Prérequis À faire
• Avoir installé • Télécharger Vagrant 2.3.4
Lab1 VirtualBox • Lancer la commande: vagrant box add ubuntu/bionic64
• Vérifier que la box a bien été ajoutée (vagrant box list)
Prérequis À faire
• VirtualBox installé • Initialiser un Vagrantfile à partir de la box ubuntu/bionic64
Lab2 • Vagrant installé • Modifier le Vagrantfile et changer le hostname à miage
• Définissez l’adresse IP de la VM à [Link]
• Configurer le network et forwarder le port 1235 vers le port
80 de la VM
• Créer la VM
Prérequis À faire
• Installer nginx sur la VM
Lab3 • Lab2 réussi • Vérifier que le service nginx actif sur la VM
• Ngnix est-il accessible sur la machine hôte à localhost:1235
• Modifier le Vagrantfile pour que l’installation de Nginx soit
automatique à la création de la VM
Prérequis À faire
• Lab3 réussi
Lab4 • vmware installé
• Créer une nouvelle VM à l’image de ce qui a été fait au lab3
en utilisant vmware comme hyperviseur
• Utiliser la box centos/7
Prérequis À faire
• Lab2 réussi
Lab5 • Dans un même Vagrantfile modifier la configuration du lab3
pour créer 2 VMs de même type
Prérequis À faire
• Modifier et fixer des adresses IP privées pour les 2 machines
• Lab5 réussi créées en lab5
Lab6 • Modifier le hostname des machines respectivement en
miage-dev et miage-test
• Générer une nouvelle clé SSH et l’associer à la machine
miage-dev
• Se connecter à la machine miage-dev depuis la machine
miage-test en utilisant la nouvelle clé SSH
VM & Cloud Définition
Le cloud computing ou encore cloud public désigne la
livraison de ressources et de services informatiques à la
demande par le biais d’internet.
Contrairement au cloud privé où l’entreprise dispose de
ses entrepôts de données où elle maintient ses serveurs,
le cloud public donne accès à des ressources gérées par
un fournisseur qui se charge de la maintenance et la
sécurisation de l’infrastructure.
Le cloud se base sur des outils de virtualisation pour la
création des VMs.
VM & Cloud Types de cloud
Le cloud public Le cloud privé
✓ L’infrastructure est gérée par ✓ L’infrastructure est gérée par
le fournisseur l’entreprise
✓ Le fournisseur est garant de la ✓ L’entreprise assure la sécurité
sécurité du cloud (sécurité logicielle et physique des
des équipements) équipements
✓ Le cloud est ouvert au public ✓ Le cloud est réservé aux uniques
✓ Les data centers sont activités de l’entreprise
généralement plus importants ✓ Les data centers sont construits
et disponibles sur tous les pour répondre aux stricts besoins
continents de l’entreprise
On parle de cloud hybride lorsqu’une entreprise, en plus de son cloud privé,
décide de louer des services dans le cloud public.
2
8
VM & Cloud Types de services cloud
Infrastructure as a Service (IaaS): Platform as a Service (PaaS):
Fournit l’accès aux ressources offre des services applicatifs
informatiques élémentaires telles adaptés aux besoins variés tels que
que la capacité de traitement, les CRM.
capacité de stockage et mise en
réseau. Exemples: AWS EC2,
Microsoft Azure VM.
Software as a Service (SaaS): XaaS
Destiné aux équipes de Le « tout en tant que service »
développement logiciel. Cette offre (XaaS) L'idée est que toutes les
fournit l’infrastructure de fonctions IT peuvent être
traitement plus une couche de transformées en services pour les
plateforme de développement. grandes entreprises.
Docker Présentation
Docker est une plate-forme logicielle qui vous
permet de concevoir, tester et déployer des
applications rapidement. Docker intègre les logiciels
dans des unités normalisées appelées conteneurs,
qui rassemblent tous les éléments nécessaires à leur
fonctionnement, dont les bibliothèques, les outils
système, le code et l'environnement d'exécution.
Avec Docker, vous pouvez facilement déployer et
dimensionner des applications dans n'importe quel
environnement, avec l'assurance que votre code
s'exécutera correctement.
Docs: [Link]
Docker Docker vs VM
Conteneur applicatif
App 1 App 2 App 3
App 1 App 2 App 3
Socle app Socle app Socle app
Socle app Docker
VS
OS OS
VM sans Docker VM avec Docker
*Socle app représente le socle applicatif,
les outils et dépendances nécessaires au fonctionnement de chaque appli
Docker Concepts de base
Image : Une application empaquetée avec ses dépendances (socle techniques,
utilitaires applicatifs etc.) est appelée image docker.
Dockerfile: C’est le fichier qui contient toute la configuration ayant permis la
création de l’image.
Layer: Les images sont constituées de couches, chaque couche apportant une
modification (ajout/suppression) de ressource dans l’image.
Registry: Les images sont sauvegardées dans un dépôt public ou privé appelé
registry. Docker hub est le registry officiel docker, il en existe d’autres tels que AWS
ECR, Google container registry, Azure container registry.
Conteneur (container): Un container est une instanciation d’une image docker et
représente l’application en cours d’exécution.
Docker Avantages
Consommation réduite des ressources CPU RAM
Plus de containers: Plusieurs containers peuvent être lancés dans une
même VM ce qui optimise l’utilisation mutualisée des ressources
Reduction du coût du matériel: Plus besoin d’approvisionner
différentes VM pour isoler les applications
Déploiement très rapide
Docker commandes
Télécharger une image en local: docker pull image_name
Lancer un container: docker run image_name
Builder une image: docker build -t tag_name -f Dockerfile .
Tagger une image: docker tag old_tag new_tag
Pusher une image dans le registry: docker push image_name
Stopper un container: docker container stop container_name
Supprimer un container: docker container rm container_name
Lister les images: docker image ls
Supprimer un image: docker rmi image_name
Plus de commandes sur: [Link]
Prérequis À faire
• Docker installé
• Ou utilisé playwith
Lab1 docker Lancer un container nginx et vérifier l’accessibilité du
service, image de base: bitnami/nginx:1.23.3
Mapping des ports: 80:8080
Prérequis À faire
• Docker installé
• Ou utilisé playwith
Lab2 docker
Image docker à utiliser: bitnami/nginx:1.23.3
Modifier la page d’accueil de Nginx en montant un
volume contenant un fichier [Link]
Le volume doit être monté au path /app du container
Prérequis À faire
Lab3 Modifier le port d’écoute du conteneur pour qu’il écoute
sur 8081 au lieu de 8080
Surcharger la config du serveur en montant un volume
tel que décrit dans le docker hub de l’image
[Link]
Prérequis À faire
Lab3 Dockerfile
Construire une nouvelle image qui embarque tous les
fichiers ([Link], [Link]) utilisés dans les labs
précédents
Prérequis À faire
Lab4
Docker-compose
Example d’utilisation : Installation d’un site wordpress