Openstack
| Fiche express | |
|---|---|
| Type | Plateforme cloud IaaS open source |
| Licence | Apache 2.0 |
| Composants clés | Nova, Neutron, Cinder, Swift, Keystone, Glance, Horizon |
| Interface | Dashboard web Horizon, API REST, CLI (openstack) |
| Environnement de dev | Devstack |
| Voir aussi | Devstack · Proxmox |
OpenStack est une plateforme cloud IaaS (Infrastructure as a Service) open source qui permet de gérer des pools de ressources de calcul, stockage et réseau à travers un ensemble d'API et un tableau de bord web, à la manière d'un AWS/Azure privé.
Composants principaux
OpenStack est bâti sur une architecture modulaire, chaque brique gérant un aspect de l'infrastructure :
- Nova — orchestration du calcul (cycle de vie des instances/VM)
- Neutron — virtualisation réseau (renommé depuis Quantum, nom d'origine du projet
jusqu'en 2014, à ne pas confondre avec l'outil de calcul quantique)
- Cinder — stockage bloc persistant (volumes attachables aux instances)
- Swift — stockage objet (façon S3)
- Keystone — service d'authentification et d'annuaire des services
- Glance — catalogue et registre des images disque
- Horizon — tableau de bord web (dashboard) pour piloter l'ensemble
Installation
En production, une installation OpenStack se fait généralement via un outil de déploiement dédié (Kolla-Ansible, TripleO, OpenStack-Ansible, ou une distribution packagée comme Charmed OpenStack). Pour découvrir la plateforme ou développer dessus, on utilise plutôt Devstack, qui installe un environnement complet en une seule commande à partir des sources (voir Devstack pour le détail).
La documentation officielle à jour reste la meilleure référence pour une installation de production : https://docs.openstack.org/
Utilisation via le dashboard Horizon
Une fois la plateforme démarrée, l'essentiel de l'administration courante peut se faire depuis le dashboard web (adresse de l'exemple ci-dessous à adapter à l'environnement réel) :
http://<ip-controleur>/
Workflow type de mise en place d'une petite infra applicative :
- Créer une paire de clés SSH pour l'accès aux instances :
Projet > Compute > Access & Security > Key Pairs > Create Key Pair
- Lancer une instance à partir d'une image du catalogue Glance :
Projet > Compute > Images > <image> > Launch
- Créer et attacher un volume de stockage bloc (Cinder) à une instance :
Projet > Compute > Volumes > Create Volume
- Ouvrir l'accès réseau à une instance (IP flottante + règles de pare-feu) :
Projet > Compute > Access & Security > Floating IPs > Allocate IP to Project Projet > Compute > Access & Security > Security Groups > default > Manage Rules > Add Rule
Un scénario classique de TP consiste à monter ainsi une petite architecture à trois niveaux (base de données, applicatif, répartiteur de charge HAProxy en frontal), chaque brique étant une instance distincte avec son propre snapshot Glance, le frontal HAProxy recevant l'IP flottante publique du projet.
Automatisation / scaling
Exemple de script (à titre pédagogique) de scaling horizontal naïf, ajustant le nombre d'instances applicatives en fonction du nombre de requêtes en cours sur un frontal HAProxy, via la CLI Nova :
while : ; do
requests=$(curl --silent http://<frontal>/server-status | perl -ne 'print $1 if(m:(\d+)\s+requests currently:)')
servers=$(nova list --name php_server | grep php_server | wc -l)
desired_servers=$((requests / 10 + 1))
echo "$requests requêtes, $servers instances actives, $desired_servers désirées"
if (( desired_servers > servers )); then
nova boot --poll --flavor 6 --image <image-id> --key-name <ma-cle-ssh> php_server
elif (( desired_servers < servers )); then
nova delete php_server
fi
sleep 5
done
Ce script se lance depuis un shell ayant les credentials OpenStack chargés (fichier téléchargeable depuis Horizon : Admin > Settings > Télécharger le fichier RC). Pour générer de la charge de test :
ab -c 10 -n 200000 http://<ip-instance>/
(cette approche de scaling par script shell est purement pédagogique — en production, on utilisera plutôt Heat (orchestration) et/ou un module d'auto-scaling natif.)