Vous êtes sur la page 1sur 41

OpenStack dans la pratique

Adrien Cunin
adrien.cunin@osones.com

Meetup #10 OpenStack Paris

Mercredi 17 septembre 2014

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 1 / 41
Introduction

Alors vous avez besoin d’un cloud et vous voulez monter un cloud privé
OpenStack ?
OpenStack est un projet vaste et complexe
Cela le rend difficile à appréhender au premier abord
Comprendre les concepts cloud est indispensable :
Instances, types d’instance, stockage objet, SDN, APIs, etc.

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 2 / 41
Qui suis-je ?

Adrien Cunin
I 24 ans et passionné de logiciels libres
I Contributeur depuis 2006 (notamment Ubuntu et Debian)
I Ingénieur cloud computing / OpenStack

Osones
I Services et formations cloud computing (OpenStack, AWS)
Association OpenStack-fr
I Membre du CA et co-fondateur

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 3 / 41
Plan

1 OpenStack et ses composants

2 Déployer un cloud OpenStack


Architecture : choses à savoir et questions à se poser
Les différentes méthodes de déploiement
Mais ça ne marche pas...

3 Démonstration : interagir avec un cloud OpenStack

4 On fait quoi ensuite ?

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 4 / 41
Plan

1 OpenStack et ses composants

2 Déployer un cloud OpenStack


Architecture : choses à savoir et questions à se poser
Les différentes méthodes de déploiement
Mais ça ne marche pas...

3 Démonstration : interagir avec un cloud OpenStack

4 On fait quoi ensuite ?

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 5 / 41
Résumé

Your Applications

APIs
OPENSTACK
CLOUD OPERATING SYSTEM

OpenStack Dashboard

Compute Networking Storage

OpenStack Shared Services

Standard Hardware

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 6 / 41
Évolution

En 2010, OpenStack c’est :


Nova : ressources de calcul
Swift : stockage (objet)
Aujourd’hui c’est :
10+ programmes intégrés
Des dizaines d’autres à différents stades de maturité
IaaS → PaaS

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 7 / 41
Implémentation

Python Python Python


Chaque composant est découpé en plusieurs services
La communication entre services se fait via AMQP
Les données sont stockées dans une BDD relationnelle
OpenStack ne réinvente pas la roue
Drivers drivers drivers
Multi tenants
Deux APIs possibles pour communiquer avec le cloud :
I OpenStack
I AWS

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 8 / 41
Extraits des ”Design Tenets”

Scalability and elasticity are our main goals


Everything should be asynchronous
All required components must be horizontally scalable
Always use shared nothing architecture (SN) or sharding
Distribute everything. Especially logic. Move logic to where state
naturally exists
Accept eventual consistency and use it where it is appropriate
https://wiki.openstack.org/wiki/BasicDesignTenets

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 9 / 41
Les différents composants

OpenStack Compute - Nova


OpenStack Object Storage - Swift
OpenStack Block Storage - Cinder
OpenStack Networking - Neutron
OpenStack Image Service - Glance
OpenStack Identity Service - Keystone
OpenStack Dashboard - Horizon
OpenStack Telemetry - Ceilometer
OpenStack Orchestration - Heat

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 10 / 41
Les différents composants (2)

Database service (Trove)


Data processing (Sahara)
OpenStack deployment (TripleO)
Incubating
I Bare metal (Ironic)
I Queue service (Zaqar)
I Key management (Barbican)
I DNS service (Designate)
Beaucoup d’autres en développement

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 11 / 41
Architecture conceptuelle

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 12 / 41
Architecture conceptuelle : vue alternative en couches

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 13 / 41
Architecture logique détaillée

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 14 / 41
Plan

1 OpenStack et ses composants

2 Déployer un cloud OpenStack


Architecture : choses à savoir et questions à se poser
Les différentes méthodes de déploiement
Mais ça ne marche pas...

3 Démonstration : interagir avec un cloud OpenStack

4 On fait quoi ensuite ?

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 15 / 41
Plan

1 OpenStack et ses composants

2 Déployer un cloud OpenStack


Architecture : choses à savoir et questions à se poser
Les différentes méthodes de déploiement
Mais ça ne marche pas...

3 Démonstration : interagir avec un cloud OpenStack

4 On fait quoi ensuite ?

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 16 / 41
Penser dès le début aux choix structurants

Distribution
Méthode de déploiement
Choix des technologies pour virtualisation, réseau, stockage bloc, etc.
De quels composants OpenStack ai-je besoin ?
Combien machines physiques, pour quel rôle, quel découpage réseau ?

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 17 / 41
Quels composants OpenStack dois-je installer ?

Pré-requis :
Python
Base de données : MySQL
AMQP : RabbitMQ
(Très) nombreuses combinaisons possibles. À savoir :
Keystone est indispensable
L’utilisation de Nova va de paire avec Glance et Neutron (sauf
utilisation de nova-network)
Cinder s’avérera utile pour fournir une fonctionnalité de stockage
”classique”
Swift est indépendant des autres composants

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 18 / 41
Quelle version d’OpenStack ?

OpenStack a un cycle de release stable


Tous les 6 mois (tous les 3 mois auparavant)
Alignement avec le cycle de release de certaines distributions
Support sécurité + corrections de bug jusqu’à 15 mois après la release

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 19 / 41
Machine physiques et réseau

Le nombre et le type de machines physiques dépend de :


Composants déployés
Volumétrie attendu
Niveau de haute disponibilité souhaité
Découpage possible du réseau :
Management network : réseau d’administration
Data network : réseau pour la communication inter instances
External network : réseau externe, dans l’infrastructure réseau
existante
API network : réseau contenant les endpoints API

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 20 / 41
Quelques considérations pour une environnement de
production

Des URLs uniformes pour toutes les APIs : utiliser un reverse proxy
HTTPS sur l’accès des APIs à l’extérieur
Sécurisation des communications MySQL et RabbitMQ
Monitoring
Guide Operations :
http://docs.openstack.org/trunk/openstack-ops/content/
Guide Security :
http://docs.openstack.org/security-guide/content/

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 21 / 41
Haute disponibilité et répartition de charge

On parle ici d’OpenStack en tant qu’IaaS (pas des instances)


MySQL, RabbitMQ : HA classique (Galera, Clustering)
Les services APIs sont stateless et HTTP : scale out et load balancers
La plupart des autres services OpenStack sont capables de scale out
également
Guide HA :
http://docs.openstack.org/high-availability-guide/content/

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 22 / 41
Plan

1 OpenStack et ses composants

2 Déployer un cloud OpenStack


Architecture : choses à savoir et questions à se poser
Les différentes méthodes de déploiement
Mais ça ne marche pas...

3 Démonstration : interagir avec un cloud OpenStack

4 On fait quoi ensuite ?

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 23 / 41
Avec de la motivation

Depuis les sources


http://tarballs.openstack.org/
Pas recommandé car complexe et très peu maintenable
Avec OpenStack lui même
TripleO : OpenStack on OpenStack
Concepts intéressants mais projet encore jeune

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 24 / 41
DevStack

Déployer rapidement un OpenStack


Utilisé par les développeurs, pour du test ou de la démonstration
Un script shell qui fait tout le travail : stack.sh
Code issu de git (branch master par défaut)
Ne doit PAS être utilisé pour de la production

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 25 / 41
Les paquets des distributions

Red Hat, Ubuntu, Fedora, Debian, SUSE, etc.


On délègue le travail d’intégration à la distribution
Accès aux mises à jour aux conditions de la ditribution
Certaines distributions fournissent une version pré-packagée avec
OpenStack

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 26 / 41
Outils de gestion de configuration

Puppet, Chef, CFEngine, Saltstack, Ansible, etc.


Ces outils peuvent aider à déployer le cloud OpenStack
... mais aussi à gérer les instances (section suivante)
Déploie les paquets et la configuration souhaitée
Modules Puppet :
https://forge.puppetlabs.com/puppetlabs/openstack

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 27 / 41
Les distributions tout en un

StackOps, Mirantis, etc.


Facilité de déploiement et d’utilisation
Attention à l’évolutivité de ces solutions

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 28 / 41
Déploiement continu

OpenStack maintient un master (trunk) toujours stable


Possibilité de déployer au jour le jour le master (CD: Continous
Delivery )
Nécessite la mise en place d’une infrastructure importante
Facilite les mises à jour entre versions majeures

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 29 / 41
Plan

1 OpenStack et ses composants

2 Déployer un cloud OpenStack


Architecture : choses à savoir et questions à se poser
Les différentes méthodes de déploiement
Mais ça ne marche pas...

3 Démonstration : interagir avec un cloud OpenStack

4 On fait quoi ensuite ?

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 30 / 41
Identifier le problème

Mauvaise utilisation ? L’erreur retournée devrait expliquer


À quel niveau est le problème : dashboard, bibliothèque d’accès à
l’API, API, etc.
Erreur de configuration
Bug

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 31 / 41
Bugs

OpenStack a des bugs


Le résultat n’est pas celui attendu
Le programme crash
Les messages d’erreur ou de log ne sont pas assez explicites
La documentation est erronée ou incomplète
Il faut les signaler s’ils ne sont pas encore connus ! Voire aider à les
corriger.

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 32 / 41
Ressources

http://docs.openstack.org/
https://ask.openstack.org
openstack@lists.openstack.org
#openstack@Freenode
Communauté francophone :
I http//openstack.fr/
I openstack-fr@lists.openstack.org
I #openstack-fr@Freenode
I Association
Support commercial : http://www.openstack.org/marketplace/
et ailleurs

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 33 / 41
Plan

1 OpenStack et ses composants

2 Déployer un cloud OpenStack


Architecture : choses à savoir et questions à se poser
Les différentes méthodes de déploiement
Mais ça ne marche pas...

3 Démonstration : interagir avec un cloud OpenStack

4 On fait quoi ensuite ?

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 34 / 41
Démonstration

Démonstration

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 35 / 41
Plan

1 OpenStack et ses composants

2 Déployer un cloud OpenStack


Architecture : choses à savoir et questions à se poser
Les différentes méthodes de déploiement
Mais ça ne marche pas...

3 Démonstration : interagir avec un cloud OpenStack

4 On fait quoi ensuite ?

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 36 / 41
Adapter ou développer ses applications ”cloud ready”

Stateless : permet de multiplier les routes d’accès à l’application


Ne pas stocker les données en local, mais plutôt :
I Base de données
I Stockage objet
Gérer les cas de panne (réseau, système) au niveau applicatif
API, SDK : http://developer.openstack.org/

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 37 / 41
Adopter une philosophie DevOps

Infrastructure as Code
Scale out plutôt que scale up (horizontalement plutôt que
verticalement)
HA niveau application plutôt qu’infrastructure
Outils de configuration des instances : les mêmes qui permettent de
déployer OpenStack (Puppet, etc.)
Outil d’orchestration des instances : Heat

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 38 / 41
Utiliser des images cloud

Une image cloud c’est :


Une image disque contenant un OS déjà installé
Une image qui peut être instanciée en n machines sans erreur
Un OS sachant parler à l’API de metadata du cloud (cloud-init)
La plupart des distributions fournissent aujourd’hui des images cloud.
Cirros est une distribution cloud minimaliste qui fournit des images
adaptées.

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 39 / 41
Conclusion

Un déploiement d’OpenStack se prépare bien en amont


Les choix à faire en amont sont déterminant pour la réussite d’un
déploiement
L’étape suivante est fondamentale : quel workload va-t-on faire
tourner et est-il compatible avec la philosophie cloud d’OpenStack ?

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 40 / 41
Merci !

Questions ?
Email : adrien.cunin@osones.com
IRC : Adri2000@Freenode
Twitter : @Adri2000 OS

Adrien Cunin (Meetup #10) OpenStack dans la pratique Mercredi 17 septembre 2014 41 / 41

Vous aimerez peut-être aussi