Vorheriger Artikel Nächster Artikel

Cloud-Infrastruktur für Entwickler: Mit Open-Source-Software lokale Server zur privaten Cloud machen

Aus dem
t3n Magazin Nr. 18

12/2009 - 02/2010

Die Nutzung einer lokalen privaten Cloud-Infrastruktur ist in der Entwicklergemeinde noch nicht weit verbreitet. Dabei bietet sie viele Vorteile und sorgt dafür, dass sich bestehende optimal und flexibel nutzen lässt. Mit dem Open-Source-Projekt Eucalyptus steht zudem eine Lösung bereit, die direkt in 9.10 integriert ist und den Start so erleichtert.

Mit der Open-Source-Software Eucalyptus lässt sich eine lokale Cloud-Infrastruktur aufbauen, die zudem noch kompatibel zu Amazons Cloud-Lösung ist.
Mit der Open-Source-Software Eucalyptus lässt sich eine lokale Cloud-Infrastruktur aufbauen, die zudem noch kompatibel zu Amazons Cloud-Lösung ist.

Um eine Cloud-Infrastruktur zu nutzen ist es hilfreich, einige neue Paradigmen zu verstehen. Dieser Artikel gibt Hinweise, wie diese neue Infrastruktur genutzt werden kann, zeigt was von ihr zu erwarten ist und beschreibt erste Schritte mit der in Ubuntu integrierten Cloud-Lösung Eucalyptus.

Der Weg zur privaten Cloud

In den letzten Jahren haben gelernt, gemeinsam an Projekten zu arbeiten. Modulare und prozedurale Programmierung hat sich zur objektorientierten Programmierung weiterentwickelt. Aus der Weitergabe von Dateien wurde die Versionskontrolle, darauf folgte die verteilte Versionskontrolle. All das hat dazu beigetragen, dass Entwickler heute ihre Ergebnisse besser mit anderen teilen, an größeren Projekten mitarbeiten und ordentliche Prozesse definieren können. Dennoch gibt es eine Ausnahme von dieser Entwicklung: Der Kampf um die Hardware.

Lokales Computing kann hier Abhilfe schaffen, indem es eine zusätzliche Abstraktionsschicht einführt: Das Maschinen-Image. Es verhält sich dabei wie ein eigenständiger Server, inklusive Betriebssystem, Software und allem was dazu gehört. Jeder Nutzer einer Cloud-Infrastruktur kann sein eigenes Maschinen-Image vorbereiten und so oft instantiieren, wie die Infrastruktur es erlaubt. Da die Cloud-Infrastruktur darauf ausgelegt ist, mehre Benutzer zu haben, können verschiedene Maschinen-Images von verschiedenen Nutzern zeitgleich betrieben werden. Jedes Image läuft in einer eigenen virtuellen Umgebung, vom Netzwerk bis zur Applikation sind alle Instanzen voneinander abgeschottet. Dadurch werden ungewollte Interaktionen zwischen den Instanzen verhindert. Wenn ein Benutzer der Infrastruktur bekannt ist, kann er Instanzen ohne großen Aufwand starten und stoppen. Ein und dieselbe Hardware-Infrastruktur kann dabei natürlich nicht nur von Entwicklern genutzt werden, sondern auch von anderen IT-Nutzern im Unternehmen, die Rechenleistung benötigen.

Cloud Computing mit Open Source

Die bekannteste und am meisten genutzte öffentliche Cloud-Infrastruktur ist ohne Zweifel Amazons Elastic Cloud Compute (EC2). Da es keine Standard-Cloud-API gibt, haben sich Open-Source-Projekte im Bereich Cloud Computing wie Nimbus [1], Open Nebula [2] und Eucalyptus [3] dazu entschlossen, die EC2-API als Referenz zu nutzen. Aus Benutzersicht hat diese API einige Eigenschaften, die überraschend sein können:

  • Instanzen sind nach einem Reboot nicht persistent.
  • Images sind die einzig persistente Form einer Maschine.
  • Administratoren definieren Basis-Architekturen für die Bereitstellung von Maschinen (32 oder 64 Bit, RAM, ...) und Nutzer entscheiden, welche Architektur sie benötigen.
  • Peristenter Speicherplatz ist über alternative Technologien erhältlich.

Flexibilität durch Modifikation

Nutzer einer Cloud-Infrastruktur können sich verschiedene virtuelle Maschinen (also Maschinen-Images) vorbereiten, die sie regelmäßig nutzen. Bestehende Maschinen-Images können dazu modifiziert und als neues Maschinen-Image gespeichert werden. Dieser Prozess nennt sich re-bundling.

Es gibt allerdings noch einen einfacheren Weg, um individuelle Anpassungen vorzunehmen. Während ein Maschinen-Image gestartet wird, kann man ihm optional Daten übergeben, die dann während der Initialisierung verwendet werden. Dadurch ist es möglich, Maschinen zu verändern, ohne das Image zu re-bundeln. Nutzer verwenden ein Basis-Image (zum Beispiel Ubuntu Server Edition) und rufen ein Skript auf, dass die Instanz anhand der übergebenen Daten anpasst. Ein gute Anlaufstelle für Maschinen-Images auf Basis von Ubuntu und Debian ist die Website alestic.com. Betreiber Eric Hammond stellt dort diverse vorkonfigurierte Images zum Download bereit.

Persistenz in der Cloud

Um persistenten Speicher zu erhalten, kann eine Instanz eine von zwei Service-Typen nutzen:

  • Simple Storage Service (S3): ein Datei-basierter Speicher, der dem http-Dienst sehr ähnlich ist
  • Elastic Block Storage (EBS): ein Block-basierter Speicher, der wie eine Festplatte formatiert und gemountet werden kann

Auch die Speicherung in einer Datenbank kann als Service in einer Cloud angeboten werden. Amazon stellt dazu beispielsweise SimpleDB zu Verfügung. Diese ist eine einfache Key-Value-basierte Datenbank, die allerdings nicht sehr häufig eingesetzt wird. Verbreiteter ist der Einsatz von bekannten Datenbanksystemen wie MySQL, PostgreSQL oder auch CouchDB.

Grundsätzlich kann man sagen, dass der Fokus beim Cloud Computing eher auf Widerstandsfähigkeit denn auf Fehlertoleranz liegt. Anstatt eine Architektur mit komplexen Failover-Szenarien zu entwicklen, sollte das Prinzip der Redundanz von schnell und günstig startbaren Instanzen im Vordergrund stehen – ein ähnliches Prinzip, wie es beim Konzept von RAID Systemen gegenüber einzelnen Festplatten zum Einsatz kommt.

Die Eucalyptus-Cloud

Wie bereits erwähnt, kann man sich mit Hilfe von frei verfügbarer Open-Source-Software eine komplette eigene Cloud-Infrastruktur aufbauen. Alle oben genannten Projekte nutzen die gleiche API, so dass sich das Verhalten der Clouds ähnelt. Das Projekt Eucalyptus bietet dabei den Vorteil, dass es unter dem Namen „Ubuntu Enterprise Cloud“ in aktuellen Ubuntu-Versionen (seit Version 9.04) bereits enthalten ist [4].

Die Eucalyptus-Architektur ist modular ausgelegt. Eine Cloud besteht aus fünf einfachen Elementen, die skaliert werden können:

  • Cloud Controller (CLC)
  • Walrus Storage Controller (WS3)
  • Elastic Block Storage Controller (EBS)
  • Cluster Controller (CC)
  • Node Controller (NC)

Jedes Element stellt einen unabhängigen Web Service dar, der per WDSL (Web Service Description Language) eine API definiert. Der Cloud Controller (CLC) ist das von außen sichtbare Element der Eucalyptus-Architektur. Hier ist das Interface angesiedelt, mit dem der Nutzer agiert. Der CLC übernimmt auch die Kommunikation mit den Cluster Controllern (CC) und ist verantwortlich für die Allokation neuer Instanzen.

In einer Eucalyptus-Cloud können die Node Controller (NC) komplett in einem privaten Netzwerk betrieben werden. Nur der Cloud Controller (CLC) und die Cluster Controller (CC) sollten über ein öffentliches Netzwerk erreichbar sein. Der S3-Service von Eucalytpus (Walrus) befindet sich auf der gleichen Ebene wie der CLC, der Elastic Block Storage (EBS) auf der gleichen Ebene wie die CC.
In einer Eucalyptus-Cloud können die Node Controller (NC) komplett in einem privaten Netzwerk betrieben werden. Nur der Cloud Controller (CLC) und die Cluster Controller (CC) sollten über ein öffentliches Netzwerk erreichbar sein. Der S3-Service von Eucalytpus (Walrus) befindet sich auf der gleichen Ebene wie der CLC, der Elastic Block Storage (EBS) auf der gleichen Ebene wie die CC.

Der Walrus Storage Controller (WS3) und der Elastic Block Storage Controller (EBS) besitzen die gleiche Funktionalität wie diese Speichermethoden innerhalb von Amazon EC2. Der WS3 kann auf jeder beliebigen Maschine laufen, wird aber per Default auf dem CLC installiert. EBS läuft auf der gleiche Maschine wie der Cluster Controller und wird automatisch konfiguriert, wenn der Cluster Controller installiert wird.

Der Cluster Controller (CC) ist die Verbindung zwischen Node Controller (NC) und Cloud Controller. Daher braucht der CC einen Netzwerkpfad zum CLC und einen Netzwerkpfad zum NC. Der CC entscheidet, welcher NC eine Maschinen-Instanz laufen lassen wird. Weiterhin ist der CC zuständig für das Bereitstellen und Routen von virtuellen Netzwerken zu den Maschinen-Instanzen. In einfachen Deployments laufen CC und CLC auf der gleichen Maschine.

Die Node-Controller-Software läuft auf der Maschine, auf der die Maschinen-Instanzen laufen. Die Rolle des NC ist es, die Verbindung zwischen dem Betriebssystem und dem Hypervisor auf der Maschine herzustellen. Der NC wird vom Cluster Controller aus gesteuert.

Der Einsatz von Ubuntu Enterprise Cloud (UEC) kann unter Ubuntu Server Edition 9.10 direkt aus dem Installationsmenü erfolgen. Das erleichtert den Einstieg zum Testen und Ausprobieren. Eine ausführliche Anleitung beschreibt zudem Schritt für Schritt, wie der Einsteig gelingt [5].

Fazit

Die Verbreitung von Cloud Computing wird in den nächsten Monaten und Jahren weiter stark zunehmen. Die Vorteile in den Bereichen Skalierbarkeit und Flexibilität sind einfach zu überzeugend, als dass man sich ihnen verschließen könnte. Mit Open-Source-Projekten wie Eucalyptus & Co. werden Entwickler und IT-Abteilungen jetzt in die Lage versetzt, sich ihre eigene Cloud-Infrastruktur aufzusetzen – die zudem noch kompatibel zum Cloud-Universum von Amazon ist. Bestehende und neue Hardware lässt sich so optimal auslasten und Entwickler bekommen eine Plattform geboten, mit der sie agiler entwickeln können.

Newsletter

Bleibe immer up-to-date. Sichere dir deinen Wissensvorsprung!

Vorheriger Artikel Zurück zur Startseite Nächster Artikel
Keine Antwort
Deine Meinung

Bitte melde dich an!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Aktuelles aus dem Bereich Cloud-Computing
Protonet öffnet Soul-Plattform für Drittanbieter und will das Internet der Dinge erobern
Protonet öffnet Soul-Plattform für Drittanbieter und will das Internet der Dinge erobern

Protonet öffnet die Soul-Plattform mit Version 3.0 auch für Business-Apps von Drittanbietern. Außerdem will man eine eigene Smart-Home-Plattform schaffen. Mit Soul Live gibt es darüber hinaus … » weiterlesen

Die „Hybrid Cloud“ von HPE und Microsoft: Wie Unternehmen von der „bevorzugten Partnerschaft“ profitieren sollen
Die „Hybrid Cloud“ von HPE und Microsoft: Wie Unternehmen von der „bevorzugten Partnerschaft“ profitieren sollen

Erstmals nach der Aufspaltung hat Hewlett Packard Enterprise seine Strategie vorgestellt. In deren Mittelpunkt steht die „Hybrid Cloud“, bei der sich HPE auf Microsoft konzentriert. » weiterlesen

Preiskampf mit AWS: Microsoft senkt Preise für Azure-VMs um bis zu 17 Prozent
Preiskampf mit AWS: Microsoft senkt Preise für Azure-VMs um bis zu 17 Prozent

Als Reaktion auf die Preissenkung bei den Amazon Web Services (AWS) zu Jahresbeginn senkt jetzt auch Microsoft die Preise. Bei der D-Reihe der Virtuellen Maschinen (VM) in der Azure-Cloud geht es um … » weiterlesen

Alle Hefte Jetzt abonnieren – für nur 35 €

Kennst Du schon unser t3n Magazin?