Professional Documents
Culture Documents
26-Gestion Des Machines Virtuelles
26-Gestion Des Machines Virtuelles
a. Introduction
Nova est la colonne vertébrale d’OpenStack : c’est le composant qui permet d’effectuer le traitement
d’instanciation de machines virtuelles. Nova peut agir sur un host physique qui va servir à héberger
plusieurs VM (il s’agit d’un Compute node) ; dans ce cas, c’est Nova qui va se charger de la relation avec
l’hyperviseur, ce dernier étant installé sur le Compute node via le processus d’installation de Nova.
Nova permet également d’instancier une seule machine virtuelle sur un serveur physique (serveur Bare-
Metal).
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -1-
kokou Agbedanou
De nombreuses technologies, supportées par OpenStack, peuvent être employées pour le support des
instances de machines virtuelles : des hyperviseurs, des containers ou des machines Bare-Metal :
Hyperviseurs
ˇ
QEMU (Quick EMUlator) : c’est un émulateur et hyperviseur ; il doit être employé lorsque KVM ne
peut pas être utilisé pour incompatibilité hardware. Il est considéré comme le parent pauvre de
KVM car il ne supporte pas la virtualisation native ; il dispose donc de performances non
satisfaisantes pour des environnements de production.
ˇ
KVM (Kernel-based Virtual Machine) : c’est l’hyperviseur par défaut d’OpenStack et celui qui est
le plus utilisé en production.
ˇ
XenServer : c’est la seconde implémentation en production.
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -2-
kokou Agbedanou
ˇ
VMware ESXi
ˇ
Microsoft Hyper-V
Containers
ˇ
LXC : Linux Container (via la bibliothèque libvirt).
ˇ
Docker : Linux Container.
ˇ
UML : User Mode Linux (système de virtualisation à part entière mais qui fonctionne sur un
système d’exploitation hôte ; c’est en quelque sorte une virtualisation sous forme de container).
Bare-Metal
Le driver Bare-Metal est apparu dans la version Grizzly sous forme de service baremetal mais avec des
fonctionnalités limitées. Le Metal as a Service (MaaS) est désormais présent dans la version Kilo (avril
2015) sous la forme du composant Ironic. Cependant, toutes les distributions OpenStack propriétaires
n’ont pas encore intégré ce composant.
Dans Nova, l’hyperviseur par défaut est KVM. Pour changer l’hyperviseur, il faut modifier la valeur de la
variable virt_type de la section [libvirt] dans le fichier nova.conf, puis relancer le service nova-compute :
# Libvirt domain type (valid options are: kvm, lxc, qemu, uml,
# xen) (string value)
virt_type=kvm
Pour les autres hyperviseurs, la procédure est plus spécifique et il faut effectuer une configuration dans
nova.conf, en ajoutant le driver de l’hyperviseur et une section spécifique indiquant où trouver
l’environnement d’hébergement (par exemple, l’IP du vCenter pour VMware).
Le choix de l’hyperviseur dépend du contexte du client ; il faut donc tenir compte de nombreux paramètres
: historique, compétences présentes, performances souhaitées, plates-formes existantes...
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -3-
kokou Agbedanou
b. Concept
Workflow
Lorsqu’un utilisateur se connecte via Horizon, après s’être authentifié via Keystone, il demande une
création de VM.
Horizon envoie une requête REST API à nova-api qui reçoit la requête et la traite en créant une entrée dans
la base MySQL Nova du Controller node.
nova-api interroge Nova-Scheduler pour savoir sur quel host il faut provisionner la VM.
nova-scheduler envoie la requête de création à nova-compute qui la met en file d’attente et interroge nova-
conductor pour récupérer des informations sur le host-ID et sur le flavor.
nova-conductor envoie les informations à nova-compute qui interroge glance-api pour récupérer l’image.
Neutron server envoie les informations à nova-compute qui interroge cinder-api pour la fourniture du
volume d’attachement.
Composants
ˇ
nova-api
nova-api est en charge de la gestion des appels API des utilisateurs. Il permet le démarrage des
VM.
ˇ
nova-compute
nova-compute est un processus qui doit être installé et lancé sur tous les serveurs hôtes qui
vont héberger des VM (les nodes de Compute). Il assure la gestion de la vie des VM en faisant
le lien avec l’API des hyperviseurs concernés.
ˇ
nova-network
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -4-
kokou Agbedanou
ˇ
nova-scheduler
ˇ
nova-console, nova-vncproxy, nova-consoleauth
ˇ
nova-bare-metal
Ce composant permet à Nova de pouvoir également provisionner des instances sur des
serveurs physiques.
c. Architecture
La base de données de Nova stocke toutes les informations relatives au module Nova et notamment l’état
des objets sur les multiples serveurs de compute : instances disponibles, en cours d’exécution…
La base Nova peut fonctionner sous MySQL, PostgreSQL ou SQLite3 ; elle contient 108 tables (version
Juno).
La liaison entre Nova API et la base de données s’effectue via l’ORM (Object-Relational Mapper)
SQLAlchemy.
Back-ends hyperviseurs
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -5-
kokou Agbedanou
Back-ends RPC
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -6-
kokou Agbedanou
Back-ends SQL
Les back-ends SQL permettent de réaliser le stockage des informations en base de données.
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -7-
kokou Agbedanou
Remarques :
ˇ
SQLite est à utiliser pour un POC, en développement mais pas en production.
ˇ
PostgreSQL ne dispose pas de client Python natif.
ˇ
MySQL assure la haute disponibilité grâce à des outils comme Galera cluster, MySQL
Management ou Extra cluster.
Le back-end SQL MySQL, MariaDB, sera utilisé tout au long des chapitres
Installation OpenStack : services de base et Installation OpenStack : services
avancés.
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -8-
kokou Agbedanou
© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -9-
kokou Agbedanou