Arbeiten in der eigenen Wolke

Workshop - Private Cloud mit Eucalyptus

19.08.2011 von Thomas Hümmler
Eucalyptus ist eine Open-Source-Nachimplementierung des Infrastrukturdienstes von Amazon EC2 für Cloud Computing. Wie man eine eigene Cloud mit Eucalyptus unter dem aktuellen Ubuntu-Betriebssystem aufbaut, zeigt dieser Workshop.

Cloud Computing stellt IT-Infrastrukturen wie Datenspeicher, Netzwerk- und Rechenkapazitäten dynamisch über ein Netzwerk zur Verfügung. Weil der Nutzer diese Infrastruktur nicht direkt sieht und sie für ihn undurchsichtig erscheint, redet der Experte von einer "Wolke". Darin findet man aber nicht nur die Infrastruktur - gemeinhin als Infrastructure-as-a-Service (IaaS) bezeichnet -, sondern auch Software, die von einem oder mehreren Anbietern als Dienst gemietet wird (Software-as-a-Service, SaaS). Und auch Entwickler treibt es in die Wolken: Sie nutzen diese als Platform-as-a-Service (PaaS) und schreiben Anwendungen, die dann von einem PaaS-Provider beliebigen Nutzern via Internet zur Verfügung gestellt werden.

Sinn und Zweck von Cloud Computing ist es unter anderem, zu Spitzenlastzeiten ein Vielfaches der Nutzeranzahl bedienen zu können. Das kann zum Beispiel im Weihnachtsgeschäft erforderlich sein, aber ebenso, wenn etwa nach einer Fernsehmeldung die eigene Homepage plötzlich massiv frequentiert wird. Der Internethändler Amazon etwa gibt an, dass die Spitzenlast im Jahr 2006 zehnmal höher war als die Grundlast im Tagesgeschäft. Das war der Anlass für das Unternehmen, aus der Architektur und den Diensten ein eigenes Produkt zu machen, das inzwischen auch nach außen angeboten wird: Das Produkt ist als Speicherdienst S3 und als Elastic Compute Cloud, kurz: EC2, bekannt.

Eucalyptus Cloud
Cloud Computing mit Eucalyptus
Überblick: Das sind laut Canonical die Vorteile für Cloud-Computing mit Ubuntu.
Cloud Computing mit Eucalyptus
Hilfen: Wie Sie die Eucalyptus-Cloud auf nur einem Rechner installieren können, steht auf der entsprechenden Ubuntu-Seite.
Cloud Computing mit Eucalyptus
Ziemlich lang: Mit diesem Befehl übertragen Sie den öffentlichen SSH-Schlüssel des Benutzers eucalyptus auf den Node-Rechner.
Cloud Computing mit Eucalyptus
Start in die Wolke: Der Anmeldebildschirm der Ubuntu Enterprise Cloud.
Cloud Computing mit Eucalyptus
Erstkonfiguration: Der Administrator muss zunächst ein neues Passwort und eine E-Mail-Adresse eintragen.
Cloud Computing mit Eucalyptus
Geschafft: Die Cloud kann über ein Web-Frontend konfiguriert werden.

Der Zugriff auf die Wolke erfolgt über das Netzwerk, meist das Internet. Neben öffentlichen wie EC2 kann es aber auch private Wolken geben, die über ein firmeninternes Intranet bereitgestellt werden. Sogar persönliche Wolken auf Laptops findet man inzwischen in der IT-Landschaft. Möglich machen das vor allem Open-Source-Systeme wie Eucalyptus, Open Nebula und Openstack.

Eucalyptus steht für Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems. Die Open-Source-Infrastruktur ist kompatibel zu Amazons Speicherdienst S3 und zu EC2. Aktuell ist die Version 2.0.3 von Eucalyptus Open Source; in Ubuntu 11.04 ist noch die Version 2.0.2 enthalten. Neue Eucalyptus-Versionen erscheinen jeweils im März und im August. Es gibt auch eine kommerzielle Version: Die Eucalyptus Enterprise Edition (EE) basiert auf Eucalyptus Open Source. Sie wird seit der Version 1.5.2 von Eucalyptus Systems vertrieben, die das ursprünglich an der kalifornischen Universität in Santa Barbara entwickelte Forschungsprojekt übernommen hat.

In unserem Workshop zeigen wir Ihnen, wie Sie unter Ubuntu mithilfe der Open-Source-Cloud-Plattform Eucalyptus eine eigene Cloud aufbauen können.

Aufbau einer Eucalyptus-Wolke

Eine Eucalyptus-Cloud besteht aus fünf Komponenten: Der Cloud-Controller (CLC) und der Speicherdienst Walrus stehen in der obersten Ebene und sind in jeder Cloud-Installation einmal enthalten. Der Cloud-Controller selbst ist ein Java-Programm mit EC2-kompatiblen SOAP- und Abfrageschnittstellen sowie einem Web-Interface. Er übernimmt die Kontrolle über die gesamte Cloud. Walrus ist ebenfalls in Java geschrieben.

Der Walrus-Server speichert die sogenannten Buckets global; Buckets sind Behälter, in denen Objekte einer Cloud gespeichert werden. Um eine Anwendung in der Cloud rechnen zu lassen, müssen drei Buckets angelegt und beim Cloud-Controller registriert werden. Mithilfe des Cloud-Controllers wird eine Instanz davon erstellt und von Eucalyptus in der Cloud verteilt; ferner wird eine IP-Adresse vergeben, über die man auf diese Instanz zugreifen kann.

Beide Komponenten - der CLC und Walrus - können Ressourcen aus verschiedenen Clustern vereinen. Jeder Cluster oder Rechnerverbund benötigt zudem einen Cluster-Controller (CC) für die Netzwerkkontrolle und einen Storage-Controller (SC). Diese beiden Komponenten sind typischerweise im Hauptknoten eines Clusters untergebracht. Alle vier Komponenten bilden zusammen das sogenannte Frontend. Und schließlich braucht jeder Knotenpunkt mit einem Hypervisor einen Node-Controller (NC), um den Hypervisor zu kontrollieren. Der Cluster-Controller und der Node-Controller sind in der Programmiersprache C geschrieben und werden als Webservices innerhalb von Apache bereitgestellt.

Überblick: Das sind laut Canonical die Vorteile für Cloud-Computing mit Ubuntu.

Eucalyptus können Sie entweder aus den Quellen installieren, die Sie auf der Projektseite finden. Es gibt auch für einige Linux-Versionen (CentOS 5, Debian, Fedora 12, Opensuse 11) vorgefertigte Pakete. Außerdem wird Eucalyptus in einigen Distributionen mitgeliefert beziehungsweise im Repository vorgehalten. Das hat den Vorteil, dass es problemlos über die jeweilige Paketverwaltung installiert und aktualisiert werden kann.

In Debian sind aktuell die Pakete der Eucalyptus-Version 1.6.2 integriert. Das bedeutet aber noch nicht, dass sie mit der nächsten stabilen Debian-Version ausgeliefert werden. Denn derzeit befinden sie sich noch im sid-Zweig (still in development) der Distribution.

Den größten Teil der Entwicklungsarbeit im Debian-Bereich hat übrigens Ubuntu gestemmt. Dort steht die Cloud-Infrastruktur bereits seit der Version 1.5 in den Repositories. Aus gutem Grund: Eucalyptus bildet derzeit den Kern der Ubuntu Enterprise Cloud, eines der Geschäftsfelder von Ubuntu-Distributor Canonical.

Vorarbeiten für die Ubuntu-Installation

Um Eucalyptus unter Ubuntu zu installieren, benötigen Sie mindestens zwei Maschinen: die eine mit dem Frontend, die andere für den Node-Controller. Der Frontend-Rechner sollte folgende Voraussetzungen erfüllen (in Klammern die Empfehlungen):

Der Rechner mit dem Node-Controller muss leistungsstärker sein, denn auf ihm laufen alle Instanzen. Auf diesem Rechner werden die virtuellen Maschinen installiert, die zuvor im Frontend heruntergeladen wurden.

Hilfen: Wie Sie die Eucalyptus-Cloud auf nur einem Rechner installieren können, steht auf der entsprechenden Ubuntu-Seite.

Anschließend sollten Sie die aktuelle Serverversion von Ubuntu herunterladen. Sie finden diese unter http://www.ubuntu.com/download/ubuntu/alternative-download als Torrent sowohl für i386 als auch für amd64. Nach dem Download brennen Sie das Image auf eine CD und starten anschließend den für das Frontend geplanten Rechner mit dieser CD.

Wollen Sie mehr Rechner für die Cloud nutzen, werden die Frontend-Komponenten aufgeteilt. Bei drei Rechnern kommen CLC und Walrus auf die erste Maschine, CC und SC auf die zweite. Bei vier Rechnern werden auch noch CLC und Walrus voneinander getrennt. Ab fünf Rechner kann man bereits zwei Nodes nutzen; in dem Fall kommen CLC und Walrus wieder auf die erste Maschine:

Maschine 1: CLC, Walrus

Maschine 2: CC1, SC1

Maschine 3: NC1

Maschine 4: CC2, SC2

Maschine 5: NC2 ...

Tipp: Sie können zu Testzwecken die gesamte Eucalyptus-Cloud auch auf einem Rechner installieren. Was Sie dabei beachten müssen, ist unter https://help.ubuntu.com/community/UEC/Topologies beschrieben.

Frontend und Node neu installieren

Die Installation von der Server-CD läuft ähnlich wie in den Desktop-Varianten von Ubuntu. Sie wählen zunächst die Sprache, dann aber den Eintrag Ubuntu Enterprise Cloud installieren. Danach werden die Tastatur und das CD-Laufwerk erkannt und die Komponenten für die Installation geladen. Nach der Hardwareerkennung wird das Netzwerk konfiguriert und dann nach dem Rechnernamen ("ubuntu") gefragt.

Dann beginnt die Eucalyptus-Installation. Hier lassen Sie die Cloud-Controller-Adresse frei, weil es im Netzwerk noch keinen gibt - den wollen Sie ja erst noch anlegen. Im zweiten Bildschirm können Sie die zu installierenden Komponenten wählen; die fürs Frontend sind bereits markiert, sodass Sie mit Enter gleich weitergehen können.

Damit sind die Angaben für Eucalyptus zunächst beendet, und es beginnt die weitere Standardinstallation mit dem Partitionieren der Festplatten. Spannend wird es erst wieder, wenn die Setup-Routine nach dem Namen des Eucalyptus-Clusters fragt. Die Vorgabe cluster1 können Sie ändern oder übernehmen; der Name wird den Nutzern später als verfügbare Zone angezeigt. Danach müssen Sie einen Adressbereich Ihres Netzwerks angeben, den Eucalyptus virtuellen Maschinen als öffentliche IP-Adressen dynamisch zuweisen kann. Um den Adressbereich einzugeben, benötigen Sie das Minuszeichen. Sie finden es auf der US-amerikanischen Tastatur auf der ß-Taste.

Anschließend installieren Sie den Node-Rechner. Benutzen Sie dasselbe Image und wählen ebenfalls den Eintrag Ubuntu Enterprise Cloud installieren. Achten Sie darauf, dass der Node im selben Netzwerk angeschlossen ist. Dann wird der Cluster von selbst erkannt, und die Installation des Node-Controllers wird angeboten. Der Rest funktioniert wie oben bereits beschrieben.

Installation auf bestehendem System

Falls Sie bereits Ubuntu auf den Rechnern installiert haben, müssen Sie es nicht erst wieder löschen. In dem Fall installieren Sie die Eucalytus-Pakete entsprechend. Auf dem Frontend-Rechner geht das ziemlich einfach mit dem Befehl

sudo apt-get install eucalyptus-cloud eucalyptus-cc eucalyptus-walrus eucalyptus-sc

Danach können Sie sich dem Node-Rechner zuwenden und dort den Node-Controller installieren mit

sudo apt-get install eucalyptus-nc

Das sieht zunächst noch einfacher aus. Doch während für das Frontend bereits alle Arbeiten erledigt sind, müssen Sie bei dieser Art der Installation noch einiges auf dem Node-Rechner anpassen. Zunächst müssen Sie die Bridge konfigurieren. Dazu laden Sie die Datei /etc/network/interfaces in einen Editor und kommentieren alle Einträge für vorhandene Schnittstellen wie eth0, eth1 und so weiter aus. Fügen Sie zum Beispiel den folgenden Bridge-Eintrag hinzu, um die Bridge an alle physikalisch vorhandenen Ethernet-Geräte zu binden und per DCHP eine IP-Adresse zu erhalten:

auto br0iface br0 inet dhcp bridge_ports all

Sollte das nach dem Netzwerkneustart mit "/etc/init.d/networking restart" nicht funktionieren, versuchen Sie stattdessen folgende Konfiguration:

auto br0iface br0 inet dhcp bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off

Wichtig: Achten Sie darauf, dass die bridge_ports an die richtige eth-Schnittstelle gebunden werden. Wollen Sie die IP-Adresse statt per DHCP statisch zuweisen, dann erledigen Sie das mit einem Eintrag in der Art:

auto br0iface br0 inet static address 192.168.12.20 netmask 255.255.255.0 network 192.168.12.0 broadcast 192.168.12.255 gateway 192.168.12.1 dns-nameservers 192.168.12.1 dns-search foobar foobar.com bridge_ports eth0

Denken Sie daran, bei den Angaben von address bis dns-search Ihre eigenen IP-Adressen und Parameter einzugeben. Anschließend starten Sie das Netzwerk neu.

Im Anschluss kontrollieren Sie, ob in der Datei /etc/eucalyptus/eucalyptus.conf in der Zeile VNET_BRIDGE die zuvor definierte Brücke eingetragen ist. Danach starten Sie den Node-Controller neu mit

sudo /etc/init.d/eucalyptus-nc restart

Ziemlich lang: Mit diesem Befehl übertragen Sie den öffentlichen SSH-Schlüssel des Benutzers eucalyptus auf den Node-Rechner.

Als Nächstes müssen Sie den öffentlichen SSH-Schlüssel des eucalyptus-Nutzers vom Frontend auf den Node-Controller installieren. Das ist am einfachsten, indem Sie zunächst dem Nutzer eucalyptus auf dem Node-Controller ein Passwort zuweisen:

sudo passwd eucalyptus

Anschließend übertragen Sie dieses am Frontend hinüber zum Node-Rechner mit

sudo -u eucalyptus ssh-copy-id -i ~eucalyptus/.ssh/id_rsa.pub eucalyptus@<IP-ADRESSE-DES-NODES>

Den Schlüssel finden Sie danach in der Datei /var/lib/eucalyptus/.ssh/authorized_keys. Nun können Sie das Passwort wieder entfernen mit

sudo passwd -d eucalyptus

Nun starten Sie auf dem Frontend die Publication-Services von Walrus, Cluster- und Storage-Controller:

sudo start eucalyptus-walrus-publicationsudo start eucalyptus-cc-publicationsudo start eucalyptus-sc-publication

Anschließend starten Sie den Service auf dem Node-Rechner:

sudo start eucalyptus-nc-publication

Wechseln Sie wieder zum Frontend-Rechner und starten den Listener für den Cloud- und den Cluster-Controller (sind diese auf unterschiedlichen Maschinen, müssen Sie den Befehl an beiden ausführen):

sudo start uec-component-listener

Im letzten Schritt können Sie sich in der Logdatei /var/log/eucalyptus/registration.log davon überzeugen, dass die Registrierung der einzelnen Komponenten erfolgreich war.

Credentials holen

Jetzt kommt der große Augenblick. Starten Sie einen Webbrowser und loggen sich auf dem Cloud-Controller ein. Dazu geben Sie in die Adresszeile des Browsers ein:

https://192.168.178.76:8443/

Start in die Wolke: der Anmeldebildschirm der Ubuntu Enterprise Cloud.

Wichtig: Achten Sie darauf, das sichere HTTPS-Protokoll zu verwenden. Als Benutzernamen und Passwort geben Sie jeweils admin ein. Danach erfolgt die Erstkonfiguration der Cloud, und Sie werden aufgefordert, ein neues Passwort für admin festzulegen.

Erstkonfiguration: Der Administrator muss zunächst ein neues Passwort und eine E-Mail-Adresse eintragen.

Danach erscheint der Konfigurationsbildschirm. Hier müssen Sie zunächst nichts ändern. Wechseln Sie oben links im Menü zu Credentials und klicken auf Download Credentials, um die Zertifikate von Cloud-Controller herunterzuladen. Entpacken Sie diese anschließend mit

unzip -d ~/.euca /Pfad_zu/euca2-admin-x509.zip

in den versteckten Ordner .euca in Ihrem Home-Verzeichnis. Jetzt benötigen Sie noch die Euca-Tools für den Cloud-Nutzer, die zum Verwalten der Eucalyptus-Instanzen dienen. Installieren Sie diese mit

sudo apt-get install euca2ools

Das alles funktioniert, prüfen Sie abschließend, indem Sie die Verfügbarkeitsdetails der virtuellen Maschinen des lokalen Clusters abrufen:

. ~/.euca/eucarceuca-describe-availability-zones verbose

Geschafft: Die Cloud kann über ein Web-Frontend konfiguriert werden.

Die Cloud-Infrastruktur ist jetzt fertig und betriebsbereit. Nun können Sie die Cloud befüllen und entsprechende Images installieren. Klicken Sie auf Extras und laden eines von der Eucalyptus-Homepage herunter. Die Images enthalten jeweils ein XEN- beziehungsweise KVM-kompatibles Kernel- und Ramdisk-Paar sowie ein Image für die virtuelle Maschine. Wie Sie das Image installieren, ist auf der Eucalyptus-Homepage beschrieben. (hal)