In unserem ersten OpenStack Artikel haben wir erklärt, was OpenStack ist und schon einige der zentralen Komponenten der Open Source Cloud-Computing-Plattform genannt. In diesem Artikel wollen wir uns nun näher mit der Funktion und dem Aufbau der zentralen IaaS-Module befassen und erläutern, wie diese zusammen arbeiten.
Wie funktioniert OpenStack?
OpenStack bietet eine flexible Lösung, um Public und Private Clouds jeder Größe schnell implementieren und skalieren zu können. Dafür ist OpenStack in verschiedene Komponenten aufgeteilt, die einzelne Aufgaben lösen und abgestimmt ineinandergreifen. Jede Komponente deckt einen bestimmten Bereich einer IaaS-Umgebung ab. Die Integration wird durch Application Programming Interfaces (APIs) erreicht, die den Austausch zwischen den Komponenten ermöglichen. Dienste können so auch einfach durch andere mit ähnlichen Eigenschaften ersetzt werden, jedoch nur, wenn die Form der Kommunikation eingehalten wird.
[mk_image src=”/de/wp-content/uploads/2016/06/OpenStack_Infrastruktur_Aufbau.png” image_width=”900″ image_height=”478″ crop=”true” lightbox=”false” frame_style=”simple” target=”_self” caption_location=”inside-image” align=”left” caption=”© ScaleUp Technologies” margin_top=”25″ margin_bottom=”25″]
OpenStack hat keine proprietären Hardware- oder Software-Anforderungen. Es kann jedoch nicht direkt auf der Hardware installiert werden. Es benötigt ein Betriebssystem, welches Virtualisierung im Hintergrund unterstützt. Glücklicherweise wird OpenStack von diversen Betriebssystemen und Herstellern unterstützt.
OpenStack kompatible Linux Distributionen:
- Ubuntu
- Redhat Enterprise Linux
- SuSE Linux
- CentOS Linux
- Fedora
Unterstützte Virtualisierung:
- KVM (vollständige Unterstützung)
- XEN
- Microsoft Hyper-V
- VMware
- u.a. (ebenfalls: baremetal, Docker, LXC)
OpenStack kann für Tests auch auf einem einzelnen PC/Server installiert werden (sog. Single-Node-Setup). Das ermöglicht einfaches Evaluieren und Testen erster Setups.
Zentrale Komponenten von OpenStack sind:
„Horizon”
(Dashboard) – Horizon bietet ein modular aufgebautes, web-basiertes User Interface für Endnutzer sowie eine Administrator-Schnittstelle zu anderen Diensten. Über Horizon können die meisten Cloud Operations durchgeführt werden wie das Anlegen von Instanzen, die Zuordnung von IP-Adressen und die Vergabe von Berechtigungen.
“Keystone”
(Identity) – Keystone ist eine zentrale Komponente für die Authentifizierung und Autorisierung innerhalb aller OpenStack Dienste. Keystone verwaltet API-Anfragen und bietet konfigurierbare Katalog-, Policy, Token und Identitäts-Dienste für eine bestimmte Cloud an. Nutzer können bestimmten Gruppen, aber auch Tenants, abgegrenzten Projekten, zugeordnet werden und individuelle Rechte erhalten. Auch auf Gruppen-Ebene können Rechte vergeben werden.
“Nova”
(Compute) – Nova ist das Compute-Projekt in OpenStack und fast sämtliche Dienste zusammen, die für die Verwaltung von Cloud-Instanzen zuständig sind. Zu den Diensten gehören zum einen Organisationsdienste, die Aufgaben abarbeiten und neue Instanzen auf vorhandene Systeme verteilen und zum anderen Dienste und Schnittstellen zur Virtualisierung, welche die Kommunikation mit dem Hypervisor übernehmen. Nova gehört zu den verbreitetsten und aufgrund seines großen Funktionsumfangs zu den komplexeren OpenStack Projekten.
“Glance”
(Images) – Glance stellt einen Katalog und einen Aufbewahrungsort für Disk-/ Server-Images und deren Metadaten bereit. Ein Image ist in Openstack die Basis für eine virtuelle Instanz. Es enthält ein Abbild eines vollständig installierten Betriebssystems. Die Images werden im objektbasierten Speicher „Swift“ oder anderen Speicherorten (Ceph rdb, Amazon S3 etc.) gespeichert. Wird über den Compute Dienst Nova eine neue Instanz gestartet, greift dieser über die Glance-API auf das verfügbare Basis-Image zu und kopiert es auf den auszuführenden Compute Node.
“Neutron”
(Networks) – Neutron bietet virtuelle Netzwerk-Verbindungen als Service zwischen Geräten, die von anderen OpenStack-Diensten verwaltet werden – hauptsächlich virtuelle Maschinen von Nova. Neutron ermöglicht es Nutzern, eigene Netzwerke zu erstellen, deren Aufbau zu bearbeiten und diese mit ausgewählten Geräten (z. B. Routern oder Netzwerk-Interfaces) zu verknüpfen. Neutron hat eine sehr offene Struktur und unterstützt viele bekannte „software defined networking“ (SDN) Lieferanten und Technologien zur Netzwerksteuerung.
“Cinder”
(Block Storage) – Cinder bietet persistenten Speicher in Form von Volumes für in der Cloud gehostete virtuelle Maschinen (VMs). Volumes können einer virtuellen Instanz beim Starten und im laufenden Betrieb zugewiesen werden. Durch den zusätzlichen Speicher kann die Speicherleistung und -geschwindigkeit erhöht werden. Speichervolumen und Status-Informationen werden in einer Datenbank gespeichert.
“Swift”
(Object Storage) – Swift bietet verteilten, objektbasierten Speicher. Was bedeutet das bzw. was ist ein Objekt? Ein Objekt ist eine Speichereinheit, die Daten enthält, die nach dem Erstellen gelesen oder gelöscht werden können. Eine Änderung der Daten ist jedoch nicht mehr möglich. Die Objekte werden auch nicht wie man es von normal verwendeten Dateien kennt, in einer Hierarchie geordnet. Stattdessen existieren alle Objekte nebeneinander auf derselben Ebene in einem horizontalen Adressraum (Storage Pool). Sie werden dabei durch ihre erweiterten Metadaten charakterisiert. Objekt Storage ist also kein Dateisystem in dem Sinne, sondern viel mehr ein Container, der Dateien speichern und zu einem späteren Zeitpunkt via einer eindeutigen Kennzeichnung (Unique Identifier) abrufen kann.
Weitere erwähnenswerte Projekte:
Ceilometer (Telemetry/ Metering & Monitoring)
Heat (Orchestration)
Trove (Datenbank as a Service)
Ironic (Bare Metal Provisioning)
Um als vollständiges Cloud-Betriebssystem zu funktionieren werden für eine OpenStack-Lösung also eine Reihe von Infrastrukur-Managementkomponenten benötigt. Diese werden aufbauend auf der Operativen Infrastructure über das OpenStack Dashboard Horizon und OpenStack Cloud APIs durch weitere Clients und Support-Funktionen eingebunden (z.B. Ceilometer für das Metering und Billing). Neben den von der OpenStack-Community aktiv entwickelten Projekten, gibt es weitere Komponenten wie MySQL / MariaDB und den Messaging Service RabbitMQ, die zwar kein Teil von OpenStack selbst sind, die aber für den Betrieb einer OpenStack-Umgebung notwendig oder sinnvoll sein können.