Cours: Cloud Computing & Virtualisation
Chapitre 4 (Partie 2)
Gestion des ressources dans le cloud
Professeur Mohamed Faten Zhani
Email : [Link]@[Link]
Objectifs
Comprendre les défis reliés à la gestion des ressources
dans le cloud
Se familiariser avec la plateforme de gestion de cloud
OpenStack et ses différentes composantes
Comprendre le fonctionnement des principales
composantes de OpenStack
M. F. Zhani 2
Plan
Nova
Les types de stockage dans OpenStack
Stockage éphémère (ephemeral storage)
Object storage (Swift)
Block storage (Cinder)
Architecture de Cinder
Technologies complémentaires (LVM, iSCSI)
M. F. Zhani 3
Nova
Nova permet de créer, placer et lancer les instances de machines virtuelles dans
les serveurs disponibles (appelés nœuds de calcul)
Nova nécessite les services OpenStack de base suivants pour un fonctionnement
basique : Keystone, Glance, Neutron
Architecture :
Nœud de contrôle (controller node): héberge keynote, Glance et la portion
de gestion des services de base (Nova, Neutron, BD, Message Queue)
Nœuds de calcul (compute nodes) :
Ils hébergent les hyperviseurs et les machines virtuelles
Nova est compatible avec les hyperviseurs KVM, VMware, Xen, Hyper-V
M. F. Zhani 4
Nova - Concepts
Zone de disponibilité (availability zone) : groupe logique de nœuds
Chaque nœud de calcul appartient à une zone de disponibilité définie
par l’administrateur
Les zones permettent d’isoler un groupe de machines et d’offrir la
redondance (par ex., ayant une source d’électricité différente
ou relié à un équipement réseau différent)
M. F. Zhani 5
Nova – Architecture
Nova-API : interface API Restful, communique avec les utilisateurs, vérifie l’identité
en communiquant avec Keystone et met à jour la base de données
Nova-Scheduler : choisit l’emplacement de l’instance et met à jour la base de données (BD)
Database :
Offre un stockage persistant
contenant les informations
sur l’état de l’infrastructure
Stocke les états en temps réel
de toute l’infrastructure
(les types d’instances disponibles,
l’état des instances en cours
d’utilisation, les projets et autres)
Permet de partager l’information
entre les composantes de OpenStack
M. F. Zhani 6
Nova – Architecture
Nova-Conductor : met à jour
la BD et envoie une commande vers
le nova-compute concerné pour
démarrer l’instance
Oslo Messaging : toutes les
composantes nova communiquent
à travers un Message Queue
(RabbitMQ, Apache Qpid)
M. F. Zhani 7
Nova – Architecture
Nova-Compute :
Installé au niveau de chaque nœud
de calcul (Compute Node)
Communique avec Glance et avec
l’hyperviseur du nœud pour lancer
l’instance de la MV.
M. F. Zhani 8
Nova Scheduler
Objectif : choix de l’emplacement d’une
instance
Chaque nœud de calcul est caractérisé
par un poids
Calculé en fonction de plusieurs
paramètres définis par
l’administrateur
Aide à choisir le nœuds de calcul
à utiliser pour héberger une instance
Choix de l’emplacement : Utilisation de
filtres
Filtrer les emplacements possibles selon
plusieurs critères
zone de disponibilité
capacité du nœud source [1]
(par ex., CPU, RAM)
poids des nœuds de calcul
M. F. Zhani 9
Nova – Création d’une instance
M. F. Zhani 10
Plan
Nova
Les types de stockage dans OpenStack
Stockage éphémère (ephemeral storage)
Object storage (Swift)
Block storage (Cinder)
Architecture de Cinder
Technologies complémentaires (LVM, iSCSI)
M. F. Zhani 11
OpenStack – Stockage de données
Stockage éphémère (ephemeral storage)
Créé lors de la création d’une instance de machine virtuelle (MV) et utilisé
pour stocker le système d’exploitation et les logiciels
Accès à travers un système de fichier
Taille choisie par l’utilisateur (VM flavors)
Persistance : ce stockage est détruit lorsque la MV est détruite
Exemples de “flavor” de machine virtuelle
M. F. Zhani 12
OpenStack – Stockage de données
Stockage d’objets (object storage – Swift)
Stockage de données : fichiers (objets), incluant les images de MVs
Accès aux objet grâce aux APIs Restful
La taille dépend des disques de stockage disponibles
Persistance : fichier supprimé seulement par l’utilisateur
Stockge de blocs (ou volume) (bloc storage – Cinder)
Offre un volume de stockage additionnel pour une MV
Accessible depuis la MV comme un volume (par ex., monté comme
/dev/vdc)
Taille : spécifié par l’utilisateur lors de la création
Persistance : volume supprimé seulement par l’utilisateur
M. F. Zhani 13
Plan
Nova
Les types de stockage dans OpenStack
Stockage éphémère (ephemeral storage)
Object storage (Swift)
Block storage (Cinder)
Architecture de Cinder
Technologies complémentaires (LVM, iSCSI)
M. F. Zhani 14
Swift
Swift est une plateforme visant à stocker des objets
Les objets sont des fichiers binaires : documents, images, etc.
Chaque objet est identifié par un nom complet : « compte/conteneur/objet »
Les objets sont manipulés grâce à des RESTful APIS
[Link]
Idéal pour les données non structurées
Similaire à la plateforme Amazon S3
M. F. Zhani 15
Swift – Architecture
Deux types de nœuds: Proxy Node et Storage Nodes
M. F. Zhani 16
Swift – Stockage des données
Les objets swift sont logiquement stockés dans des « partitions »
Chaque objet est placé dans une « partition »
Chaque partition est placée dans un disque physique
(c.-à.-d., un serveur physique)
Redondance des données :
Chaque partition doit être dupliquée
Le nombre de réplicas par partition est fixé par l’administrateur
(par défaut, 3 réplicas par partition)
M. F. Zhani 17
Swift – Stockage des données
Comment stocker/récupérer un objet : 2 étapes
Nom complet de l’objet Numéro de partition Disque
Correspondance objet - numéro de partition :
À la réception d’un objet, Swift calcule un hash (MD5) en utilisant
le nom complet de l’objet (c.à.d. « compte/conteneur/object »)
Une partie du hash calculé est interprété comme le numéro
de la partition où il faut stocker/récupérer l’objet
Le nombre de bits constituant cette partie du hash est appelé
« the partition power (pp)» ou partition shift (défini par l’utilisateur)
Le nombre de partitions total : 2pp
Questions ?
M. F. Zhani 18
Swift – Stockage des données
Correspondance partition - disque physique ?
Une structure de donnée appelé « ring » est utilisée pour maintenir
cette correspondance
Chaque nœud swift maintient une copie du ring
Chaque ring est une structure composée de 3 éléments :
1. Liste des périphériques du cluster (appelé aussi « devs ») :
contient des informations sur les disques :
id, zone, poids (proportionnel à la taille), Partition
adresse IP, port TCP, nom 0 1 2 3 4 5 6 7
2. Liste des attributions des partitions :
tableau à 2 dimensions contenant 0 0 1 2 3 0 1 2 3
Réplicas
l’emplacement de la partition (id du disque)
pour chaque réplica/partition
(dans le code : table _replica2part2dev) 1 3 2 3 0 1 2 3 0
3. Le partition shift (partition power)
2 1 3 0 1 2 3 0 1
id du disque contenant Un exemple de table _replica2part2dev
le réplica 1 de la partition 0 (3 réplicas, 8 partitions et 4 disques)
M. F. Zhani 19
Swift - Placement des réplicas
L’ensemble des nœuds swift est divisé en des zones définies par
l’administrateur (par ex., chaque rack peut être défini comme une zone).
Les réplicas sont distribués sur les différentes zones afin de garantir
la disponibilité des données en cas de panne.
Meilleure redondance et tolérance aux pannes
source [1]
M. F. Zhani 20
Swift - Support des grands fichiers
Deux façons de gérer ces fichiers :
L'utilisateur demande explicitement à Swift de diviser l'objet en
segments (dont la taille est fixée par l’utilisateur)
Dans ce cas, ces segments sont placés dans un nouveau container
(le même pour tous les segments).
Swift créé une description de l’objet (appelée manifest) qui indique
les segments constituant le même objet
L'utilisateur divise lui même l'objet en segments, les upload dans
swift (pas nécessairement dans le même container) et créé lui-
même un manifest indiquant les segments constituant l’objet
M. F. Zhani 21
Plan
Nova
Les types de stockage dans OpenStack
Stockage éphémère (ephemeral storage)
Object storage (Swift)
Block storage (Cinder)
Architecture de Cinder
Technologies complémentaires (LVM, iSCSI)
M. F. Zhani 22
Cinder (bloc storge)
Cinder est un projet OpenStack pour fournir "le stockage de bloc
(volume) en tant que service" (block storage as a service)
Initialement, créé comme composante de Nova Compute appelé Nova
Volumes et ensuite a été séparé en un projet apart pour devenir Cinder
Cinder permet de créer des blocs (volumes ) persistants qui seront
utilisés par les instances des MVs créées par Nova compute
M. F. Zhani 23
Cinder - Avantages
Un volume est utilisé par une seule instance à la fois
Une instance peut être connectée à plusieurs volumes à la fois
Avantages:
Si une MV échoue, le volume peut être ré-attaché à une nouvelle instance
Un volume Cinder permet d’augmenter la capacité de stockage des MVs
au delà de la capacité d’un nœud
Un volume Cinder peut être utilisé pour le démarrage d’une MV
(dans ce cas, on a plus besoin du disque éphémère)
M. F. Zhani 24
Cinder – Caractéristiques
Cinder est une couche d’abstraction du processus de création
des volumes et de leur attachement à des instances de calcul Nova
Caractéristiques de Cinder
Architecture à base de composants : permet l’ajout rapide de nouveaux
composants
Hautement disponible : redondance assurée
Tolérance de panne : des processus isolés pour éviter les échecs
en cascade
Récupération facile: les échecs doivent être faciles à diagnostiquer,
déboguer et corriger
Normes ouvertes : une implémentation de référence pour des APIs
maintenues par la communauté
M. F. Zhani 25
Cinder – Architecture
M. F. Zhani 26
Cinder – Architecture
cinder-api : offre une interface Restful pour la manipulation des volumes (par
ex., créer, lister, supprimer, attacher, détacher) et permet de spécifier le type de
volume désiré (par ex., un volume tier 1 est destiné aux données importantes)
cinder-scheduler : sélectionne le périphérique physique de stockage pour un
volume (peut utiliser des filtres similaires à ceux utilisés par Nova Scheduler
pour déterminer le meilleur emplacement pour un volume)
cinder-volume : gère les périphériques physiques de stockage (back-end
devices) en utilisant plusieurs pilotes dépendamment du type de périphérique
(par ex., Linux LVM, autres périphériques de stockage tels que Dell Storage
center)
cinder-backup : responsable de la création de volumes de backup
SQL DB : base de données contenant les informations sur les volumes
(par ex., leurs emplacements, attachements)
M. F. Zhani 27
Cinder – Stockage traditionnel
Étapes d’accès
Nova appelle Cinder à travers ses APIs
Cinder passe le message au cinder-volume
Le pilote prépare la connexion (par ex.,
donner à Nova la permission d’accès)
Le pilote retourne les informations de
connexion vers Cinder qui les retournent à
Nova
Nova crée la connexion vers le volume en
utilisant les informations reçues et
configure l’hyperviseur
Linux Volume Manager (LVM) est utilisé
par défaut pour créer les volumes dans
des machines linux
Exemples de protocoles d’accès à des
périphériques de stockage:
iSCSI (Internet Small Computer System
Interface )
FCIP (Fibre Channel over IP)
M. F. Zhani 28
Plan
Nova
Les types de stockage dans OpenStack
Stockage éphémère (ephemeral storage)
Object storage (Swift)
Block storage (Cinder)
Architecture de Cinder
Technologies complémentaires (LVM, iSCSI)
M. F. Zhani 29
LVM – Logical Volume Manager
Un outil linux qui permet de gérer des volumes logiques
Créé par Heinz Mauelshagen en 1998
Avantages :
Permet de créer un volume logique à partir de plusieurs volumes physiques
Permet le dimensionnement dynamique des volumes
Permet de créer des “snapshots” des volumes
Permet d’ajouter et enlever ou remplacer des volumes physiques sans
interrompre le service.
Avantages pour les systèmes à petite et à grande échelles ?
M. F. Zhani 30
LVM – Principe
Les volumes physiques sont regroupés pour former des groupes
de volumes : un groupe de volume est considéré comme un seul
disque
Chaque groupe de volumes peut être ensuite divisé en des
volumes logiques (donc, réellement, un volume logique peut
utiliser plusieurs disques)
PV : Physical Volume
VG : Volume Group
LV : Logical Volume
M. F. Zhani 31
LVM – Exemple
Exemple :
M. F. Zhani 32
iSCSI
SCSI (Small Computer System Interface) : un ensemble de standards
définissant les commandes et protocoles pour la transmission de
données entre un ordinateur et des périphériques (par ex., disques
durs, scanner)
iSCSI (Internet SCSI)
Créé par IBM en 1998 et standarisé par l’IETF en 2003
Protocole de transport permettant d’accéder à distance à un “volume”
de stockage
Utilise TCP pour transmettre les commandes SCSI et les blocs de
données à travers un réseau Internet.
M. F. Zhani 33
iSCSI – Fonctionnement
Deux agents sont impliqués :
iSCSI initiator : agent installé sur le serveur voulant accéder au disque.
Cet agent initie la connexion vers l’iSCSI target
iSCSI traget : agent installé dans un périphérique de stockage
Le système d’exploitation au niveau du serveur verra le périphérique
de stockage comme un périphérique local
Source : http:/[Link]
Retour
M. F. Zhani 34
Bibliographie
[1] OpenStack, [Link]
[2] Internet Small Computer Systems Interface (iSCSI), RFC 3720
M. F. Zhani 35
Merci
M. F. Zhani 36