360 likes | 693 Views
OpenStack. 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, ….
E N D
Was ist OpenStack? • Open Source Cloud Plattform als IaaS(Infrastructure as a Service) Wer steckt hinter OpenStack? • 2010, Rackspace und Nasa startenOpenStack Projekt • OpenStack Foundation unterstützt von über 140 Unternehmen • z.B. Deutsche Telekom, AT&T, HP, IBM, …
Teil 1 Architektur von OpenStack Teil 2 Client-Server-Interaktion
Teil 1Architektur von OpenStack OpenStack verteilt Cloud Funktionen auf7 einzelne Dienste (Core Projects).
Nova – Compute Server-Instanzen Virtuelle Maschinen • „Flavor“Hardware-Konfiguration (Speicher, RAM, CPU Priorität) • ImageAbbildungen von Server-Installationen(Fedora, Ubuntu, …) Nova verwaltet Server-Instanzenund bietet Schnittstellen für Cloud Anwendungen.
Nova – Compute Tenants(Projekte) Ressourcen-Container definiert durch Quota • Server-Instanzen • vCPU • IP Adressen • virtuelle Datenträger (Volumes)
Glance – Image Service Verwaltung von Server Images
Swift – Object Storage Verwaltung statischer Web-Inhalte(Bilder, Media-Dateien, Images, …)
Cinder – Block Storage Verwaltung virtueller Datenträger (Volumes). Daten überleben Server-Termination.
Quantum – Network Service Quantum erlaubt Konstruktion komplexer Netzwerk-Topologien.
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)
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)
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
Beispiel: API für Server-Instanzen (1) Aufbau der REST URI
Beispiel: API für Server-Instanzen (2) v2/{tenant_id}/servers/{server_id} GETInformationen zum Server Eingabe: Tenant_ID, Server_ID Ausgabe: Details zum Server { "server": { "created": "2012-08-20T21:11:09Z", "flavor": { "id": "1", ... } ... }
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) keineAusgabe { "changePassword" : {"adminPass" : "supersecret" } }
Beispiel: API für Server-Instanz (4) v2/{tenant_id}/servers/{server_id} DELETETerminiert Server Eingabe: Tenant_ID, Server_ID keine Ausgabe
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} …
Methoden zur Kommunikation mit OpenStack • HTTP Requests (z.B. mit cURL) • Python Client API (Objekt-orientierter Ansatz) • Command Line Interface (CLI) • Horizon Dashboard
Beispiel: Anforderung eines Tokens (cURL) (1) REST URI: http://keystone.site.com:5000/v2.0/token cURLBefehl 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 1 $ curl 1 $ curl-d '{"auth":{ 2 "passwordCredentials": { 3 "username": "admin", 4 "password": "1234„ 5 } 6 } 7}' 1 $ curl-d '{"auth":{ 2 "passwordCredentials": { 3 "username": "admin", 4 "password": "1234„ 5 } 6 } 7}' 8 -H "Content-type: application/json“
Beispiel: Anforderung eines Tokens (cURL) (2) Server Antwort in JSON { "access" : { "token" : { "expires" : "2012-10-07T18:00:37Z", "id" : "d63f99ac17024f089155f09bfb684202" }, "user" : { ... } } }
Beispiel: Anforderung eines Tokens (CLI) Kommandozeilen-Befehl über das Python KeystoneClient API token-get keystone --os-usernameadmin $ --os-password 1234 Ausgabe +-----------+----------------------------------+ | Property | Value | +-----------+----------------------------------+ | expires | 2012-10-07T18:18:40Z | | id | 495895f70fb446d5af15bf23a967fbbb | | tenant_id | c307ba786f4346a4a905191548b5d96f | | user_id | cb2c203c85a642acac7c29cc126b0c5b | +-----------+----------------------------------+
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
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