OpenStack Jörn Esdohr | Oktober 2012, Dortmund
Open Source Cloud Plattform als IaaS (Infrastructure as a Service) Was ist OpenStack? Open Source Cloud Plattform als IaaS (Infrastructure as a Service) Wer steckt hinter OpenStack? 2010, Rackspace und Nasa starten OpenStack Projekt OpenStack Foundation unterstützt von über 140 Unternehmen z.B. Deutsche Telekom, AT&T, HP, IBM, … Jörn Esdohr | Dortmund, Oktober 2012
Teil 1 Architektur von OpenStack Teil 2 Client-Server-Interaktion Jörn Esdohr | Dortmund, Oktober 2012
Teil 1 Architektur von OpenStack Jörn Esdohr | Dortmund, Oktober 2012
Teil 1 Architektur von OpenStack OpenStack verteilt Cloud Funktionen auf 7 einzelne Dienste (Core Projects). Jörn Esdohr | Dortmund, Oktober 2012
Nova – Compute Server-Instanzen Virtuelle Maschinen „Flavor“ Hardware-Konfiguration (Speicher, RAM, CPU Priorität) Image Abbildungen von Server-Installationen (Fedora, Ubuntu, …) Nova verwaltet Server-Instanzen und bietet Schnittstellen für Cloud Anwendungen. Jörn Esdohr | Dortmund, Oktober 2012
Nova – Compute Tenants (Projekte) Ressourcen-Container definiert durch Quota Server-Instanzen vCPU IP Adressen virtuelle Datenträger (Volumes) Jörn Esdohr | Dortmund, Oktober 2012
Jörn Esdohr | Dortmund, Oktober 2012
Glance – Image Service Verwaltung von Server Images Jörn Esdohr | Dortmund, Oktober 2012
Jörn Esdohr | Dortmund, Oktober 2012
Swift – Object Storage Verwaltung statischer Web-Inhalte (Bilder, Media-Dateien, Images, …) Jörn Esdohr | Dortmund, Oktober 2012
Jörn Esdohr | Dortmund, Oktober 2012
Cinder – Block Storage Verwaltung virtueller Datenträger (Volumes). Daten überleben Server-Termination. Jörn Esdohr | Dortmund, Oktober 2012
Jörn Esdohr | Dortmund, Oktober 2012
Quantum – Network Service Quantum erlaubt Konstruktion komplexer Netzwerk-Topologien. Jörn Esdohr | Dortmund, Oktober 2012
Jörn Esdohr | Dortmund, Oktober 2012
Keystone – Identity Service Keystone authentifiziert Anfragen an das OpenStack API. Wichtige Strukturelemente Tenant User (Zuordnung zu Tenants) Rollen (Admin, Enduser, …) Tokens (temporäre Authentifizierungs-Strings für API Anfragen) Jörn Esdohr | Dortmund, Oktober 2012
Jörn Esdohr | Dortmund, Oktober 2012
Jörn Esdohr | Dortmund, Oktober 2012
OpenStack Architektur Jörn Esdohr | Dortmund, Oktober 2012
Teil 2 Client-Server-Interaktion Jörn Esdohr | Dortmund, Oktober 2012
OpenStack API Das OpenStack API ist ein REST-ful Web Service. REST (Representational State Transfer) Client-Server-Struktur mit Verben (Aktionen) und Subjekten (Ressourcen) Senden von Anfragen an URI (Uniform Resource Identifier) 4 Prinzipien Beschränkung auf HTTP Methoden: GET, POST , PUT, DELETE API ist “stateless”, d.h. alle benötigten Informationen sind in Aufruf-Parametern URIs in Verzeichnis-Struktur Antwort in XML oder JSON (JavaScript Object Notation) Jörn Esdohr | Dortmund, Oktober 2012
REST-ful Web Service Semantik der HTTP-Methoden GET PUT POST DELETE Anforderung von Ressourcen Änderung von Ressourcen Erzeugung von Ressourcen Löschung von Ressourcen Jörn Esdohr | Dortmund, Oktober 2012
Beispiel: API für Server-Instanzen (1) Aufbau der REST URI Jörn Esdohr | Dortmund, Oktober 2012
Beispiel: API für Server-Instanzen (2) v2/{tenant_id}/servers/{server_id} GET Informationen zum Server Eingabe: Tenant_ID, Server_ID Ausgabe: Details zum Server { "server": { "created": "2012-08-20T21:11:09Z", "flavor": { "id": "1", ... } ... Jörn Esdohr | Dortmund, Oktober 2012
Beispiel: API für Server-Instanz (3) v2/{tenant_id}/servers/{server_id} PUT Änderung von Benutzername, Passwort Eingabe: Tenant_ID, Server_ID, neues Passwort (in JSON / XML) keine Ausgabe { "changePassword" : {"adminPass" : "supersecret" } } Jörn Esdohr | Dortmund, Oktober 2012
Beispiel: API für Server-Instanz (4) v2/{tenant_id}/servers/{server_id} DELETE Terminiert Server Eingabe: Tenant_ID, Server_ID keine Ausgabe Jörn Esdohr | Dortmund, Oktober 2012
Weitere REST APIs v2/{tenant_id}/servers/{server_id}/action v2/images/ v2/images/{image_id} v2/flavors v2/flavors/{flavor_id} v2/{tenant_id} v2/{tenant_id}/os-quota-sets/{tenant_id} … Jörn Esdohr | Dortmund, Oktober 2012
Methoden zur Kommunikation mit OpenStack HTTP Requests (z.B. mit cURL) Python Client API (Objekt-orientierter Ansatz) Command Line Interface (CLI) Horizon Dashboard Jörn Esdohr | Dortmund, Oktober 2012
Beispiel: Anforderung eines Tokens (cURL) (1) REST URI: http://keystone.site.com:5000/v2.0/token cURL Befehl 1 $ curl -d '{"auth":{ 2 "passwordCredentials": { 3 "username": "admin", 4 "password": "1234„ 5 } 6 } 7 }' 8 -H "Content-type: application/json“ 1 $ curl -d '{"auth":{ 2 "passwordCredentials": { 3 "username": "admin", 4 "password": "1234„ 5 } 6 } 7 }' 1 $ curl 1 $ curl -d '{"auth":{ 2 "passwordCredentials": { 3 "username": "admin", 4 "password": "1234„ 5 } 6 } 7 }' 8 -H "Content-type: application/json“ 9 http://keystone.site.com:5000/v2.0/token Jörn Esdohr | Dortmund, Oktober 2012
Beispiel: Anforderung eines Tokens (cURL) (2) Server Antwort in JSON { "access" : { "token" : { "expires" : "2012-10-07T18:00:37Z", "id" : "d63f99ac17024f089155f09bfb684202" }, "user" : { ... } } Jörn Esdohr | Dortmund, Oktober 2012
Beispiel: Anforderung eines Tokens (CLI) Kommandozeilen-Befehl über das Python Keystone Client API $ keystone token-get --os-username admin --os-password 1234 Ausgabe +-----------+----------------------------------+ | Property | Value | | expires | 2012-10-07T18:18:40Z | | id | 495895f70fb446d5af15bf23a967fbbb | | tenant_id | c307ba786f4346a4a905191548b5d96f | | user_id | cb2c203c85a642acac7c29cc126b0c5b | Jörn Esdohr | Dortmund, Oktober 2012
OpenStack API Übersicht der Ressourcen Nova: Server, Flavors, Images, Floating IPs, Keypairs, Security Groups, DNS Einträge Quantum: Netzwerke, Subnetzwerke, Netzwerk-Ports Glance: Images Keystone: User, Credentials, Rollen, Tenants, Tokens, Endpoints Cinder: Volumes Swift: Objekte, Container, Accounts Eine Idee aller Schnittstellen { GET, PUT, DELETE, POST } x { Parameter } x Ressourcen Jörn Esdohr | Dortmund, Oktober 2012
Zusammenfassung OpenStack als IaaS mit 7 Kernkomponenten Nova (Compute), Glance (Image), Swift (Object Storage), Quantum (Network), Keystone (Identity), Cinder (Block Storage), Horizon (Dashboard) Client-Server-Interaktion über das OpenStack REST API Struktur von Anfragen Verschiedene Methoden (cURL, CLI, Python Client) Übersicht der Schnittstellen Jörn Esdohr | Dortmund, Oktober 2012