Cloud-Management mit OpenStack

OpenStack ist eine Open-Source-Software zum Betrieb einer Cloud in Art der Amazon Web Services EC2 und S3.

In Pocket speichern vorlesen Druckansicht 6 Kommentare lesen
Lesezeit: 11 Min.
Von
  • Thomas Kärgel
  • André Nähring
  • Sebastian Zielenski
Inhaltsverzeichnis

Erschienen in c't 22/12 anlässlich der Veröffentlichung von OpenStack 2012.2 Folsom. Die aktuelle Version 2013.1 Grizzly brachte keine grundlegenden Änderungen an den Konzepten und der Architektur von OpenStack.

Nach der Definition des National Institute of Standards and Technology (NIST) entspricht OpenStack der Service-Modell Infrastructure as a Service (IaaS): Eine IaaS-Cloud stellt Anwendern Rechen- und Speicherressourcen in Form virtueller Maschinen bereit, die sich mit beliebiger Software und beliebigen Betriebssystemen nutzen lassen. Die NIST-Definition kennt zwei weitere Service-Modelle: Platform as a Service (PaaS) stellt eine Umgebung für Anwendungen bereit, die der Nutzer mit plattformspezifischen Mitteln selbst entwickelt hat; Beispiele dafür sind Heroku und die Google App Engine. Software as a Service (SaaS) bezeichnet die Bereitstellung fertiger Anwendungen aus der Cloud, beispielsweise Salesforce oder die Office-Suite Zoho.

Der Einsatz von IaaS-Lösungen wie OpenStack lohnt vor allem dann, wenn mehrere Instanzen einer virtuellen Maschine kurzfristig bereitgestellt werden sollen. Neue virtuelle Maschinen lassen sich in OpenStack auf der Grundlage sogenannter Flavors schnell erstellen. Die Flavors legen die Hardware-Eigenschaften der virtuellen Maschine wie die Anzahl der virtuellen CPUs und Festplatten, die RAM- und Festplattengröße sowie die Netzwerkkonfiguration fest.

Beim Anlegen einer neuen VM protokolliert OpenStack alle Aktionen in einer Datenbank, was vielfältige Auswertungsmöglichkeiten eröffnet: So kann man zum Beispiel die verbrauchte CPU-Zeit oder den genutzten Speicherplatz als Grundlage für die Abrechnung einzelner virtueller Maschinen ermitteln. Angesichts seiner Fokussierung auf die einfache Verwaltung vieler virtueller Maschinen ist es nicht verwunderlich, dass OpenStack in den Fokus großer Unternehmen gerückt ist: So hat die deutsche Telekom bereits auf der CeBIT 2012 angekündigt, ihren mittlerweile verfügbaren Business Marketplace für Geschäftsanwendungen aus der Cloud mit OpenStack umzusetzen.

Die OpenStack-Community sieht ihr Projekt in direkter Konkurrenz zu Amazons Web Services – und bemüht sich um weitgehende Kompatibilität bei den Schnittstellen nach außen. OpenStack-Unterstützer wie Dell und HP haben ein Interesse daran, einen Gegenpol zu Amazons Diensten anzubieten: Der Trend in Rechenzentren geht weg von physischer Hardware hin zu Ressourcen in der Cloud. Für OpenStack spricht dabei die Kombination aus Skalierbarkeit und Quelloffenheit: Die Software eignet sich für eine kleine private Cloud aus wenigen Servern ebenso wie für eine Public Cloud auf Amazon-Niveau. Da OpenStack als Open Source unter der Apache-2-Lizenz verfügbar ist, macht man sich nicht von proprietären Lösungen und Anbietern abhängig. Eine Studie des Bundeswirtschaftsministeriums zur Standardisierung von Cloud Computing nennt OpenStack als Referenzarchitektur zum Aufbau von Cloud-Infrastrukturen und stuft Reife und Durchsetzungsfähigkeit des Projekts als hoch ein.

Die einzelnen Kernkomponenten von OpenStack sind aufeinander abgestimmt, lassen sich jedoch – mit Ausnahme von Quantum und Cinder – auch einzeln nutzen.

Die OpenStack-Version 6 erschien im September 2012 und trägt den Namen Folsom. Sie besteht aus sieben aufeinander abgestimmten Kernkomponenten, die sich aber auch einzeln verwenden lassen.

Für die Verwaltung der CPU- , Arbeitsspeicher-, Netzwerk- und Festplattenressourcen und das Starten der virtuellen Maschinen ist OpenStack Compute (Codename Nova) zuständig. Die Entscheidung, auf welchem Rechenknoten eine virtuelle Maschine gestartet wird, trifft der Nova-Scheduler je nach Auslastung der Rechner. Nova-API stellte eine einheitliche Programmierschnittstelle zur Verfügung, die so konfiguriert werden kann, dass sie kompatibel zu Amazon EC2 ist.

Nova arbeitet mit fast allen Hypervisoren zusammen: KVM, VMware ESX, Xen, Citrix XenServer, Linux Container (LXC), Qemu, User Mode Linux (UML). Die Unterstützung für Hyper-V war zeitweise nur noch als Plug-in verfügbar, da Microsoft den Programmcode nicht mehr pflegte. Mittlerweile will das Unternehmen die Hyper-V-Integration in OpenStack jedoch weiterentwickeln.

Hinter dem Codenamen Swift verbirgt sich die Object-Storage-Komponente zur verteilten, redundanten Speicherung von Daten aller Art im Cluster, ähnlich Amazons S3. Die Organisation der Daten in Swift erfolgt in Containern und Objekten. Container stellen eine Art Verzeichnis dar, können aber keine weiteren Container beinhalten, sondern nur Objekte. Die Organisation und Strukturierung der Daten-Objekte innerhalb eines Containers erfolgt mit Hilfe frei definierbarer Metadatenfelder.

Swift kann für jegliche Art von Daten genutzt werden, egal ob Musikdateien oder Festplatten-Images virtueller Maschinen. Dabei werden die Dateien mit Hilfe eines eigenen API und eines speziellen Clients verwaltet; eine direkte Nutzung von Swift als mountbares Blockdevice ist nicht möglich.

Die Zuordnung von Platten-Images zu virtuellen Maschinen erfolgt über den Image-Service Glance. OpenStack unterstützt die meisten Image-Formate wie Raw, VHD (VirtualPC), VDI (VirtualBox), das Qemu-Format qcow2, VMDK (VMware) und das Open-Virtualization-Format OVF – nicht zu vergessen natürlich auch Amazons AMI-Formate. Das Glance-API ist dabei für die Auslieferung und Speicherung der Images zuständig; Glance-Registry versieht sie mit beliebigen Metadaten, die in einer Datenbank wie MySQL oder SQLite gespeichert werden. Einige Metadaten, darunter Name, Größe, Checksumme und Erstellungsdatum, sind bereits fest vorkonfiguriert. Die eigentlichen Images werden normalerweise in Swift abgelegt, es lassen sich jedoch auch andere Speicher-Backends wie Amazons S3, einfache HTTP-Server oder eine normale Festplatte verwenden.

Horizon in Aktion: Neue Instanzen lassen sich einfach per Mausklick anlegen.

Das OpenStack-Dashboard gehört seit der fünften OpenStack-Version Essex zu den Kernprojekten. Horizon, so sein Codename, stellt ein komfortables Web-Interface zur zentralen Konfiguration und Verwaltung der OpenStack-Komponenten zur Verfügung. Die Entwickler legen dabei viel Wert auf ein einheitliches Look and Feel der gesamten Oberfläche. Horizon bietet vielfältige Möglichkeiten, um speziell an den Einsatzzweck angepasste Konsolen zu erzeugen. Unter der Haube kommt dabei das Python-Web-Framework Django zum Einsatz.

Das Identity-Projekt Keystone dient der Benutzerverwaltung und Authentifizierung. Keystone unterscheidet dabei projektbezogene und globale Rollen. Globale Rollen sind beispielsweise „Cloud Administrator“ und „IT Security“, die auf der Ebene des Cloud-Betreibers agieren. Innerhalb einer OpenStack-Cloud können mehrere unabhängige Projekte (Tenants) laufen, deren verfügbare Ressourcen über Quotas auf CPUs, Arbeitsspeicher, die Zahl der öffentlichen IPs oder der verwendbaren Images limitiert werden können. Auf Tenant-Ebene lassen sich weitere Rollen vergeben, wobei der Cloud-Betreiber vorgibt, welche Rechte einer Rolle zugewiesen werden können. Unterschiedliche VLANs stellen sicher, dass sich die verschiedenen Projekte nicht in die Quere kommen.