Cloud Et Virtualisation
Cloud Et Virtualisation
Cloud Et Virtualisation
&
VIRTUALISATION
2023/2024
Pr. Mohammed NASRI
Chapitre 1
Virtualisation
Histoire de la Virtualisation
Chapitre 2
Définitions
&
Concepts
Machine Virtuelle (VM) / Conteneurs
Définition: Une machine virtuelle est une émulation logicielle d'un système physique. Elle
fonctionne sur la base d'un hyperviseur, qui permet à plusieurs VM de partager les ressources d'un
même serveur physique tout en fonctionnant comme des systèmes distincts.
Isolation: Chaque VM dispose de ses propres ressources (CPU, mémoire, disque, etc.) et exécute
un système d'exploitation complet, ce qui peut être différent pour chaque VM.
■ Utilisation: Les VM sont souvent utilisées pour partitionner de grandes ressources physiques,
pour consolider des serveurs
Conteneur
Définition: Les conteneurs sont des environnements d'exécution isolés qui partagent le même
noyau du système d'exploitation, mais fonctionnent dans des espaces utilisateur séparés.
Isolation: Les conteneurs sont plus légers que les VM car ils ne nécessitent pas de système
d'exploitation complet. Au lieu de cela, ils reposent sur le noyau du système d'exploitation hôte.
Domaines de
virtualisation
Domaines de virtualisation
■ Conteneurs (Isolation)
■ Streaming d’application (Distribution)
■ Virtualisation d’Applications Autonomes (Isolation)
Virtualisation des Applications – Types
1. Portabilité : Les apps sont encapsulées dans des packages autonomes faciles à déployer sur
différents machines sans avoir à réinstaller ou à configurer l'application à chaque fois.
2. Isolation : L’app s'exécute dans un environnement isolé, ce qui réduit les conflits entre les applications
et garantit que l'application fonctionne de manière stable.
3. Facilité de Gestion : La virtualisation simplifie la gestion des applications, car les mises à jour et les
correctifs peuvent être appliqués de manière centralisée sur le serveur.
4. Compatibilité : Les apps virtualisées peuvent être exécutées sur des systèmes d'exploitation différents,
ce qui facilite la transition vers de nouveaux environnements sans avoir à reconfigurer l'application.
5. Sécurité : La virtualisation d'applications peut renforcer la sécurité, car les applications s'exécutent dans
un environnement isolé et n'ont pas accès aux ressources système sensibles. Aussi, la gestion des droits
peut se faire au niveau du serveur (pour la config Client/Serveur)
Virtualisation des Applications –Cons
1. Performance : L'isolation des applications peut entraîner une légère surcharge de performance, car
elles s'exécutent dans un environnement virtuel. Aussi, en mode pixel, les applications chargées en
composants graphique deviennent lourdes.
2. Complexité : La mise en place d'un système de virtualisation d'applications peut être complexe et
nécessiter une configuration minutieuse.
3. Taille des Packages : Les packages d'application virtualisés peuvent être plus volumineux que les
installations traditionnelles, car ils contiennent toutes les dépendances nécessaires.
4. Compatibilité Limitée : Certaines applications, en particulier celles nécessitant un accès direct aux
ressources matérielles, peuvent ne pas être adaptées à la virtualisation.
Parallels desktop
Virtualisation des Machines – Pros
1. Facilité d'Utilisation : Les machines virtuelles sont généralement faciles à configurer et à utiliser, ce
qui les rend accessibles aux tout le monde.
2. Coût Réduit : Il n'est pas nécessaire de disposer de matériel dédié pour exécuter des machines
virtuelles.
3. Compatibilité : Les machines virtuelles sont généralement compatibles avec une variété de systèmes
d'exploitation hôtes, ce qui permet aux utilisateurs d'exécuter différentes plates-formes sur un seul
ordinateur (Windows sur un Mac, Mac sur un Linux, etc.).
4. Souplesse : Les utilisateurs peuvent exécuter plusieurs machines virtuelles sur un même système
d'exploitation hôte, ce qui leur permet d'isoler des environnements de développement, de test ou
d'autres applications.
5. Facilité de Développement : Les développeurs peuvent utiliser des machines virtuelles pour tester
leurs applications sur différents systèmes d'exploitation sans avoir besoin de plusieurs ordinateurs
physiques.
Virtualisation des Machines –Cons
1. Performance : Les machines virtuelles ont tendance à avoir des performances inférieures, car elles
s'exécutent au-dessus d'un système d'exploitation hôte.
3. Limitations de Performance : Les applications qui nécessitent des performances élevées ou un accès
direct au matériel peuvent ne pas être adaptées à l'exécution dans une machine virtuelle.
4. Dépendance à l'Hôte : Les machines virtuelles dépendent du système d'exploitation hôte, ce qui
signifie qu'une défaillance de l'hôte peut affecter toutes les machines virtuelles qui y sont exécutées.
Virtualisation des Serveurs - Aperçu
Définition : s'exécutent directement sur le matériel physique de la
machine, sans nécessiter de système d'exploitation hôte. Les VMs
s'exécutent directement sur l'hyperviseur sans nécessiter un système
d'exploitation intermédiaire.
2. La mutualisation des machines a un impact fort sur la réduction des coûts en matériel, et en exploitation
(consommation électrique minimisée, entretien physique simplifié, surveillance, support amélioré, etc.)
3. Les environnements fortement virtualisés simplifient l’installation, les tests, les développements, et
permettent de répondre à différents points sans casser le système d’exploitation hôte.
4. Les gains en sécurisation d’un réseau vu que les systèmes d’exploitation virtuels ne sont pas toujours
visibles à l’attaquant
5. La virtualisation permet aussi une allocation dynamique de la puissance de calcul en fonction des
besoins de chaque application à un instant donné,
6. Flexibilité des ressource et dimensionnement des serveurs lors de la définition de l’architecture d’une
application vu que l’ajout de puissance est transparent.
Virtualisation des Serveurs –Cons
1. Complexité de la configuration : peut être plus complexe que celle de la virtualisation de type 2.
Cela nécessite généralement une planification minutieuse, une expertise technique et des compétences
spécifiques en gestion de serveurs.
2. Utilisation des ressources matérielles : plus exigeants en termes de ressources matérielles, car ils
s'exécutent directement sur le matériel. Cela signifie qu'ils peuvent nécessiter des serveurs plus
puissants avec une quantité significative de mémoire et de puissance de calcul.
3. Coût initial : coûts initiaux plus élevés en termes d'achat de matériel, de licences logicielles et de
maintenance, ce qui peut rendre l'adoption plus onéreuse pour les petites entreprises.
5. Sécurité : Bien qu’elle offre généralement un haut niveau de sécurité, elle peut également présenter
des risques potentiels si elle n'est pas correctement configurée et sécurisée.
Virtualisation du stockage - Aperçu
■ Avantage :
– Partage de Données
– Accessibilité à Distance
■ Inconvénients :
– Cout initial,
– Performance
Virtualisation du stockage - SAN
■ Storage Area Network, est un réseau spécialisé conçu pour la gestion et le stockage de données. Il offre
une infrastructure de stockage centralisée qui permet aux serveurs d'accéder à des dispositifs de stockage
partagés de manière rapide et efficace.
■ Avantage :
– Stockage Centralisé
– Connectivité Haute Performance
– Redondance et Tolérance aux Pannes
■ Inconvénients :
– Cout élevé,
– Complexité
– Gestion de la Sécurité
Virtualisation du stockage - Datacenters
Virtualisation du stockage – Block-Level / File Level
Virtualisation du stockage – Block-Level
■ La virtualisation basée sur bloc repose sur la gestion de blocs de données
bruts. Elle utilise des volumes logiques (LUN, Logical Unit Number) pour
regrouper les blocs de données physiques en une seule ressource logique.
■ Avantage :
- Haute tolérance de panne.
- Haute performance.
- Hautement redondant.
- Peut être utilisé comme « boot volume »
■ Inconvénients :
– Complexe à gérer et à configurer par rapport à la virtualisation basée sur
fichier.
– Convient moins bien au partage de fichiers.
Des technologies telles que les SAN sont couramment utilisées pour la
virtualisation basée sur bloc.
Virtualisation du stockage – File-Level
■ Souvent associée à des systèmes de fichiers distribués. Les
données sont organisées en fichiers et réparties sur plusieurs
systèmes de stockage. Un système de fichiers virtuel est créé au-
dessus de ces systèmes de stockage physiques, permettant un accès
transparent aux données via un chemin de fichier. NFS (Network
File System) en est un exemple.
■ Avantage :
– Facile d’utilisation
– Idéal pour le partage de fichier
■ Inconvénients :
– Moins performant
– Moins adapté aux applications nécessitant un accès bas niveau
aux données
Virtualisation du stockage – Block-Level / File-Level
Virtualisation du stockage – Pros
■ Centralisation de la gestion : Gérer l'ensemble des ressources de stockage à partir d'une seule
interface centralisée.
■ Optimisation des ressources : La virtualisation permet une utilisation plus efficace des ressources.
Elle aide à éviter les gaspillages de capacité et assure une meilleure répartition des données.
■ Redondance et tolérance aux pannes : La VS permet des stratégies de redondance, telles que le
RAID, pour protéger les données contre les pannes matérielles. En cas de défaillance d'un disque
dur, les données restent accessibles.
■ Simplification de la migration de données : La VS simplifie la migration de données entre les
différents systèmes de stockage. Cela facilite la mise à niveau du matériel, les transferts de données
entre les emplacements.
■ Snapshot et sauvegarde : La VS facilite la création de snapshots (instantanés) de données à des fins
de sauvegarde, de récupération et de tests.
■ Évolutivité : Les solutions de VS sont généralement évolutives. Il est possible d'ajouter de nouveaux
disques et de nouvelles ressources sans perturber les opérations en cours.
■ Économies de coûts : La VS peut aider à réduire les coûts en évitant des achats inutiles de matériel,
en optimisant l'utilisation des ressources existantes et en réduisant la complexité de gestion.
Virtualisation des réseaux - Aperçu
■ Les services peuvent avoir des incompatibilités entre eux ou avec les services d’autres
applications (Oracle / Sql Server, Apache / Tomcat/ NodeJs, Netbeans/Odoo, etc.).
■ Quand un service nécessite une version d’une librairie et un autre nécessite une autre version,
problème !
■ Le projet évolue, les mises à jour deviennent nécessaires et les compatibilités deviennent un
cauchemar.
Pourquoi docker ?
■ Nous avons besoin donc d’un outil qui élimine les
incompatibilités
Docker
Avantages :
■ Conteneuriser les applications
■ Exécuter chaque service avec ses dépendances dans des conteneurs séparés (Technique de
cloisonnement).
■ Très léger (en Mb) et se lance rapidement (pas comme les MVs)
■ Il peut avoir ses propre processus, son propre réseau et son propre montage (mounts).
■ Tous les conteneurs se partagent le même kernel (Linux) que le système Hôte. Pas comme les
MVs.
■ La question n’est pas de choisir Docker ou VM, dans les cas où nous avons une multitude
d’applications, nous pouvons profiter des deux technologies en ayant des MVs dans lesquelles
tournent des conteneurs docker.
■ Ainsi nous n’aurons pas à créer une VM par application, mais des centaines de conteneurs par
VM.
Docker Hub?
■ Docker propose un répertoire (docker hub ou docker repository) qui contient beaucoup
d’images de conteneurs
■ Une images est un template de conteneurs, utilisée pour créer un ou plusieurs conteneurs.
■ Vous aussi pouvez créer votre propre image via ce que l’on appelle DockerFile
■ ce conteneur est une instance de l’image nginx, une fois arrêté, ce conteneur est perdu,
le prochaine run crée une nouvelle instance.
■ docker ps liste tous les conteneurs en marche.
■ ce conteneur est arrêté, mais réside toujours dans notre répertoire local :
■ Quelles sont les images que j’ai dans mon répertoire local :
docker images
■ docker rmi id, supprime définitivement une image ainsi que ses
dépendances.
Essayer d’expliquer cet exemple
Essayez d’expliquer …
Explication : Les conteneurs ne sont pas censés résider comme des VMs, ils sont censés
exécuter des tâches spécifiques, puis quitter, l’image ubuntu ne prévoit aucun service, donc
une fois le conteneur lancé, il fini sa tâche, puis il s’arrête.
Mode attaché / détaché
Par défaut, la commande run lance un conteneur en mode attaché, si l’on souhaite le lancer
en mode détaché :
Attention, les conteneurs utilisent la sortie standard mais ne lisent pas de l’entrée standard,
pour pouvoir interagir avec un conteneur, ajoutez les paramètres –i et –t ou –it.
Mapping de ports
Quand un conteneur de serveur web est démarré, comment peut on accéder au serveur
web ?
1. A partir de l’adresse IP du conteneur (pas pratique, pourquoi ?)
2. En mappant l’adresse du conteneur et le port du service avec un port libre de la
machine hôte. (Pratique, pourquoi ?)
Un conteneur étant volatile, et est perdu une fois arrêté, donc toutes les données qui y sont stockées sont
perdues : docker stop mysql
Si l’on souhaite garder les données après l’arrêt du conteneur, il faut mapper ce répertoire avec un
répertoire en dehors du conteneur :
docker run –v local_path:container_path mysql
Si vous vous sentez le besoin de faire des modifications dans votre projet par conteneur, vous pouvez
le faire via les variables d’environnement.
Java PHP
!!!
docker run –e USER_MYSQL=root myWebApp
Les réseaux
Docker fonctionne en 3 modes de réseaux : Bridge, Host et None.
1 . Via son adresse IP, vu qu’il sont dans le même réseau. NON
2. Via le nom du conteneur, docker met a disposition des conteneurs un DNS interne (embedded DNS sur
le 172.0.0.11) qui fait correspondre le nom du conteneur à son adresse ip
Problème : Comment faire pour persister les modifications apportées aux fichiers du conteneur ? Cas
d’un conteneur mysql, un conteneur pour fichiers, etc.
Cette image sera utilisée par la suite pour créer autant de conteneurs que l’on souhaite
Tout fichier docker commence par FROM puis le nom d’une image. Puis les commandes à exécuter sur
cette image. Enfin le processus à lancer.
DockerFile (2)
Il faut ensuite compiler le fichier pour créer l’image : docker build
DOCKER COMPOSE
Problème avec les commandes run
Les commandes docker run ne sont pas toujours simples, surtout avec des variables d’environnement, des link,
des noms de conteneurs, etc.
Docker-compose est un fichier yml (basé sur les tabulations) contenant le descriptif des conteneurs à lancer.
docker-compose : exemple 1
■ Les conteneurs, comme Docker, sont des unités légères qui encapsulent une application,
ses dépendances et son environnement d'exécution.
■ Contrairement aux registres Docker publics, tels que Docker Hub, un registre privé est
destiné à un usage restreint, souvent au sein d'une organisation ou d'une entreprise, et offre
un niveau de confidentialité et de contrôle supplémentaire sur les images Docker.
■ Outils : Docker Trusted Registry (DTR), Amazon Elastic Container Registry (ECR), Google
Container Registry.
Orchestration, objectifs (1)
■ Répartition de Charge : Elle permet de répartir la charge du trafic réseau entre les
conteneurs pour une meilleure performance et une disponibilité continue.
Orchestration, objectifs (2)
■ Sécurité : Il permet de mettre en place des fonctionnalités de sécurité telles que la gestion des
certificats, la segmentation réseau et l'isolation des conteneurs.
– Google Kubernetes
– Apache MESOS
– Docker Swarm