Upload
phamphuc
View
223
Download
1
Embed Size (px)
Citation preview
2 . 2
CONCERNANT CES SUPPORTS DE COURS 1/2Supports de cours réalisés par OsonesOsones https://osones.com
Logo OsonesAUTEURS
Adrien Cunin Pierre Freund Jean-François Taltavull Romain Guichard Kevin Lefevre
[email protected]@osones.com
[email protected]@osones.com
2 . 3
CONCERNANT CES SUPPORTS DE COURS 2/2Copyright © 2014-2017 OsonesLicence : Sources : Online :
Creative Commons BY-SA 4.0https://github.com/Osones/Formations/
https://osones.com/formations.html
Licence Creative Commons BY-SA 4.0
3 . 2
OBJECTIFS DE LA FORMATION : CLOUDComprendre les principes du cloud et son intérêtConnaitre le vocabulaire inhérent au cloudAvoir une vue d’ensemble sur les solutions existantes encloud public et privéPosséder les clés pour tirer parti au mieux du IaaSPouvoir déterminer ce qui est compatible avec la philosophiecloud ou pasAdapter ses méthodes d’administration système à unenvironnement cloud
3 . 3
OBJECTIFS DE LA FORMATION : OPENSTACKConnaitre le fonctionnement du projet OpenStack et sespossibilitésComprendre le fonctionnement de chacun des composantsd’OpenStackPouvoir faire les bons choix de configurationSavoir déployer manuellement un cloud OpenStack pourfournir du IaaSConnaitre les bonnes pratiques de déploiement d’OpenStackÊtre capable de déterminer l’origine d’une erreur dansOpenStackSavoir réagir face à un bug
3 . 4
PRÉ-REQUIS DE LA FORMATIONCompétences d’administration système Linux tel qu’Ubuntu
Gestion des paquetsManipulation de fichiers de configuration et de servicesLVM et systèmes de fichiersSQL
Notions :Virtualisation : KVM, libvirtRéseau : iptables, namespaces
Peut servir :À l’aise dans un environnement Python
4 . 3
CARACTÉRISTIQUESFournir un (des) service(s)...
Self serviceÀ travers le réseauMutualisation desressourcesÉlasticité rapideMesurabilité
Inspiré de la définition du NISThttp://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-
145.pdf
4 . 4
SELF SERVICEL'utilisateur accède directement au servicePas d'intermédiaire humainRéponses immédiatesCatalogue de services permettant leurdécouverte
4 . 5
À TRAVERS LE RÉSEAUL'utilisateur accède au service à travers le réseauLe fournisseur du service est distant du consommateurRéseau = internet ou pasUtilisation de protocoles réseaux standards (typiquement :HTTP)
4 . 6
MUTUALISATION DES RESSOURCESUn cloud propose ses services à de multiplesutilisateurs/organisations → Multi-tenantLes ressources sont disponibles en grandes quantitésLa localisation précise et le taux d'occupation des ressourcesne sont pas visibles
4 . 7
ÉLASTICITÉ RAPIDEProvisionning et suppression des ressources quasi instantanéPossibilité d'automatiser ces actions de scaling (passage àl'échelle)Virtuellement pas de limite à cette élasticité
4 . 8
MESURABILITÉL'utilisation des ressources cloud est monitorée par lefournisseurLe fournisseur peut gérer son capacity planning à partir deces informationsL'utilisateur est facturé en fonction de son usage précis desressources
4 . 9
MODÈLESOn distingue :
modèles de service : IaaS, PaaS, SaaSmodèles de déploiement : public, privé,hybride
4 . 10
IAASInfrastructure as a ServiceInfrastructure :
Compute (calcul)Storage (stockage)Network (réseau)
Utilisateurs cibles : administrateurs (système, stockage,réseau)
4 . 11
PAASPlatform as a ServiceEnvironnement permettant de développer/déployer uneapplicationSpécifique à un language/framework (exemple :Python/Django)Ressources plus haut niveau que l'infrastructure, exemple :BDDUtilisateurs cibles : développeurs d'application
4 . 13
QUELQUECHOSE AS A SERVICE ?Load balancing as a Service (Infra)Database as a Service (Platform)MonApplication as a Service(Software)etc.
4 . 15
CLOUD PUBLIC OU PRIVÉ ?À qui s'adresse le cloud ?
Public : tout le monde, disponible sur internetPrivé : à une organisation, disponible sur son réseau
Concernant le cloud hybride : utilisation mixte de multiplesclouds privés et/ou publics
4 . 16
CLOUD HYBRIDEConcept séduisantMise en œuvre a priori difficileCertains cas d'usages s'y prêtent très bien
Exemple : jobs de CICloud bursting
4 . 17
L'INSTANT VIRTUALISATIONMise au point.
La virtualisation est une technologie permettantd'implémenter la fonction computeUn cloud fournissant du compute peut utiliser lavirtualisationMais peut également utiliser :
Du bare-metalDes containers
4 . 18
LES APIS, LA CLÉ DU CLOUDRappel : API pour Application Programming Interface
Au sens logiciel : Interface permettant à un logicield’utiliser une bibliothèqueAu sens cloud : Interface permettant à un logiciel d’utiliserun service (XaaS)
Interface de programmation (via le réseau, souvent HTTP)Frontière explicite entre le fournisseur (provider) etl'utilisateur (user)Définit la manière dont l'utilisateur communique avec lecloud pour gérer ses ressourcesGérer : CRUD (Create, Read, Update, Delete)REST
4 . 19
RESTUne ressource == une URI (Uniform Resource Identifier)Utilisation des verbes HTTP pour caractériser les opérations(CRUD)
GETPOSTPUTDELETE
Utilisation des codes de retour HTTPReprésentation des ressources dans le corps des réponsesHTTP
4 . 20
REST - EXEMPLESGET http://endpoint/volumes/GET http://endpoint/volumes/?size=10POST http://endpoint/volumes/DELETE http://endpoint/volumes/xyz
4 . 21
EXEMPLE CONCRETGET /v2.0/networks/d32019d3-bc6e-4319-9c1d-6722fc136a22{ "network":{ "status":"ACTIVE", "subnets":[ "54d6f61d-db07-451c-9ab3-b9609b6b6f0b" ], "name":"private-network", "provider:physical_network":null, "admin_state_up":true, "tenant_id":"4fd44f30292945e481c7b8a0c8908869", "provider:network_type":"local", "router:external":true, "shared":true, "id":"d32019d3-bc6e-4319-9c1d-6722fc136a22", "provider:segmentation_id":null }}
4 . 22
POURQUOI LE CLOUD ? CÔTÉ ÉCONOMIQUEAppréhender les ressources IT comme des services“fournisseur”Faire glisser le budget “investissement” (Capex) vers lebudget “fonctionnement” (Opex)Réduire les coûts en mutualisant les ressources, etéventuellement avec des économies d'échelleRéduire les délaisAligner les coûts sur la consommation réelle des ressources
4 . 23
POURQUOI LE CLOUD ? CÔTÉ TECHNIQUEAbstraire les couches basses (serveur, réseau, OS, stockage)S’affranchir de l’administration technique des ressources etservices (BDD, pare-feux, load-balancing, etc.)Concevoir des infrastructures scalables à la voléeAgir sur les ressources via des lignes de code et gérer lesinfrastructures “comme du code”
4 . 25
AMAZON WEB SERVICES (AWS), LE LEADER
Lancement en 2006À l'origine : services web "e-commerce" pourdéveloppeursPuis : d'autres services pour développeursEt enfin : services d'infrastructureRécemment, SaaS
4 . 26
ALTERNATIVES IAAS PUBLICS À AWSGoogle Cloud PlatformGoogle Cloud PlatformMicrosoft AzureMicrosoft AzureRackspaceDreamHostDigitalOceanEn France :
Cloudwatt (Orange BusinessServices)Numergy (SFR)OVHIkoulaScalewayOutscale
4 . 28
OPENSTACK EN QUELQUES MOTS
Naissance en 2010Fondation OpenStack depuis 2012Écrit en Python et distribué sous licence Apache 2.0Soutien très large de l'industrie et contributions variées
4 . 29
EXEMPLES DE PAAS PUBLICAmazon Elastic Beanstalk( )Google App Engine ( )Heroku ( )
https://aws.amazon.com/fr/elasticbeanstalkhttps://cloud.google.com/appengine
https://www.heroku.com
4 . 30
SOLUTIONS DE PAAS PRIVÉCloud Foundry ( )OpenShift ( )Solum ( )
https://www.cloudfoundry.orghttp://www.openshift.org
https://wiki.openstack.org/wiki/Solum
4 . 34
L'INSTANCEÉphémère, durée de vie typiquementcourteDédiée au computeNe doit pas stocker de donnéespersistantesDisque racine non persistant
4 . 35
IMAGE CLOUDImage disque contenant un OS déjà installéInstanciable à l'infiniSachant parler à l'API de metadata
4 . 36
API ... DE METADATAhttp://169.254.169.254Accessible depuis l'instanceFournit des informations relatives àl'instancecloud-init permet d'exploiter cette API
4 . 37
FLAVOR (GABARIT)Instance type chez AWSDéfinit un modèle d’instance en termes de CPU, RAM, disque(racine), disque éphémèreLe disque éphémère a, comme le disque racine, l’avantaged’être souvent local donc rapide
4 . 38
PAIRE DE CLÉClé publique + clé privée SSHLe cloud manipule et stocke la clé publiqueCette clé publique est utilisée pour donner un accès SSH auxinstances
4 . 42
STOCKAGE BLOCKVolumesVolumes attachables à une instanceAccès à des raw devices type /dev/vdbPossibilité d’utiliser n’importe quel système de fichiersPossibilité d'utiliser du LVM, du chiffrement, etc.Compatible avec toutes les applications existantes
4 . 43
"BOOT FROM VOLUME"Démarrer une instance avec un disque racine sur un volumevolume
Persistance des données du disqueracineSe rapproche du serveur classique
4 . 44
STOCKAGE OBJETPousser et retirer des objets dans un container/bucketPas de hiérarchie des données, pas de système de fichiersAccès par les APIsL’application doit être conçue pour tirer parti du stockageobjet
4 . 45
ORCHESTRATIONOrchestrer la création et la gestion des ressources dans lecloudDéfinition de l'architecture dans un templateLes ressources créées à partir du template forment la stack
4 . 47
HAUTE DISPONIBILITÉ (HA)Le control plane (les APIs) du cloud est HALes ressources provisionnées ne le sont pasforcément
4 . 49
INFRASTRUCTURE AS CODEAvec du code
Provisionner les ressources d'infrastructureConfigurer les dites ressources, notamment lesinstances
Le métier évolue : Infrastructure Developer
4 . 50
SCALING, PASSAGE À L'ÉCHELLEScale out plutôt que Scale up
Scale out : passage à l'échellehorizontalScale up : passage à l'échelle vertical
Auto-scaling
4 . 51
APPLICATIONS CLOUD READYStockent leurs données au bon endroitSont architecturées pour tolérer lespannesEtc.
Cf. http://12factor.net/
4 . 54
IMPLÉMENTATION DU STOCKAGE : (SOFTWAREDEFINED STORAGE) SDS
AttentionAttention : ne pas confondre avec le sujet block vs objet
Utilisation de commodity hardwarePas de RAID matérielLe logiciel est responsable de garantir les donnéesLes pannes matérielles sont prises en compte et géréesLe projet CephCeph et le composant OpenStack SwiftOpenStack Swiftimplémentent du SDS
Voir aussi ScalityScality
5 . 4
HISTORIQUEDémarrage en 2010Objectif : le Cloud Operating System libreTo produce a ubiquitous Open Source Cloud Computing platform that is easy to use, simple to implement, interoperable between deployments, works well at all scales, and meets the needs of users and operators of both public and private clouds.Fusion de deux projets de Rackspace (Storage) et de la NASA (Compute)Logiciel libre distribué sous licence Apache 2.0Naissance de la Fondation en 2012
5 . 5
LES RELEASESAustin (2010.1)Bexar (2011.1), Cactus (2011.2), Diablo (2011.3)Essex (2012.1), Folsom (2012.2)Grizzly (2013.1), Havana (2013.2)Icehouse (2014.1), Juno (2014.2)Kilo (2015.1), Liberty (2015.2)Mitaka (2016.1), Newton (2016.2)Ocata (2017.1)PikePike (2017.2)Début 2018 : Queens
5 . 6
QUELQUES SOUTIENS/CONTRIBUTEURS ...Editeurs : Red Hat, Suse, Canonical, Vmware, ...Constructeurs : IBM, HP, Dell, ...Constructeurs/réseau : Juniper, Cisco, ...Constructeurs/stockage : NetApp, Hitachi, ...En vrac : NASA, Rackspace, Yahoo, OVH, Citrix, SAP, ...GoogleGoogle ! (depuis juillet 2015)
https://www.openstack.org/foundation/companies/
5 . 7
... ET UTILISATEURSTous les contributeurs précédemment citésEn France : CloudwattCloudwatt et NumergyNumergyWikimediaCERNPaypalComcastBMWEtc. Sans compter les implémentations confidentielles
https://www.openstack.org/user-stories/
5 . 8
LES DIFFÉRENTS SOUS-PROJETSOpenStack Compute - NovaOpenStack (Object) Storage - SwiftOpenStack Block Storage - CinderOpenStack Networking - NeutronOpenStack Image Service - GlanceOpenStack Identity Service -KeystoneOpenStack Dashboard - HorizonOpenStack Telemetry - CeilometerOpenStack Orchestration - HeatOpenStack Database Service - Trove
5 . 9
LES DIFFÉRENTS SOUS-PROJETS (2)Mais aussi :
Bare metal (Ironic)Queue service (Zaqar)Data processing (Sahara)DNS service (Designate)Shared File Systems (Manila)Key management (Barbican)Container (Magnum)
AutresLes bibliothèques utilisées par OpenStackLes clients (python-*client), CLI etbibliothèquesLes outils de déploiement d'OpenStackLes outils utilisés pour développer OpenStack
5 . 10
LES 4 OPENSOpen SourceOpen DesignOpen DevelopmentOpen Community
https://governance.openstack.org/tc/reference/opens.html
5 . 11
LA FONDATION OPENSTACKEntité de gouvernance principale du projetReprésentation juridique du projetLes membres du board sont issus des entreprises sponsors etélus par les membres individuelsTout le monde peut devenir membre individuel(gratuitement)
5 . 12
LA FONDATION OPENSTACKLa fondation supporte le projet par différents moyens :
Événements : organisation (Summits) ou participation(OSCON, etc.)Infrastructure de développement (serveurs)Ressources humaines : marketing, release manager,quelques développeurs (principalement surl’infrastructure)
500 organisations à travers le monde60000 membres individuels dans 160 pays
5 . 14
RESSOURCESAnnonces (nouvelles versions, avis de sécurité) :
Portail documentation : SDK/APIs : Gouvernance du projet : Versions : Support :
[email protected]#openstack@Freenode
https://docs.openstack.org/http://developer.openstack.org/
https://governance.openstack.org/https://releases.openstack.org/
https://ask.openstack.org/
5 . 15
RESSOURCESActualités :
Blog officiel : Planet : Superuser : OpenStack Community Weekly Newsletter
Ressources commerciales : entre autres
http://www.openstack.org/blog/http://planet.openstack.org
http://superuser.openstack.org/
http://www.openstack.org/marketplace/
5 . 16
RESSOURCES - COMMUNAUTÉ FRANCOPHONE
Logo OpenStack-frSite web : Association des utilisateurs francophones d’OpenStack :
Meetups : Paris, Rhônes-Alpes, Toulouse, Montréal, etc.Présence à des événements tels que Paris Open SourceSummitCanaux de communication :
[email protected]#openstack-fr@Freenode
http://openstack.fr/
https://asso.openstack.fr/
5 . 19
IMPLÉMENTATIONChaque sous-projet est découpé en plusieurs servicesCommunication entre les services : AMQP (RabbitMQ)Base de données : relationnelle SQL (MySQL/MariaDB)Réseau : LinuxBridge, OpenVSwitchEn général : réutilisation de composants existantsTout est développé en Python (Django pour la partieweb)APIs supportées : OpenStack et équivalent AWSMulti tenancy
5 . 22
STATISTIQUES2581 contributeurs à Newton309 organisations contributrices à Newton20 millions de lignes de code écrites depuis le début duprojetDéveloppement hyper actif : 25000 commits dans Liberty
5 . 23
DÉVELOPPEMENT DU PROJET : EN DÉTAILSOuvert à tous (individuels et entreprises)Cycle de développement de 6 mois débuté par un (design)summit
5 . 24
LES OUTILSRevue de code (peer review) : GerritIntégration continue (CI: Continous Integration) : ZuulBlueprints/spécifications et bugs :
LaunchpadStoryboard
Code : Git (GitHub est utilisé comme miroir)
5 . 27
CYCLE DE DÉVELOPPEMENT : 6 MOISLe planning est publié, exemple :
Milestone releasesFreezes : FeatureProposal, Feature, StringRC releasesStable releasesCe modèle de cycle de développement a évolué depuis ledébut du projetCas particulier de Swift et de plus en plus de composantsDepuis Liberty, chaque composant gère son propreversionnement
https://releases.openstack.org/ocata/schedule.html
5 . 28
VERSIONNEMENT DEPUIS LIBERTYSemantic versioningChaque projet est indépendantDans le cadre du cycle de releasenéanmoinshttp://releases.openstack.org/
5 . 29
LE NOUVEAU MODÈLE “BIG TENT”Évolutions récemment implémentéesObjectif : résoudre les limitations du précédent modèleincubation/intégréInclusion a priori de l’ensemble de l’écosystème OpenStackPrograms → Project Teams
Utilisation de tags factuels et objectifshttp://governance.openstack.org/reference/projects/index.html
https://www.openstack.org/software/project-navigator/
5 . 30
QUI CONTRIBUE ?Active Technical ContributorATC : personne ayant au moins une contribution récente dansun projet OpenStack reconnuLes ATC sont invités aux summits et ont le droit de voteCore reviewer : ATC ayant les droits pour valider les patchsdans un projetProject Team Lead (PTL) : élu par les ATCs de chaque projetStackalytics fournit des statistiques sur les contributions
http://stackalytics.com/
5 . 31
OÙ TROUVER DES INFORMATIONS SUR LEDÉVELOPPEMENT D’OPENSTACK
Comment contribuer
Informations diverses, sur le wiki
Les blueprints et bugs sur Launchpad/StoryBoard
https://docs.openstack.org/project-team-guide/https://docs.openstack.org/infra/manual/
https://wiki.openstack.org
https://launchpad.net/openstackhttps://storyboard.openstack.orghttp://specs.openstack.org/
5 . 32
Les patchs proposés et leurs reviews sont sur Gerrit
L’état de la CI (entre autres)
Le code (Git) et les tarballs sont disponibles
IRCRéseau FreenodeLogs discussions et infos réunions :
Mailing-lists
https://review.openstack.org
http://status.openstack.org
https://git.openstack.orghttp://tarballs.openstack.org/
http://eavesdrop.openstack.org/
http://lists.openstack.org/
5 . 33
OPENSTACK INFRAÉquipe projet en charge de l’infrastructure dedéveloppement d’OpenStackTravaille comme les équipes de dev d’OpenStack et utilise lesmêmes outilsRésultat : une infrastructure entièrement open source etdéveloppée comme tel
5 . 34
OPENSTACK SUMMITAux USA jusqu’en 2013Aujourd’hui : alternance Amérique de Nord et Asie/EuropeQuelques dizaines au début à 6000 participants aujourd’huiEn parallèle : conférence (utilisateurs, décideurs) et DesignSummit (développeurs)Détermine le nom de la release : lieu/ville à proximité duSummitUpstream Training
5 . 40
TRADUCTIONLa question de la traduction est dorénavant prise en compte(officialisation de l’équipe i18n)Seules certaines parties sont traduites, comme HorizonLa traduction française est aujourd’hui une des plus avancéesUtilisation d'une plateforme web basée sur Zanata :https://translate.openstack.org/
5 . 42
UTILITÉ DE DEVSTACKDéployer rapidement un OpenStackUtilisé par les développeurs pour tester leurs changementsUtilisé pour faire des démonstrationsUtilisé pour tester les APIs sans se préoccuper dudéploiementNe doit PAS être utilisé pour de la production
5 . 43
FONCTIONNEMENT DE DEVSTACKUn script shell qui fait tout le travail : stack.shUn fichier de configuration : local.confInstalle toutes les dépendances nécessaires(paquets)Clone les dépôts git (branche master par défaut)Lance tous les composants dans un screen
5 . 44
CONFIGURATION : LOCAL.CONFExemple
[[local|localrc]]ADMIN_PASSWORD=secreteDATABASE_PASSWORD=$ADMIN_PASSWORDRABBIT_PASSWORD=$ADMIN_PASSWORDSERVICE_PASSWORD=$ADMIN_PASSWORDSERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50#FIXED_RANGE=172.31.1.0/24#FLOATING_RANGE=192.168.20.0/25#HOST_IP=10.3.4.5
5 . 45
CONSEILS D’UTILISATIONDevStack installe beaucoup de choses sur la machineIl est recommandé de travailler dans une VMPour tester tous les composants OpenStack dans de bonnesconditions, plusieurs Go de RAM sont nécessairesL’utilisation de Vagrant est conseillée
5 . 47
LE PRINCIPEToutes les fonctionnalités sont accessibles par l’APILes clients (y compris Horizon) utilisent l’APIDes crédentials sont nécessaires
API OpenStack : utilisateur + mot de passe + tenant (+domaine)API AWS : access key ID + secret access key
5 . 48
LES APIS OPENSTACKUne API par service OpenStack
Chaque API est versionnée, la rétro-compatibilité est assuréeRESTCertains services sont aussi accessibles via une API différentecompatible AWS
http://developer.openstack.org/api-ref.html
5 . 49
AUTHENTIFICATION ET CATALOGUE DE SERVICEUne fois authentifié, récupération d’un jeton (token)Récupération du catalogue de servicesPour chaque service, un endpoint HTTP (API)
5 . 50
ACCÈS AUX APISDirect, en HTTP, via des outils comme curlAvec une bibliothèque
Les implémentations officielles en PythonOpenStackSDKD’autres implémentations, y compris pour d’autreslangages (exemple : jclouds)Shade
Avec les outils officiels en ligne de commandeAvec Horizon
5 . 51
CLIENTS OFFICIELSLe projet fournit des clients officiels : python-PROJETclientBibliothèques PythonOutils CLI
L’authentification se fait en passant les credentials parparamètres ou variables d’environnementL’option --debug affiche la communication HTTP
5 . 52
OPENSTACK CLIENTClient CLI unifiéCommandes du type openstack <ressource ><action >Vise à remplacer à terme les clients spécifiquesPermet une expérience utilisateur plus homogèneFichier de configuration clouds.yaml
6 . 2
CE QU’ON VA VOIRInstaller OpenStack à la main
Donc comprendre son fonctionnementPasser en revue chaque composant plus en détailsTour d’horizon des solutions de déploiement
http://docs.openstack.org/ocata/install-guide-ubuntu/
6 . 5
QUELQUES ÉLÉMENTS DE CONFIGURATIONGÉNÉRAUX
Tous les composants doivent être configurés pourcommuniquer avec KeystoneLa plupart doivent être configurés pour communiquer avecMySQL/MariaDB et RabbitMQLes composants découpés en plusieurs services ont parfoisun fichier de configuration par serviceLe fichier de configuration policy.json précise les droitsnécessaires pour chaque appel API
6 . 6
SYSTÈME D’EXPLOITATIONOS Linux avec PythonHistoriquement : UbuntuRed Hat s’est largementrattrapéSUSE, Debian, CentOS, etc.
6 . 7
PYTHON
Logo PythonOpenStack est aujourd’hui compatible Python 2.7Afin de ne pas réinventer la roue, beaucoup de dépendancessont nécessairesUn travail de portage vers Python 3 est en cours
6 . 8
BASE DE DONNÉESPermet de stocker la majorité des données gérées parOpenStackChaque composant a sa propre baseOpenStack utilise l’ORM Python SQLAlchemySupport théorique équivalent à celui de SQLAlchemyMySQL/MariaDB est l’implémentation la plus largementtestée et utiliséeSQLite est principalement utilisé dans le cadre de tests etdémoCertains déploiements fonctionnent avec PostgreSQL
6 . 9
POURQUOI L’UTILISATION DE SQLALCHEMY
Logo SQLAlchemySupport de multiplesBDDGestion des migrations
Logo MySQL
6 . 10
PASSAGE DE MESSAGESAMQP : Advanced Message Queuing ProtocolMessages, file d’attente, routageLes processus OpenStack communiquent via AMQPPlusieurs implémentations possibles : Qpid, 0MQ,etc.RabbitMQ par défaut
6 . 11
RABBITMQ
Logo RabbitMQRabbitMQ est implémenté en ErlangUne machine virtuelle Erlang est doncnécessaire
6 . 14
PRINCIPESAnnuaire des utilisateurs et des groupesGère des domainesListe des tenants/projetsCatalogue de servicesGère l’authentification et l’autorisationFournit un token à l’utilisateur
6 . 15
APIAPI v2 (dépréciée) : admin port 35357, utilisateur port5000API v3 : port 5000Gère utilisateurs, groupes, domainesLes utilisateurs ont des rôles sur des projets (tenants)Les services du catalogue sont associés à des endpoints
6 . 17
INSTALLATION ET CONFIGURATIONPaquet : keystoneIntégration serveur web WSGIBackends : SQL, LDAP (ou Active Directory)Backends tokens : SQL, Memcache, aucun (suivant le type detokens)BootstrapCréation des services et endpointsCréation d'utilisateurs, groupes, domaines
6 . 19
PRINCIPESGère les instancesLes instances sont créées à partir des images fournies parGlanceLes interfaces réseaux des instances sont associées à desports NeutronDu stockage block peut être fourni aux instances par Cinder
6 . 21
PROPRIÉTÉS D’UNE INSTANCEÉphémère, a priori non hautement disponibleDéfinie par une flavorConstruite à partir d’une imageOptionnel : attachement de volumesOptionnel : boot depuis un volumeOptionnel : une clé SSH publiqueOptionnel : des ports réseaux
6 . 22
APIGère :
InstancesFlavors (types d’instance)KeypairsIndirectement : images, security groups (groupes desécurité), floating IPs (IPs flottantes)
Les instances sont redimensionnables et migrables d’un hôtephysique à un autre.
6 . 23
FLAVORSGabaritÉquivalent des “instance types” d’AWSDéfinit un modèle d’instance en termes de CPU, RAM, disque(racine), disque éphémèreUn disque de taille nul équivaut à prendre la taille de l’imagede baseLe disque éphémère a, comme le disque racine, l’avantaged’être souvent local donc rapide
6 . 24
NOVA APIDouble rôleAPI de manipulation des instances par l’utilisateurAPI à destination des instances : API de metadataL’API de metadata doit être accessible à l’adressehttp://169.254.169.254/L’API de metadata fournit des informations de configurationpersonnalisées à chacune des instances
6 . 25
NOVA COMPUTEPilote les instances (machines virtuelles ou physiques)Tire partie de libvirt ou d’autres APIs comme XenAPIDrivers : libvirt (KVM, LXC, etc.), XenAPI, VMWare vSphere,IronicPermet de récupérer les logs de la console et une consoleVNC
6 . 26
NOVA SCHEDULERService qui distribue les demandes d’instances sur les nœudscomputeFilter, Chance, Multi SchedulerFiltres, par défaut :AvailabilityZoneFilter,RamFilter,ComputeFilterTri par poids, par défaut : RamWeigher
6 . 28
NOVA CONDUCTORService facultatif qui améliore la sécuritéFait office de proxy entre les nœuds compute et la BDDLes nœuds compute, vulnérables, n’ont donc plus d’accès àla BDD
6 . 30
PRINCIPESRegistre d’images (et des snapshots)Propriétés sur les imagesEst utilisé par Nova pour démarrer des instancesPeut utiliser Swift comme back-end de stockage
6 . 31
PROPRIÉTÉS DES IMAGES DANS GLANCEL’utilisateur peut définir un certain nombre de propriétés dont
certaines seront utilisées lors de l’instanciation
Type d’imageArchitectureDistributionVersion de ladistributionEspace disque minimumRAM minimumPublique ou non
6 . 32
TYPES D’IMAGESGlance supporte un large éventail de types d’images, limité par
le support de l’hyperviseur sous-jacent à Nova
rawqcow2amivmdkiso
6 . 34
INSTALLATIONPaquet glance-api : fournit l’APIPaquet glance-registry : démon du registre d’images en tantque tel
6 . 36
PRINCIPESSoftware Defined Networking (SDN)Auparavant Quantum et nova-networkneutron-server : fournit l’APIAgent DHCP : fournit le service de DHCP pour les instancesAgent L3 : gère la couche 3 du réseau, le routagePlugin : LinuxBridge par défaut, d’autres implémentationslibres/propriétaires, logicielles/matérielles existent
6 . 37
FONCTIONNALITÉS SUPPLÉMENTAIRESOutre les fonctions réseau de base niveaux 2 et 3, Neutron peut
fournir d’autres services :
Load Balancing (HAProxy, ...)Firewall (vArmour, ...) : diffère des groupes de sécuritéVPN (Openswan, ...) : permet d’accéder à un réseau privé sansIP flottantes
Ces fonctionnalités se basent également sur des plugins
6 . 38
APIL’API permet notamment de manipuler ces ressources :
Réseau (network) : niveau 2Sous-réseau (subnet) : niveau 3Port : attachable à une interface sur une instance, un load-balancer, etc.RouteurIP flottante, groupe de sécurité
6 . 39
LES GROUPES DE SÉCURITÉÉquivalent à un firewall devant chaque instanceUne instance peut être associée à un ou plusieurs groupes desécuritéGestion des accès en entrée et sortieRègles par protocole (TCP/UDP/ICMP) et par portCible une adresse IP, un réseau ou un autre groupe desécurité
6 . 40
PLUGINS ML2Modular Layer 2Modular Layer 2LinuxBridgeOpenVSwitchOpenDaylightContrail, OpenContrailNuage NetworksVMWare NSXcf. OpenFlow
6 . 41
IMPLÉMENTATIONNeutron tire partie des namespaces réseaux du noyau Linuxpour permettre l’IP overlappingLe proxy de metadata est un composant qui permet auxinstances isolées dans leur réseau de joindre l’API demetadata fournie par Nova
6 . 45
PRINCIPESAuparavant nova-volumeFournit des volumes (stockage block) attachables auxinstancesGère différents types de volumeGère snapshots et backups de volumesAttachement via iSCSI par défaut
6 . 46
DU STOCKAGE PARTAGÉ ?Cinder n’est paspas une solution de stockage partagé commeNFSLe projet OpenStack Manila a pour objectif d’être un NFS as aServiceAWS n’a introduit une telle fonctionnalité que récemment
6 . 47
UTILISATIONVolume supplémentaire (et stockage persistant) sur uneinstanceBoot from volume : l’OS est sur le volumeFonctionnalité de backup vers un object store (Swift ou Ceph)
6 . 48
INSTALLATIONPaquet cinder-api : fournit l’APIPaquet cinder-volume : création et gestion des volumesPaquet cinder-scheduler : distribue les demandes de créationde volumePaquet cinder-backup : backup vers un object store
6 . 49
BACKENDSUtilisation de plusieurs backends en parallèlepossibleLVM (par défaut)GlusterFSCephSystèmes de stockage propriétaires type NetAppDRBD
6 . 51
PRINCIPESUtilise les APIs existantes pour fournir une interfaceutilisateurHorizon est un module DjangoOpenStack Dashboard est l’implémentation officielle de cemodule
6 . 52
CONFIGURATIONlocal_settings.pyLes services apparaissent dans Horizon s’ils sont répertoriésdans le catalogue de services de Keystone
6 . 55
PRINCIPESSDS : Software Defined StorageUtilisation de commodityhardwareThéorème CAP : on en choisit deuxAccès par les APIsArchitecture totalement acentréePas de base de données centrale
6 . 56
IMPLÉMENTATIONProxy : serveur API par lequel passent toutes les requêtesObject server : serveur de stockageContainer server : maintient des listes d’objects dans descontainersAccount server : maintient des listes de containers dans desaccountsChaque objet est répliqué n fois (3 par défaut)
6 . 57
LE RINGProblème : comment décider quelle donnée va sur quelobject serverLe ring est découpé en partitionsOn situe chaque donnée dans le ring afin de déterminer sapartitionUne partition est associée à plusieurs serveurs
6 . 60
SURVEILLER L’UTILISATION DE SONINFRASTRUCTURE AVEC CEILOMETER
Indexe différentes métriques concernant l’utilisation desdifférents services du cloudFournit des APIs permettant de récupérer ces donnéesBase pour construire des outils de facturation (exemple :CloudKitty)Utilise MongoDB (par défaut) pour le stockage
6 . 61
GNOCCHI : TIME-SERIES DATABASEPourquoi Gnocchi ? Palier aux problème de scalabilité deCeilometerInitié par des développeurs de Ceilometer et intégré àl’équipe projet CeilometerBack-end remplaçant MongoDB pour Ceilometer
6 . 63
ORCHESTRER SON INFRASTRUCTURE AVEC HEATÉquivalent d’Amazon Cloud FormationOrchestrer les ressources compute, storage, network, etc.Doit se coupler avec cloud-initDescription de son infrastructure dans un fichier template,format JSON (CFN) ou YAML (HOT)
6 . 64
AUTOSCALING AVEC HEATHeat implémente la fonctionnalité d’autoscaling
Se déclenche en fonction des alarmes produites parCeilometerEntraine la création de nouvelles instances
6 . 65
UN TEMPLATE HOTparameters - resources - outputs
heat_template_version: 2013-05-23description: Simple template to deploy a single compute instanceresources: my_instance: type: OS::Nova::Server properties: key_name: my_key image: F18-x86_64-cfntools flavor: m1.small
6 . 67
CONSTRUIRE UN TEMPLATE À PARTIRD’EXISTANT
Multiples projets en cours de développement
Flame (Cloudwatt)HOT builderMerlin
6 . 69
PRINCIPEFournit des bases de données relationnelles, à la AWS RDSA vocation à supporter des bases NoSQL aussiGère notamment MySQL/MariaDB comme back-endSe repose sur Nova pour les instances dans lesquelles se faitl’installation d’une BDD
6 . 70
SERVICEStrove-api : APItrove-taskmanager : gère les instances BDDtrove-guestagent : agent interne à l’instance
6 . 73
BARBICAN - KEY MANAGEMENT AS A SERVICEGère des secrets / clés privéesBackends possibles :
Fichiers chiffrésPKCS#11KMIPDogtag
6 . 75
IRONICAnciennement Nova bare-metalPermet le déploiement d’instances sur des machinesphysiques (plutôt que VMs)Repose sur des technologies telles que PXE, TFTP
6 . 76
OSLO, OU OPENSTACK COMMONOslo contient le code commun à plusieurs composantsd’OpenStackSon utilisation est transparente pour le déployeur
6 . 77
ROOTWRAPWrapper pour l’utilisation de commandes en rootConfiguration au niveau de chaque composant quil’utilisePermet d’écrire des filtres sur les commandes
6 . 78
TRIPLEOOpenStack On OpenStackObjectif : pouvoir déployer un cloud OpenStack (overcloud) àpartir d’un cloud OpenStack (undercloud)Autoscaling du cloud lui-même : déploiement de nouveauxnœuds compute lorsque cela est nécessaireFonctionne conjointement avec Ironic pour le déploiementbare-metal
6 . 79
TEMPESTSuite de tests d’un cloud OpenStackEffectue des appels à l’API et vérifie le résultatEst très utilisé par les développeurs via l’intégration continueLe déployeur peut utiliser Tempest pour vérifier la bonneconformité de son cloudCf. aussi Rally
6 . 81
QUELS COMPOSANTS DOIS-JE INSTALLER ?Keystone est indispensableL’utilisation de Nova va de paire avec Glance et NeutronCinder s’avérera souvent utileCeilometer et Heat vont souvent ensembleSwift est indépendant des autres composantsNeutron peut parfois être utilisé indépendamment (ex : avecoVirt)
http://docs.openstack.org/arch-design/
6 . 82
PENSER DÈS LE DÉBUT AUX CHOIXSTRUCTURANTS
Distribution et méthode de déploiementHyperviseurRéseau : quelle architecture et quels driversPolitique de mise à jour
6 . 83
LES DIFFÉRENTES MÉTHODES D’INSTALLATIONDevStack est à oublier pour la productionTripleO est très complexeLe déploiement à la main comme vu précédemment n’est pasrecommandé car peu maintenableDistributions OpenStack packagées et prêtes à l’emploiDistributions classiques et gestion de configurationDéploiement continu
6 . 84
MISES À JOUR ENTRE VERSIONS MAJEURESOpenStack supporte les mises à jour N → N+1Swift : très bonne gestion en mode rolling upgradeAutres composants : tester préalablement avec vosdonnéesLire les release notesCf. articles de blog du CERN
6 . 85
MISES À JOUR DANS UNE VERSION STABLEFourniture de correctifs de bugs majeurs et de sécuritéOpenStack intègre ces correctifs sous forme de patchs dansla branche stablePublication de point releases intégrant ces correctifs issus dela branche stableDurée variable du support des versions stables, dépendantde l’intérêt des intégrateurs
6 . 86
ASSIGNER DES RÔLES AUX MACHINESBeaucoup de documentations font référence à ces rôles :
Controller node : APIs, BDD, AMQPNetwork node : DHCP, routeur, IPs flottantesCompute node : Hyperviseur/pilotage des instances
Ce modèle simplifié n’est pas HA.
6 . 87
HAUTE DISPONIBILITÉHaute disponibilité du IaaS
MySQL/MariaDB, RabbitMQ : HA classique (Galera, Clustering)Les services APIs sont stateless et HTTP : scale out et loadbalancersLa plupart des autres services OpenStack sont capables descale out également
Guide HA : http://docs.openstack.org/ha-guide/
6 . 88
HAUTE DISPONIBILITÉ DE L’AGENT L3 DENEUTRON
Plusieurs solutions et contournementspossiblesDepuis Juno : Distributed Virtual Router (DVR)
6 . 89
CONSIDÉRATIONS POUR UNE ENVIRONNEMENTDE PRODUCTION
Des URLs uniformes pour toutes les APIs : utiliser un reverseproxyApache/mod_wsgi pour servir les APIs lorsque cela estpossible (Keystone)Utilisation des quotasPrévoir les bonnes volumétries, notamment pour les donnéesCeilometerMonitoringBackupQoS : en cours d’implémentation dans Neutron
Guide Operations : http://docs.openstack.org/openstack-
6 . 90
UTILISATION DES QUOTASLimiter le nombre de ressourcesallouablesPar utilisateur ou par tenantSupport dans NovaSupport dans CinderSupport dans Neutron
http://docs.openstack.org/user-guide-admin/content/cli_set_quotas.html
6 . 91
DÉCOUPAGE RÉSEAUManagement network : réseau d’administrationData network : réseau pour la communication inter instancesExternal network : réseau externe, dans l’infrastructureréseau existanteAPI network : réseau contenant les endpoints API
6 . 92
CONSIDÉRATIONS LIÉES À LA SÉCURITÉIndispensable : HTTPS sur l’accès des APIs à l’extérieurSécurisation des communications MySQL/MariaDB etRabbitMQUn accès MySQL/MariaDB par base et par serviceUn utilisateur Keystone par serviceLimiter l’accès en lecture des fichiers de configuration (motsde passe, token)Veille sur les failles de sécurité : OSSA (OpenStack SecurityAdvisory), OSSN (... Notes)
Guide sécurité : http://docs.openstack.org/security-guide/
6 . 93
SEGMENTER SON CLOUDHost aggregates : machines physiques avec descaractéristiques similairesAvailability zones : machines dépendantes d’une mêmesource électrique, d’un même switch, d’un même DC, etc.Regions : chaque région a son APICells : permet de regrouper plusieurs cloud différents sousune même API
http://docs.openstack.org/openstack-ops/content/scaling.html#segregate_cloud
6 . 94
HOST AGGREGATES / AGRÉGATS D’HÔTESSpécifique NovaL’administrateur définit des agrégats d’hôtes via l’APIL’administrateur associe flavors et agrégats via des couplesclé/valeur communs1 agrégat ≡ 1 point commun, ex : GPUL’utilisateur choisit un agrégat à travers son choix de flavor àla création d’instance
6 . 95
AVAILABILITY ZONES / ZONES DEDISPONIBILITÉ
Spécifique Nova et CinderGroupes d’hôtesDécoupage en termes de disponibilité : Rack, Datacenter, etc.L’utilisateur choisit une zone de disponibilité à la créationd’instanceL’utilisateur peut demander à ce que des instances soientdémarrées dans une même zone, ou au contraire dans deszones différentes
6 . 96
RÉGIONSGénérique OpenStackÉquivalent des régions d’AWSUn service peut avoir différents endpoints dans différentesrégionsChaque région est autonomeCas d’usage : cloud de grande ampleur (comme certainsclouds publics)
6 . 97
CELLS / CELLULESSpécifique NovaUn seul nova-api devant plusieurs cellulesChaque cellule a sa propre BDD et file de messagesAjoute un niveau de scheduling (choix de lacellule)
6 . 98
PACKAGING D’OPENSTACK - UBUNTULe packaging est fait dans de multiples distributions, RPM,DEB et autresUbuntu est historiquement la plateforme de référence pourle développement d’OpenStackLe packaging dans Ubuntu suit de près le développementd’OpenStack, et des tests automatisés sont réalisésCanonical fournit la Ubuntu Cloud Archive, qui met àdisposition la dernière version d’OpenStack pour la dernièreUbuntu LTS
6 . 100
PACKAGING D’OPENSTACK DANS LES AUTRESDISTRIBUTIONS
OpenStack est intégré dans les dépôts officiels de DebianRed Hat propose RHOS/RDO (déploiement basé sur TripleO)Comme Ubuntu, le cycle de release de Fedora estsynchronisé avec celui d’OpenStack
6 . 102
DÉPLOIEMENT BARE-METALLe déploiement des hôtes physiques OpenStack peut se faireà l’aide d’outils dédiésMaaS (Metal as a Service), par Ubuntu/Canonical : se coupleavec JujuCrowbar / OpenCrowbar (initialement Dell) : utilise ChefeDeploy (eNovance) : déploiement par des imagesIronic via TripleO
6 . 103
GESTION DE CONFIGURATIONPuppet, Chef, CFEngine, Saltstack, Ansible, etc.Ces outils peuvent aider à déployer le cloudOpenStack... mais aussi à gérer les instances (section suivante)
6 . 104
MODULES PUPPET, PLAYBOOKS ANSIBLEPuppet OpenStack et OpenStack Ansible : modules Puppet etplaybooks AnsibleDéveloppés au sein du projet OpenStackhttps://wiki.openstack.org/wiki/Puppethttp://docs.openstack.org/developer/openstack-ansible/install-guide/
6 . 105
DÉPLOIEMENT CONTINUOpenStack maintient un master (trunk) toujours stablePossibilité de déployer au jour le jour le master (CD :Continous Delivery)Nécessite la mise en place d’une infrastructure importanteFacilite les mises à jour entre versions majeures
6 . 107
PROBLÈMES : RESSOURCES FAILED/ERRORPlusieurs causes possiblesPossibilité de supprimer la ressource?L’appel API reset-state peut servir
6 . 108
LES RÉFLEXES EN CAS D’ERREUR OU DECOMPORTEMENT ERRONÉ
Travaille-t-on sur le bon tenant ?Est-ce que l’API renvoie une erreur ? (le dashboard peutcacher certaines informations)Si nécessaire d’aller plus loin :
Regarder les logs sur le cloud controller(/var/log/<composant>/*.log)Regarder les logs sur le compute node et le network nodesi le problème est spécifique réseau/instanceÉventuellement modifier la verbosité des logs dans laconfiguration
6 . 109
EST-CE UN BUG ?Si le client CLI crash, c’est un bugSi le dashboard web ou une API renvoie une erreur 500, c’estpeut-être un bugSi les logs montrent une stacktrace Python, c’est un bugSinon, à vous d’en juger
7 . 2
DEUX VISIONSUne fois un cloud IaaS en place, deux optiques possibles :
Garder les mêmes pratiques tout en profitant du self serviceet de l’agilité de la solution pour des besoins test/devFaire évoluer ses pratiques, tant côté applicatif que système“Pets vs Cattle”
7 . 3
SINON ?Faire tourner des applications legacy dans le cloud est une
mauvaise idée :
Interruptions de servicePertes de donnéesIncompréhensions “le cloud ça marchepas”
7 . 5
ADAPTER OU PENSER SES APPLICATIONS“CLOUD READY” 1/3
Cf. les design tenets du projet OpenStack et Twelve-Factorhttp://12factor.net/
Architecture distribuée plutôt quemonolithique
Facilite le passage à l’échelleLimite les domaines de failure
Couplage faible entre les composants
7 . 6
ADAPTER OU PENSER SES APPLICATIONS“CLOUD READY” 2/3
Bus de messages pour les communications inter-composantsStateless : permet de multiplier les routes d’accès àl’applicationDynamicité : l’application doit s’adapter à sonenvironnement et se reconfigurer lorsque nécessairePermettre le déploiement et l’exploitation par des outilsd’automatisation
7 . 7
ADAPTER OU PENSER SES APPLICATIONS“CLOUD READY” 3/3
Limiter autant que possible les dépendances à du matériel oudu logiciel spécifique qui pourrait ne pas fonctionner dans uncloudTolérance aux pannes (fault tolerance) intégréeNe pas stocker les données en local, mais plutôt :
Base de donnéesStockage objet
Utiliser des outils standards de journalisation
7 . 9
ADOPTER UNE PHILOSOPHIE DEVOPSInfrastructure as CodeScale out plutôt que scale up (horizontalement plutôt queverticalement)HA niveau application plutôt qu’infrastructureAutomatisation, automatisation, automatisationTests
7 . 10
MONITORINGPrendre en compte le cycle de vie desinstancesMonitorer le service plus que le serveur
7 . 11
BACKUPÊtre capable de recréer ses instances (et le reste de soninfrastructure)Données (applicatives, logs) : block, objet
7 . 12
UTILISER DES IMAGES CLOUDUne image cloud c’est :
Une image disque contenant un OS déjà installéUne image qui peut être instanciée en n machines sans erreurUn OS sachant parler à l’API de metadata du cloud (cloud-init)Détails :
La plupart des distributions fournissent aujourd’hui desimages cloud.
http://docs.openstack.org/image-guide/openstack-images.html
7 . 13
CIRROSCirros est l’image cloud par excellenceOS minimalisteContient cloud-init
https://launchpad.net/cirros
7 . 14
CLOUD-INITCloud-init est un moyen de tirer parti de l’API de metadata, etnotamment des user dataL’outil est intégré par défaut dans la plupart des imagescloudÀ partir des user data, cloud-init effectue les opérations depersonnalisation de l’instancecloud-config est un format possible de user data
7 . 16
COMMENT GÉRER SES IMAGES ?Utilisation d’images génériques et personnalisation àl’instanciationCréation d’images intermédiaires et/ou totalementpersonnalisées : Golden images
libguestfs, virt-builder, virt-sysprepdiskimage-builder (TripleO)Packersolution “maison”
7 . 17
CONFIGURER ET ORCHESTRER SES INSTANCESOutils de gestion de configuration (les mêmes qui permettentde déployer OpenStack)Juju