OpenStack
OpenStack
par Jiel
De bons livres existent sur le sujet, la documentation officielle est précise. Il s'agit ici seulement d'une introduction au cloud du monde libre : OpenStack.
Introduction
OpenStack est un ensemble de logiciels permettant de déployer des infrastructures de cloud computing de type « infrastructure en tant que service » (IaaS).
En pratique, cela sert surtout à développer un service de cloud privé, interne à l'entreprise. Cela a plusieurs avantages par rapport au cloud public de type Amazon EC2, Google Cloud ou Microsoft Azure. Avec un cloud privé comme OpenStack, on garde le contrôle de ses données et de son infrastructure et on ne s'enferme pas dans des technologies privatrices - on utilise que des logiciels libres dont le code est disponible et les outils documentés.
OpenStack s'est fixé plusieurs objectif : être facile à implémenter, massivement extensible (scalable) et riche de fonctionnalités. Il est utilisé par diverses entreprises et administrations, telles que la Deutsche Telekom, la NASA, eBay, le Conseil européen pour la recherche nucléaire (CERN) ou Yahoo!.
Sous le capot
Pour les curieux, petit zoom sur les technologies. Les services d'OpenStack se basent sur le langage python. Les services d'OpenStack utilisent SQLAlchemy comme logiciel de cartographie objet-relationnel (ORM), qui permet d'utiliser derrière une base MySQL ou PostgreSQL. Comme bus de communication entre les services, OpenStack utilise par défaut RabbitMQ. L'interface graphique se base sur le framework Django. Pour la virtualisation, c'est généralement KVM et la libvirt qui sont utilisés.
Les éléments d'Openstack
OpenStack est divisé entre plusieurs composants, dédiés à une tâche particulière, qui travaillent ensemble. Un petit schéma pour comprendre :
- Dashboard/Horizon est le tableau de bord. Ici vous avez la possibilité d'accéder à vos instances (les serveurs virtuels), les images, les objets, les réseaux, vos paramètres utilisateurs, bref, un peu tout.
- Compute/Nova est la brique principale d'OpenStack. C'est nova qui gère les calculs, contrôle les hyperviseurs et les resources. Beaucoup de commandes d'administration quotidiennes du cloud seront gérées par Nova et lancées grâce à la commande nova.
- Identity/Keystone est le service d'identité. Il s'occupe de gérer les utilisateurs et l'authentification.
- Network/Neutron gère tout ce qui concerne le réseau.
- Image/Glance gère les images disque. Il permet la découverte, l'envoi et la distribution d'image vers les instances.
- Object Store/Swift est l'outil de stockage objet. Les fichiers sont écrits sur de multiples disques répartis sur plusieurs serveurs dans le centre de données, pour assurer la réplication et l'intégrité des données au sein du cluster. Certains préfèrent utiliser Ceph à la place de Swift.
- Block Storage/Cinder est le service de stockage en mode bloc d'OpenStack. Il gère la création, l'attachement et le détachement de ces périphériques sur les serveurs ; en pratique, c'est comme si on montait un disque dur. Cinder est aussi célèbre pour la création d'instantanés (snapshot) d'instances.
- Telemetry/Ceilometer permet de collecter différentes statistiques sur l'utilisation du cloud.
On trouve aussi des composants plus avancés:
- Heat permet de décrire une infrastructure sous forme de modèles et de déployer ensuite l'infrastructure suivant ces modèles.
- Trove permet d'installer et de gérer des instances de base de données relationnelle et NoSQL au sein d'OpenStack.
- Sahara permet de faire du big data avec OpenStack. En particulier, il permet d'utiliser Hadoop.
- Ironic est utilisé pour provisionner des machines physiques (alors que normalement OpenStack utilise des machines virtuelles). Ironic permet d'utiliser avec ses serveurs PXE, IPMI, TFTP etc.
- SearchLight permet d'indexer et de rechercher les ressources du cloud.
- Designate gère la partie noms de domaine (DNS).
- Zaqar permet la communication entre différentes applications, via l'utilisation de files d'attente.
- Barbican est le service de stockage sécurisé, en particulier pour stocker des mots de passes, des clefs de chiffrements ou des certificats.
- Manila fournit un accès coordonné aux systèmes de fichiers partagés ou distribués.
Nova, Glance, Swift, Horizon, Keystone, Neutron, Cinder, Heat, Ceilometer, Trove, Sahara, Ironic, SearchLight, Designate, Zaqar, Barbican, Manila (ouf!) sont les composants officiels de la version Liberty d'OpenStack. En réalité, il en existe d'autres en développement.
Les commandes
Les commandes reprennent la terminologie des différents composants. Illustrons cela en listant des élements de notre cloud privé.
Pour avoir la liste de toutes les instances (serveurs virtuels) :
Pour voir l'état de divers éléments de l'infrastructure du cloud (hyperviseurs nova-compute, nova-scheduler etc.) :
Pour avoir la liste des saveurs disponibles pour l'installation d'une instance, c'est à dire les pré-requis désirés en terme de processeurs virtuels, mémoire allouée etc. :
Pour afficher la liste des utilisateurs, on fera :
Pour afficher les projets (projects en anglais, appelés aussi tenants), auxquels sont rattachés les utilisateurs et les instances :
Pour avoir la liste des conteneurs de stockage et les objets présents par conteneur, on fera :
Pour avoir la liste des images disponibles (typiquement, des images de distributions GNU/Linux) :
Liens
PS : Ce tutoriel se base sur les versions Kilo et Liberty (2015) d'OpenStack.
@ Retour à la rubrique Administration système
Copyright
© 2016 Jiel Beaumadier
Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. |