Openstack - Installation Emmanuel Braux Institut Mines Telecom / Télécom Bretagne emmanuel.braux@telecom-bretagne.eu
Objectifs Comprendre les grands principes Obtenir une infrastructure opérationnelle Openstack - Installation
Introduction Mode opératoire Environnement Keystone Glance Nova Neutron Horizon Openstack - Installation
Introduction ► Mode opératoire Environnement Keystone Glance Nova Neutron Horizon Openstack - Installation
Différentes méthodes d’installation Les dépots GIT du projet Openstack https://github.com/openstack/keystone Complexe à mettre en œuvre Difficilement maintenable Les projets clé en main Devstack, Packstack-RDO, Docker, … http://www.brianlinkletter.com/openstack-on-one-machine/ Très rapide à mettre en place Personnalisation limitée Déconseillé en production Les distributions Ubuntu, RedHat, Debian, Suse… https://www.openstack.org/marketplace/distros/ Stables, assez simples à installer Parfois un peu en retard sur les versions Openstack - Installation
Différentes méthodes d’installation Les solutions packagées Mirantis, RedHat, Rackstapce, Nokia, oracle, plateform9, vmWare, Cisco, IBM, DELL, … Très simple, facile à déployer. Des options « propriétaires » Mais souvent soumis à licence Gestion de configuration et développement continu openstack-ansible, puppet-openstack, fuel ,… https://docs.openstack.org/developer/ Complexe à prendre en main Puissant et souple Permet de (re)monter une infrastructure facilement Approche « infrastructure as code » Openstack - Installation
Ne pas négliger l’aspect réseau !!! Premiers tests : tous les réseaux, une seule interface Puis on sépare les réseaux : best practices connectivité, sécurité, performances, … Openstack - Installation
Configuration réseau Et on commence à creuser la configuration … https://docs.openstack.org/liberty/install-guide-ubuntu/launch-instance-networks-private.html https://docs.openstack.org/security-guide/networking/securing-services.html Openstack - Installation
Installation retenue pour le TP Depuis les packages Ubuntu Configuration réseau : une seule interface Utilisation de neutron en mode « self service » (linuxbridge, layer2 et layer3) Openstack - Installation
Mode opératoire ► Introduction Environnement Keystone Glance Nova Neutron Horizon ► Openstack - Installation
Principe Prérequis pour la plupart des composants La base de données La file de message Fichier de configuration Au moins un par composant Et parfois plusieurs (si plusieurs services) Gestion des API Chaque composant publie une API Gestion des autorisations : fichier policy.json Openstack - Installation
La clé de voute : Keystone On commence par installer keystone Chaque composant doit être configurés pour interagir avec Keystone Création d’utilisateur / projet spécifique Déclaration du type de service rendu : image, compute, … Déclaration des accès aux API (dans les 3 réseaux : public, internal,, admin) Usage : Un utilisateur par composant Un projet « service » global Openstack - Installation
Processus standard d’installation Création de la base de données Enregistrement dans keystone Installation du composant Configuration Lancement du ou des services Openstack - Installation
Environnement ► Principe Mode opératoire Keystone Glance Nova Neutron Horizon ► Openstack - Installation
La base de données Stockage de la majorité des données gérées par OpenStack Chaque composant a sa propre base OpenStack utilise l’ORM Python SQLAlchemy MySQL/MariaDB est l’implémentation la plus largement testée et utilisée Openstack - Installation
File de messages AMQP : Advanced Message Queuing Protocol Messages, file d’attente, routage Les processus OpenStack communiquent via AMQP Plusieurs implémentations possibles : Qpid,0MQ, etc. RabbitMQ par défaut Openstack - Installation
Gestion de la mémoire Stockage de données éphémères (token, …) Nova Améliorer les performances de l’authentification Horizon Partage de sessions si plusieurs nœuds Optimisation … Openstack - Installation
Apache Remplace les daemon des composants « WSGI » (Python Web Server Gateway Interface) Robustesse, montée en charge, proxy, … Publication des API Keystone, glance, nova, Accès utilisateurs Horizon Openstack - Installation
Keystone ► Introduction Mode opératoire Environnement Glance Nova Neutron Horizon ► Openstack - Installation
Principe C’est un web-service : il répond à des requêtes HTTP en XML ou JSON (default). écrit en Python (Django) process Autonome (déprécié) ou via Apache https://docs.openstack.org/developer/keystone/architecture.html Openstack - Installation
Installation Paquet : keystone Backends : SQL, LDAP, AD, … Backends tokens : SQL, Memcache, aucun Openstack - Installation
Création des objets de base Vide par défaut Bootstrap : Commande : keystone-manage bootstrap Initialisation de l’environnement Création d’un projet et utilisateur « admin » Déclaration des endpoints Environnement par défaut : « Domaine», « Régions », … Création manuelle des autres objets Projets, user, roles Openstack - Installation
Glance ► Introduction Mode opératoire Environnement Keystone Nova Horizon ► Openstack - Installation
PRINCIPE Est appelé par Nova pour démarrer des instances Expose une API. Registre d’images Utilise l’authentification Keystone Gère des métadonnées sur les images : taille, type, ... https://docs.openstack.org/developer/glance/architecture.html Openstack - Installation
Installation Installation Base de données, Mémoire partagée Paquet glance-api : fournit l’API Paquet glance-registry : registre d’images Base de données, Mémoire partagée Interfaçage avec Keystone Fichiers de configuration /etc/glance/glance-api.conf /etc/glance/glance-registry.conf Configuration du Backend de stockage des images Système de fichier local (ou NFS), HTTP, Swift (OpenStack Object Service), S3 (Object Service Amazon), Ceph, ... Openstack - Installation
Nova ► IntroductionPrincipe Mode opératoire Environnement Keystone Glance Nova Horizon ► Openstack - Installation
De nombreux services Sur les « controler nodes » nova-api : API pour les commandes des utilisateurs nova-api-metadata : API pour le fonctionnement de instances nova-scheduler : répartition des instances sur les noeuds Compute nova-conductor : lien entre nova-compute et la base de données Sur les « compute nodes » nova-compute : gestion des instances sur les hyperviseurs Openstack - Installation
Services « console » services pour prendre la main sur les instances (sur le contrôleur): nova-consoleauth nova-novncproxy nova-spicehtml5proxy nova-xvpnvncproxy nova-cert Openstack - Installation
Dépendances Les différents services communiquent via le passage de messages sur AMPQ Stockage des états (disponibilité, utilisation, réseaux...) dans une base de données Gestion des token keystone : memcache Openstack - Installation
Principe Openstack - Installation
Principe simplifié Openstack - Installation
Nova-API et Nova-API-metadata API de manipulation des instances Nova API-METADATA API à destination des instances Accessible depuis l'instance : http://169.254.169.254 informations relatives à l'instance (metadatas) cloud-init permet d'exploiter cette API Openstack - Installation
NOVA Compute Pilote les instances (machines virtuelles ou physiques) Tire partie de libvirt ou d’autres APIs comme XenAPI Drivers : libvirt (KVM, LXC, etc.), XenAPI, VMWare vSphere, Ironic Permet de récupérer les logs de la console et une console VNC Openstack - Installation
NOVA Scheduler Distribue les demandes d’instances sur les nœuds compute Filter, Chance, Multi Scheduler Filtres, par défaut : AvailabilityZoneFilter, RamFilter, ComputeFilter Tri par poids, par défaut : RamWeigher Openstack - Installation
NOVA Conductor Service facultatif qui améliore la sécurité Fait office de proxy entre les nœuds compute et la BDD Les nœuds compute, vulnérables, n’ont donc plus d’accès à la BDD Openstack - Installation
NOVA Placement Suivi de l’utilisation des ressources Repertorie les ressources Trace l’utilisation par chaque instance Gére les multi-provider RAM/CPU : compute Node Disk : stockage externe Apparu avec Newton, obligatoire depuis Ocata Openstack - Installation
NOVA Network Gestion du réseau Mode FlatManager / FlatDHCPManager Services réseau simple (L2) Pas de réseau virtuel Mode FlatManager / FlatDHCPManager Partage d’une classe d’IP entre les projets Isolation via Iptables Adressage Manuel, ou via un DHCP interne Mode VLANManager Un Vlan par projet Utilise des Vlans disponibles sur le réseau (mode trunk) Déprécié Remplacé par neutron (L3, VPNaaS, LBaaS...) Mais toujours très utilisé dans des grands déploiement Openstack - Installation
Installation Installation Paquets nova-api, nova-conductor, nova-scheduler, nova-consoleauth, nova-novncproxy, nova-placement Paquet nova-compute Base de données, File de messages et Mémoire partagée Interfaçage avec Keystone Fichiers de configuration /etc/nova/nova.conf /etc/nova/nova-compute.conf Openstack - Installation
Neutron ► Introduction Mode opératoire Environnement Keystone Glance Nova Neutron Horizon ► Openstack - Installation
PRINCIPE Gestion du réseau Expose une API, via le Neutron serveur Configuration modulaire : plugins et agents Utilise l’authentification Keystone Interaction forte avec Nova https://docs.openstack.org/admin-guide/networking-arch.html Openstack - Installation
Neutron Plugins Extension ou personnalisation des services S’executent sur les controllers Le plus important : “Modular Layer 2 plugin (ML2)” : gère la couche de niveau 2 (LAN, vLAN, vxLAN , …) Exemples : Firewall-as-a-Service (FWaaS) and Load-Balancer-as-a-Service (LBaaS) interfaçage avec les solutions du marché : Cisco virtual and physical switches, NEC OpenFlow , Open vSwitch, Linux bridging, and the VMware NSX, …) Openstack - Installation
Neutron agent Fonctionnalités techniques précises S’executent sur tous les noeuds. Peuvent être utilisés par de multiples plugins (DHCP Neutron agent) Peuvent être spécifiques à des plugins (Linux Bridge Neutron Agent) Openstack - Installation
Configurations de référence « Provider Networks » S’appuis sur la configuration réseau externe Layer2 uniquement : plugin ML2 (flat,vlan) +DHCP Doit être géré par l’admin Équivalent à « nova-network » « Self service Networks » Permet de créer des réseaux, routeurs, Gestion des IP flottantes, overlapping IP addresses Layer2 et Layer3, Peut-être géré par les utilisateurs Openstack - Installation
Installation Installation Base de données, File de messages Paquet neutron-server Paquet neutron-plugin-ml2 Paquets neutron-linuxbridge-agent, neutron-l3-agent, neutron-dhcp-agent,neutron-metadata-agent Base de données, File de messages Interfaçage avec Keystone et Nova Fichiers de configuration /etc/neutron/neutron.conf /etc/neutron/plugins/*.ini /etc/neutron/*.ini Configuration fortement dépendante du choix des plugins et agents Openstack - Installation
Horizon ► Introduction Mode opératoire Environnement Keystone Glance Nova Neutron Horizon ► Openstack - Installation
HORIZON Interface Utilisateur WEB S’appuie sur les APIs des différents composants Les services doivent être répertoriés dans le catalogue de services de Keystone Module Django OpenStack Dashboard est l’implémentation officielle de ce module Openstack - Installation
Installation Installation Apache et Mémoire partagée Paquet : openstack-dashboard Apache et Mémoire partagée Interfaçage avec Keystone Fichiers de configuration /etc/openstack-dashboard/local_settings.py Openstack - Installation
Liens utiles http://docs.openstack.org/ocata/install-guide-ubuntu/ http://tristan.lt/noolab/ https://github.com/Osones/formations/ Openstack - Installation