Qui sommes nous?
- Pierre Souchay
- Ala Rezmerita
- Ingénieur de développement
- Contributeur Openstack
- Ceilometer/Tempest/Horizon/Flame/…
Cloudwatt
- Cloud public français
- Depuis mars 2015 appartient 100% à Orange
- Opensource ADN
Metriques @Cloudwatt
Metriques @Cloudwatt
- Collecte : instance collectd locale par serveur/VM
- Transport : collectd (via plugin write_graphite)
- Stockage : Graphite (carbon/whisper)
- Visualisation : Graphite (graphite-web) ou Grafana
- Alertes : Nagios
Metriques collectd @Cloudwatt
- Système (cpu, load, memory, df, swap)
- Réseau (interface)
- Services (HAProxy, Nginx, MySQL, etc)
- …
Instrumentation des HAProxy
- Disponibilités des backends
- Temps de réponse des APIs
- Codes d'erreurs HTTP (12345X)
- Statistiques exportées vers whisper
- …
Metriques Openstack @Cloudwatt
Quantité et état de…
- Users, Tenants (keystone)
- Services (nova, cinder)
- Utilisation et types d'images pub/privées (glance)
- Flavors (nova)
- Volumes (cinder)
- Stacks/bundle (heat)
- États des instances (active, error, rescue…)
Tenants (keystone)
Utilisation des images publiques (glance)
Flavors (nova)
Plugin de gestion de la capacité
Context Cloudwatt
- Plusieurs aggregats nova
- Plusieurs filtres pour le placement des VMs
- type d'image (Ubuntu, Debian, Windows, etc)
- type de nova flavor (tiny, small, standard, etc)
- …
Plugin de gestion de la capacité
- Surveille le taux d'utilisation des ressources
- Calcule la place encore disponible dans chaque aggregat
- Déclenchement des alarmes nagios quand seuils d'alerte sont atteints
- Permet d'anticiper les ajustements d'infrastructure
Plugin de gestion de la capacité
Aggregat normal 1/2
Plugin de gestion de la capacité
Aggregat Windows 2/2
Billing & Métriques @Cloudwatt
Que faire payer ?
- Les resources sur des tenants
- Les services additionnel (ex: connexion directe)
Qui paye ?
Le compte payeur
- Un identifiant de compte payeur
- un email de facturation
- Un moyen de paiement (CB ou Virement)
- Des tenants pour lesquels il paye et qu'il possède
- Des produits additionels (ex: connexion directe…)
- Peut avoir des sous-comptes pour lesquels il paye
Qu'y-a-t-il dans Openstack ?
- Les tenants
- Toute les resources sont scopées dans un tenant
- Fonctionnement avec bus de messages
- On peut écouter ce qui se passe
- Les métriques
- Tout dans Ceilometer
Ce qu'il n'y a pas dans Openstack
- Le compte payeur
- Pas de notion de regroupement de tenants
- Qui possède et paye
- Pas de notion propriété sur un tenant,
Openstack ne gère que les accès
Ce qu'il n'y a pas dans Openstack
- Le compte payeur
- Pas de notion de regroupement de tenants
- Qui possède et paye
- Pas de notion propriété sur un tenant,
Openstack ne gère que les accès
- Les produits multi-tenants
- Déjà dit : Openstack ne gère que les accès
Ce qu'il n'y a pas dans Openstack
- Le compte payeur
- Pas de notion de regroupement de tenants
- Qui possède et paye
- Pas de notion propriété sur un tenant,
Openstack ne gère que les accès
- Les produits multi-tenants
- Déjà dit : Openstack ne gère que les accès
Lors du provisioning…
- On créé un compte payeur (hors Openstack)
- On créé un tenant dans Openstack
- On rattache ce tenant à UN compte payeur
- On ajoute nos produits multi-tenants
…Et à la fin du mois…
Pour chaque compte payeur, on liste les tenants,
on fait la somme des métriques Ceilometer
et c'est gagné !
…Et à la fin du mois…
Pour chaque compte payeur, on liste les tenants,
on fait la somme des métriques Ceilometer
et c'est gagné !
…Et à la fin du mois…
Pour chaque compte payeur, on liste les tenants,
on fait la somme des métriques Ceilometer
et c'est gagné !
Ça marche mal™
Cas d'erreurs
- On tue sauvagement une VM: pas d'ID Openstack
- Appels avec identifiants incorrects (ex: opération avec token scopé par admin)
- Gare aux états des VMs indiqués dans Nova…
- …
Vous avez déjà regardé les transitions d'état des VMs ?
Attention, il y a un piège…
ERROR = VM allumée ou pas :-)
Ça marche mal™
Ceilometer inadapté si…
Soit 'n' et 'm' 2 valeurs trop petites
- Vous avez plus de 'n' tenants
- Vous voulez conserver les données plus de 'm' jours
- Vous voulez facture les requêtes Object Storage (Swift) : la volumétrie tue Ceilometer
(1 Millions de requêtes Web = 1 Million métriques Swift dans Ceilometer)
Solutions retenues @Cloudwatt
Swift
- Ceilometer fait du polling pour la taille de Swift, on récupère la valeur, on l'ajoute à la valeur existante, puis
>/dev/null
- Ecriture d'un middleware Swift pour regrouper la consommation par tenant: le nombre de métriques Ceilometer devient prédictible
Solutions retenues @Cloudwatt
Nova, Neutron, Glance, Cinder…
- Ajout d'un collecteur indépendant sur le bus OSLO pour récupérer les changements d'états des resources, ajout d'informations sur la région
- Base de données avec changements d'états ⇒ Calcul heure par heure des états, prise en compte des cas particuliers (Resize de VM qui donne cas erreur mais qui marche etc…)
Conclusion
,
_,,)\.~,,._
(()` ``)\))),,_
| \ ''((\)))),,_ ____
|6` | ''((\())) "-.____.-" `-.-,
| .'\ ''))))' \)))
| | `. '' ((((
\, _) \/ |))))
`' | (((((
\ | ))))))
`| | ,\ /((((((
| / `-.______.< \ | )))))
| | / `. \ \ ((((
| / \ | `.\ | (((
\ | | | )| | ))
| | | | / | | '
| | /_( /_(/ /
/_(/__] \_/_(
/__] /__]
Le billing, c'est mon dada
Questions ?