Tag: Eucalyptus


Eucalyptus: Die Euca2ools

Bei den Euca2ools handelt es sich um eine Sammlung von Kommadozeilentools, die dazu dienen mit Web Services, die auf einer REST-API (wie die Amazon Web Services EC2 und S3) basieren, zu kommunizieren.

Die Tools können gleichermaßen mit den Amazon Web Services und der Open Source Cloud Infrastruktur von Eucalyptus verwendet werden. Das Design der Euca2ools basiert auf den Kommandozeilentools api-tools und ami-tools von Amazon und verfügt damit weitestgehend über dieselben Optionen und Umgebungsvariablen.

Die Euca2ools sind von Grund auf vollständig in Python implementiert und beruhen auf der Boto library und dem M2Crypto toolkit.

Funktionsübersicht

  • Abfrage der Verfügbarkeitszonen (Cluster im Eucalyptus Kontext)
  • SSH Key Management (add, list, delete)
  • Virtual Machine Management (start, list, stop, reboot, get console output)
  • Security Group Management
  • Volume und Snapshot Management (attach, list, detach, create, bundle, delete)
  • Image Management (bundle, upload, register, list, deregister)
  • IP-Adressen Management (allocate, associate, list, release)

Installation


Installation aus den Sourcen

Die Euca2ools können anhand der Quellen oder mit den DEB oder RPM Packages installiert werden. Alle aktuellen Versionen stehen dazu unter http://open.eucalyptus.com/downloads zum Herunterladen bereit.

Folgende Versionen von Python, der Boto library und M2Crypto sind erforderlich, um die vorhandenen Abhängigkeiten zu erfüllen.

  • Python 2.5 (dev) oder höher
  • Boto 1.8d oder höher
  • M2Crypto 0.19.1 oder höher

Zunächst wird $VERSION auf 1.2 wie folgt gesetzt.

export VERSION="1.2"

Als nächstes muss die Euca2ools Version euca2ools-$VERSION-src-deps.tar.gz heruntergeladen werden. Diese beinhaltet boto-1.8d.tar.gz und M2Crypto-0.19.1.tar.gz

Nun können die Abhängigkeiten erstellt und die Installation vorgenommen werden.

Dazu ist es notwendig python-dev, swig, help2man, und libssl-dev zu installieren, um die folgenden Libraries zu erstellen.

Wir laden also euca2ools-$VERSION.tar.gz und euca2ools-$VERSION-src-deps.tar.gz herunter. Weiterhin gehen wir davon aus, dass sich diese Tarballs im aktuellen Verzeichnis befinden.

Installation von Boto

tar zvxf euca2ools-$VERSION-src-deps.tar.gz
cd euca2ools-$VERSION-src-deps
tar zxvf boto-1.8d.tar.gz
cd boto-1.8d
sudo python setup.py install
cd ..

Installation von M2Crypto

tar zxvf M2Crypto-0.19.1.tar.gz
cd M2Crypto-0.19.1
sudo python setup.py install
cd ..

Installation der Euca2ools in /usr/local/bin, inkl. dem Hinzufügen zu $PATH.

cd ..
tar zxvf euca2ools-$VERSION.tar.gz
cd euca2ools-$VERSION
sudo make
export PATH=/usr/local/bin:$PATH

Deinstallation

sudo make uninstall

Nun können die euca2ools, boto und M2Crypto aus dem Python Installationsverzeichnis wieder entfernt werden.

Installation mit CentOS 5

Dieses Vorgehen beschreibt die Installation der Euca2ools für CentOS 5. Dazu muss zunächst der Wert der Variablen $VERSION wie folgt auf 1.2 gesetzt werden.

export VERSION=1.2

Es gibt 2 Möglichkeiten, um die Pakete zu erhalten:

Yum

Die Packages sind in diesem Fall über das Yum Repository erhältlich. Um diese Variante zu nutzen, muss die Datei "/etc/yum.repos.d/euca.repo" mit folgendem Inhalt erstellt werden.

[euca2ools]
name=Euca2ools
baseurl=http://www.eucalyptussoftware.com/downloads/repo/euca2ools/$VERSION/yum/centos/
enabled=1

Anschließend können die Euca2ools installiert werden.

yum install euca2ools.$ARCH --nogpgcheck

Dabei handelt es sich bei $ARCH um i386 oder x86_64 und $VERSION entweder um 1.1 oder 1.2.

Tarball

Für die Tarball Variante muss das entsprechende Tarball unter http://open.eucalyptus.com/downloads heruntergeladen werden. Anschließend wird es in ein temporäres Verzeichnis entpackt und Python 2.5 sowie die Euca2ools installiert.

tar zxvf euca2ools-$VERSION-*.tar.gz
cd euca2ools-$VERSION-*
sudo -s
yum install -y swig
rpm -Uvh python25-2.5.1-bashton1.x86_64.rpm python25-libs-2.5.1-bashton1.x86_64.rpm euca2ools-$VERSION-*.x86_64.rpm

Für 32-Bit Rechner muss x86_64 durch i386 ersetzt werden.

Wichtig: Bitte anstatt "-i" die Parameter "-Uvh" verwenden!

Installation mit OpenSUSE 11

Dieses Vorgehen beschreibt die Installation der Euca2ools für OpenSUSE 11. Dazu muss zunächst der Wert der Variablen $VERSION wie folgt auf 1.2 gesetzt werden.

export VERSION=1.2

Es gibt 2 Möglichkeiten, um die Pakete zu erhalten:

Zipper

Die Packages sind in diesem Fall über das Zipper Repository erhältlich.

zypper ar --refresh http://www.eucalyptussoftware.com/downloads/repo/euca2ools/$VERSION/yum/opensuse Euca2ools

Die Packages aus diesem Repository müssen an dieser Stelle als vertrauensvoll eingestuft und bestätigt werden.

zypper refresh Euca2ools

Nun kann die Installation erfolgen.

zypper install euca2ools

Tarball

Für die Tarball Variante muss das entsprechende Tarball unter http://open.eucalyptus.com/downloads heruntergeladen werden. Anschließend wird es in ein temporäres Verzeichnis entpackt und die Euca2ools installiert.

tar zxvf euca2ools-$VERSION-*.tar.gz
cd euca2ools-$VERSION-*
sudo -s
zypper install swig
rpm -Uvh euca2ools-$VERSION-*.x86_64.rpm

Wichtig: Bitte anstatt "-i" die Parameter "-Uvh" verwenden!

Installation mit Ubuntu Jaunty

Die Euca2ools 1.1 können auf Ubuntu Jaunty mittels der DEB Packages installiert werden. Dazu müssen in der "/etc/apt/sources.list" folgende Zeilen für den Zugriff auf den Repository eingefügt werden.

deb http://www.eucalyptussoftware.com/downloads/repo/euca2ools/1.1/ubuntu jaunty universe

Anschließend kann die Installation erfolgen.

apt-get update
apt-get install euca2ools

Die folgende Warnmeldung muss mit einem "Y" bestätigt werden.

WARNING: The following packages cannot be authenticated!
...
Install these packages without verification [y/N]? y

Wenn die Eucalyptus Packages in Zukunft nicht mehr automatisch aktualisiert werden sollen, muss der Eintrag aus der sources.list wieder entfernt werden.

Installation mit Debian Squeeze

Die Euca2ools können auf Debian squeeze mittels der DEB Packages installiert werden. Dazu müssen in der "/etc/apt/sources.list" folgende Zeilen für den Zugriff auf den Repository eingefügt werden.

1.1

deb http://www.eucalyptussoftware.com/downloads/repo/euca2ools/1.1/debian squeeze contrib

1.2

deb http://www.eucalyptussoftware.com/downloads/repo/euca2ools/1.2/debian squeeze main

Anschließend kann die Installation erfolgen.

apt-get update
apt-get install euca2ools python-boto=1.8d-1

Die folgende Warnmeldung muss mit einem "Y" bestätigt werden.

WARNING: The following packages cannot be authenticated!
...
Install these packages without verification [y/N]? y

Wenn die Eucalyptus Packages in Zukunft nicht mehr automatisch aktualisiert werden sollen, muss der Eintrag aus der sources.list wieder entfernt werden.

Funktionen & Nutzung


Die Euca2ools verwenden kryptografische Anmeldeinformationen für die Authentifizierung. Dabei werden zwei Arten von Anmeldeinformationen von EC2-und S3-kompatiblen Diensten ausgestellt: x509 Zertifikate und Schlüssel.

Während einige Befehle nur den Schlüssel benötigen, ist es am besten immer beide Arten von Anmeldeinformationen anzugeben. Weiterhin müssen die URLs zu den EC2 und S3 Services angegeben werden, es sei denn die Web-Services befinden sich auf dem Localhost.

Die Anmeldeinformationen und URLs können mittels der Optionen über die Kommandozeile oder durch das Setzen von Umgebungsvariablen wie folgt angegeben werden.

Variable
Option
Bemerkung
EC2_URL -U oder --url [url] http://host:8773/services/Eucalyptus
oder http://ec2.amazonaws.com
oder https://ec2.amazonaws.com:443
S3_URL -U oder --url [url] http://host:8773/services/Walrus
oder http://s3.amazonaws.com
oder https://s3.amazonaws.com:443
EC2_ACCESS_KEY -a oder --access-key [key] Access Key ID / Query ID
EC2_SECRET_KEY -s oder --secret-key [key] Secret Access Key / Secret Key
EC2_CERT -c oder --cert [file] PEM-encoded Zertifikat des Benutzer
EC2_PRIVATE_KEY -k oder --privatekey [file] PEM-encoded Private Key des Benutzer
EUCALYPTUS_CERT --ec2cert_path [file] OPTIONALER Pfad zum Cloud Zertifikat

Werden die Euca2ools zusammen mit Eucalyptus verwendet, sollte es ausreichen, die Datei eucarc in die Umgebungsvariablen einzubinden, um alle die oben genannten Variablen korrekt einzurichten.

Mittels euca- plus Name des Befehls --help erhält man die Ausgabe der Hilfe. Mit man Name des Befehls öffnet sich die entsprechende Manpage.

Image Management

Um Instanzen auf Basis von Images auszuführen, müssen diese zunächst zusammengestellt, in die Cloud hochgeladen und anschließend für die Cloud registriert werden. Dieses Vorgehen wird in dem folgenden Abschnitt beschrieben.

Zusammenstellen von Images

Wichtig! Die eucarc Konfigurationsdatei muss sich für die nachfolgenden Schritte in den Umgebungsvariablen befinden.

Der Befehl "euca-bundle-image" kann verwendet werden, um Images zusammenzustellen, die für Eucalyptus als auch Amazon benutzt werden können. So ein Image besteht aus einer Manifest Datei und mehreren Einzeteilen.

Um ein Image mit dem Dateinamen "image.img" für den Benutzer mit der ID "123456789111" in dem Verzeichnis "image-dir" zusammenzustellen benutzen wir folgenden Befehl.

euca-bundle-image -i image.img -u 12345678111 -d image-dir

Um Anmeldeinformationen (Benutzerzertifikat: "cert-xyz.pem" und Private Key: "pk-xyz.pem") gesondert anzugeben erweitern wir den obigen Befehl.

euca-bundle-image -i image.img -u 123456789111 -d image-dir -c cert-xyz.pem -k pk-xyz.pem

Um ein Image für den Einsatz in der Amazon Cloud zusammenzustellen, muss das Amazon EC2 Zertifikat (dies ist Teil der EC2 AMI Tools) vorhanden sein. Das Zertifikat befindet sich in der Regel unter "$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2.pem".

euca-bundle-image -i image.img -u 123456789111 -d image-dir -c cert-abc.pem -k pk-abc.pem --ec2cert $EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2.pem

In dem obigen Beispiel muss weiterhin darauf geachtet werden, dass es sich bei den Anmeldeinformationen "cert-abc.pem" and "pk-abc.pem" um die von Amazon und nicht die von Eucalyptus handelt.

Weitere Optionen können mittels --help oder man euca-bundle-image aufgerufen werden.

euca-bundle-image --help

Hochladen von Images

Um ein Image in einem Schritt zusammenzustellen (euca-bundle-image) und hochzuladen kann der Befehl "euca-upload-bundle" verwendet werden.

Um ein fertig zusammengestelltes Image, welches sich auf die Manifest Datei "image.img.manifest.xml" bezieht und in den Bucket "image-bucket" hochgeladen werden soll, gehen wir wie folgt vor.

euca-upload-bundle -b image-bucket -m image.img.manifest.xml

Weitere Optionen können mittels --help oder man euca-upload-bundle aufgerufen werden.

euca-upload-bundle --help

Registrieren von Images

Zusammengestellte und in die Cloud hochgeladene Images müssen anschließend registiert werden, damit sie auch gestartet werden können.

Um ein fertig zusammengestelltes Image, welches sich auf die Manifest Datei "image.img.manifest.xml" bezieht, in den Bucket "image-bucket" hochgeladen wurde und nun registriert werden soll, verwenden wir den Befehl.

euca-register image-bucket/image.img.manifest.xml

Weitere Optionen können mittels --help oder man euca-register aufgerufen werden.

euca-register --help

Herunterladen von Images

Images können ebenfalls von der Cloud heruntergeladen bzw. vollständig entfernt werden.

Um ein Image, welches in den Bucket "image-bucket" hochgeladen wurde, kann mit dem folgenden Befehl aus der Cloud heruntergeladen werden.

euca-download-bundle -b image-bucket

Weitere Optionen können mittels --help oder man euca-download-bundle aufgerufen werden.

euca-download-bundle --help

Löschen von Images

Mit dem Befehl "euca-delete-bundle" können Images wieder entfernt werden.

Um ein Image aus dem Bucket "image-bucket" zu löschen verwenden wir den Befehl.

euca-delete-bundle -b image-bucket

Um ein bestimmtes Image zu entfernen, kann eine Manifest Datei mit den Parametern "-m" oder "--manifest" angegeben werden.

Im folgenden löschen wir den Bucket "image-bucket", nachdem des Image entfernt wurde.

euca-delete-bundle -b image-bucket --clear

Wichtig! Ein Bucket kann erst gelöscht werden, wenn er leer ist.

Weitere Optionen können mittels --help oder man euca-delete-bundle aufgerufen werden.

euca-delete-bundle --help

"Entflechten" von Images

Um ein Image wieder zu "entflechten" nutzen wir den Befehl "euca-unbundle".

Ein zusammengestelltes Image, welches sich im Verzeichnis "image-dir" befindet und sich auf die Manifest Datei "image.img.manifest.xml" bezieht, entflechten wir mit dem folgenden Befehl.

euca-unbundle -m image.img.manifest.xml -d image-dir

Weitere Optionen können mittels --help oder man euca-unbundle aufgerufen werden.

euca-unbundle --help

Kontrollieren der Virtuellen Maschinen

Innerhalb der Cloud können virtuelle Maschinen (VM) Instanzen kontrolliert werden, indem hochgeladene Images als Templates verwendet werden. Mit den folgenden Befehlen können virtuelle Maschinen Instanzen kontrolliert werden.

Anzeigen aktuell ausgeführter Instanzen

Mittels "euca-describe-instances" wird eine Liste aktuelle ausgeführter Instanzen angezeigt.

euca-describe-instances

Um sich Informationen zu einer bestimmten Instanz anzuzeigen, wird dem Befehl "euca-describe-instances" als Parameter zusätzlich die ID der Instanz mit übergeben.

euca-describe-instances i-43035890

Weitere Informationen erhält man mit dem Parameter "--help".

euca-describe-instances --help

Ausführen von Instanzen

Mit dem Befehl "euca-run-instances" können VM Instanzen von Images deployed werden, welche zuvor in die Cloud hochgeladen wurden.

Um z.B. eine Instanz von dem Image mit der ID "emi-53444344", dem Kernel "eki-34323333", der Ramdisk "eri-33344234" und dem Keypair "testkey" auszuführen kann der folgende Befehl verwendet werden.

euca-run-instances -k testkey --kernel eki-34323333 --ramdisk eri-33344234 emi-53444344

Um mehrere Instanzen auszuführen kann der Parameter "-n" oder "--instance-count" genutzt werden.

Weitere Informationen erhält man mit dem Parameter "--help" oder mittels der Manpage von "euca-run-instances".

euca-run-instances --help

Herunterfahren von Instanzen

Mit dem Befehl "euca-terminate-instances" können Instanzen wieder heruntergefahren werden. Um z.B. die Instanz "i-34523332" zu beenden verwenden wir.

euca-terminate-instance i-34523332

Weitere Informationen erhält man mit dem Parameter "--help" oder mittels der Manpage von "eeuca-terminate-instances".

euca-terminate-instances --help

Neustart von Instanzen

Für einen Neustart einer Instanz wird der Befehl "euca-reboot-instances" benötigt. Um z.B. die Instanz "i-34523332" neu zu starten verwenden wir.

euca-reboot-instances i-34523332

Während eines Neustarts bleibt das Root Dateisystem der Instanz erhalten.

Netzwerk und Sicherheit

Weiterhin können Instanzen dynamisch IP-Adressen zugewiesen und entfernt werden, sowie Security Groups erstellt und ihnen netzwerkbasierte Regeln zugeteilt werden.

Zuweisen und Verbinden von IP-Adressen

Mit den Befehlen "euca-allocate-address" und "euca-associate-address" können IP-Adressen zugewiesen (allocate) und öffentliche IP-Adressen mit Instanzen verbunden (associate) werden.

Im folgenden Beispiel wird eine IP-Adresse zugewiesen und mit der Instanz "i-56785678" verbunden.

euca-allocate-addressADDRESS a.b.c.d

euca-associate-address -i i-56785678 a.b.c.d

Lösen und Freigeben von IP-Adressen

Mittels "euca-disassociate-address" und "euca-release-address" können IP-Adressen von einer Instanz gelöst und für den globalen IP-Adressen Pool wieder freigegeben werden.

In dem folgenden Beispiel wird die IP-Adresse "a.b.c.d" gelöst und freigegeben.

euca-disassociate-address a.b.c.d

euca-release-address a.b.c.d

Erstellen von Security Groups

Security Groups werden mit dem Befehl "euca-add-group" erstellt.

Das folgende Beispiel erstellt eine Security Group mit dem Namen "mygroup"

euca-add-group -d "mygroup description" mygroup

Security Groups können ebenfalls beim Start einer Instanz erstellt werden, indem der Parameter "-g" zu dem Befehl "euca-run-instances" hinzugefügt wird.

Netzwerkbasierte Regeln einer Security Group hinzufügen

Standardmäßig verbietet eine Security Group jeglichen eingehenden Datenverkehr aus allen Quellen. Mit dem Befehl "euca-authorize" können einer Security Group netzwerkbasierte Regeln hinzugefügt werden.

Mittels "--help" erhält man eine Liste aller möglichen Optionen die verwendet werden können.

euca-authorize --help

Um z.B. eingehende SSH (Port 22) Verbindungen für die Security Group "mygroup" zu erlauben, wird der nachfolgende Befehl verwendet. Hier wird für das TCP Protokoll, dem Port 22 und dem CIDR Quell-Netzwerk 0.0.0.0/0 (dieses bezieht sich auf jede Quelle) eine Regel erstellt. Das bedeutet, dass anschließend eine SSH-Verbindung über das TCP Protokoll von jedem Quell-Netzwerk aus aufgebaut werden darf.

euca-authorize -P tcp -p 22 -s 0.0.0.0/0 mygroup

Anstatt eine bestimmte CIDR Quelle anzugeben, kann dafür ebenfalls eine andere Security Group verwendet werden, in der weitere Regeln vorhanden sind.

euca-authorize --source-group someothergroup --source-group-user someotheruser -P tcp -p 22 mygroup

Entfernen der Regeln von einer Security Group

Mit dem Befehl "euca-revoke" werden die zuvor zugewiesenen Regeln einer Security Group wieder entzogen.

euca-revoke -P tcp -p 22 -s 0.0.0.0/0 mygroup

Mittels "--help" können weitere Optionen angezeigt werden.

euca-revoke --help

Löschen einer Security Group

Mit dem Befehl "euca-delete-group" kann eine Security Group wieder entfernt werden.

Mit dem folgenden Kommando wird die Security Group "mygroup" wieder gelöscht.

euca-delete-group mygroup

Verwenden von Block Storage

Mit den Euca2ools können weiterhin Dynamic Block Volumes erstellt, Volumes zu Instanzen hinzugefügt, Volumes entfernt und gelöscht werden, sowie Snapshots von Volumes erstellt und aus Snapshots Volumes erstellt werden.

Bei Volumes handelt es sich um Raw Block Devices. Auf einem zu einer Instanz hinzugefügten Volume kann ein Dateisystem erstellt werden. Anschließend kann das Volume innerhalb der VM Instanz gemounted werden und wie ein gewöhnliches Block Device verwendet werden. Es können ebenfalls ad-hoc Snapshots von Volumes erstellt und aus diesen Snapshots wiederum neue Volumes erstellt werden.

Erstellen eines Volume

Für das Erstellen eines Dynamic Block Volume wird der Befehl "euca-create-volume" benötigt.

Um z.B. ein Volume mit der Größe von 1 Gigabyte in der Verfügbarkeitszone "myzone" zu erstellen wird das folgende Kommando benötigt.

euca-create-volume --size 1 -z myzone

Zum Anzeigen aller Verfügbarkeitszonen wird der Befehl "euca-describe-availability-zones" benötigt.

Um aus dem vorhandenen Snapshot "snap-33453345" in der Verfügbarkeitszone "myzone" ein Volume zu erstellen wird das folgende Kommando benötigt.

euca-create-volume --snapshot snap-33453345 -z myzone

Weitere Informationen erhält man mit dem Parameter "--help".

euca-create-volume --help

Ein Volume zu einer Instanz hinzufügen

Mit dem Befehl "euca-attach-volume" können Volumes zu einer Instanz hinzugefügt werden. Dazu muss der lokale Name des Block Device und die Instanz-ID angegeben werden.

Um das Volume "vol-33534456" der Instanz "i-99838888" zu dem lokalen Device "/dev/sdb" (der Instanz) hinzuzufügen wird das folgende Kommando benötigt.

euca-attach-volume -i i-99838888 -d /dev/sdb vol-33534456

Dabei kann ein Volume zu einem Zeitpunkt nur genau einer Instanz zugewiesen werden.

Entfernen eines Volume

Der Befehl "euca-detach-volume" wird benötigt, um ein zuvor hinzugefügtes Volume wieder zu entfernen.

Um z.B. das Volume "vol-33534456" wieder zu entfernen nutzen wir das folgende Kommando.

euca-detach-volume vol-33534456

Bevor eine Instanz beendet oder ein Volume gelöscht wird, muss ein hinzugefügtes Volume zunächst entfernt werden. Sollte das Entfernen eines Volumes nicht möglich sein (Fehlermeldung), liegt es wahrscheinlich daran, dass sich dieses derzeit in einem inkonsistenten Zustand befindet. Ein abruptes entfernen würde zu einem Datenverlust führen.

Löschen eines Volume

Für das Löschen eines Volumes wird der Befehl "euca-delete-volume" benötigt.

Um z.B. das Volume "vol-33534456" zu löschen, nutzen wird das folgende Kommando.

euca-delete-volume vol-33534456

Dabei dürfen nur Volumes gelöscht werden, die zu diesem Zeitpunkt keiner Instanz hinzugefügt sind.

Erstellen eines Snapshot

Es können ebenfalls live Snapshots von Volumes mit dem Befehl "euca-create-snapshot" erstellt werden.

Um z.B. einen Snapshot von dem Volume "vol-33534456" zu erstellen wird das folgende Kommando benötigt.

euca-create-snapshot vol-33534456

Löschen eines Snapshot

Mit dem Befehl "euca-delete-snapshot" können Snapshots wieder gelöscht werden.

Um z.B. den Snapshot "snap-33453345" zu löschen nutzen wir das folgende Kommando.

euca-delete-snapshot snap-33453345

Quelle



Eucalyptus: Ändern eines fertig zusammengestellten Image

Dieser Artikel beschreibt die Änderung, also das Hinzufügen von Daten oder Anwendungen zu einem lauffähigen Image.

Wir gehen davon aus, dass sich das zu manipulierende Image in "root.img" befindet. Images können grundsätzlich aus der Cloud (Walrus) mit dem Befehl "euca-download-bundle" heruntergeladen werden.

Zunächst erstellen wir einen Mountpunkt.

mkdir temp-mnt

Und weisen dem Image ein Loop Block Device zu. In diesem Fall gehen wir davon aus, dass "/dev/loop5" frei verfügbar ist.

losetup /dev/loop5 root.img

Nun können wir das Image mounten.

mount /dev/loop5 temp-mnt

Das Image befindet sich nun unter "temp-mnt". Damit kann es behandelt werden wie jedes andere Gerät, was gemounted ist. Wir können somit nun alle möglichen Daten oder Anwendungen darauf kopieren. Dabei sollten wir aber darauf achten, nicht die Größe des Images zu überschreiten (Stichwort: "df").

Um weitere Pakete in das Image zu installieren stehen mehrere Möglichkeiten zur Verfügung:

  • Mittels "chroot temp-mnt" zu Root werden und dann mit "apt-get" or "yum" oder "zypper" die gewünschten Pakete installieren.
  • Einen Paketmanager wie "dpkg" oder "rpm" mit der Option "--root" starten.

Nachdem die Änderungen an dem Image beendet wurden, entziehen wir diesem wieder das Loop Block Device.

umount /dev/loop5
losetup -d /dev/loop5

Damit hat das Image "root.img" seine Änderungen erhalten. Dieses muss noch noch in die Cloud hochgeladen und dort registriert werden.

Achtung!!! Es sollte kein neuer Kernel installiert oder Module entfernt werden. Dadurch würde das Image anschließend nicht mehr bootfähig sein.

Quelle



UEC: Einsatz des Storage Controller

Dieser Artikel beschreibt, wie die Funktionen des Eucalyptus Storage Controller (SC) innerhalb der Ubuntu Enterprise Cloud (UEC) verwendet werden kann. Der Storage Controller ist vergleichbar mit den Amazon Elastic Block Storage (EBS). Mit diesem können Block Devices wie z.B. virtuelle Festplatten von virtuellen Maschinen (Images) gemounted werden. Die Daten werden dabei außerhalb der virtuellen Maschine (VM) gespeichert und sind dabei unabhängig von dem aktuellen Status dieser VM. Das bedeutet, dass die Daten weiterhin persitent gespeichert beliben, auch wenn die virtuelle Maschine beendet wird.

Wurde die Ubuntu Enterprise Cloud mit einer CD installiert und existiert eine separate physikalische Netzwerkschnittstelle, mit der das Front-End mit den Eucalyptus Node Controllers (NCs) verbunden wird, muss sichergestellt sein, dass der Storage Controller das Private Network Interface verwendet.

Mit Hilfe der Weboberfläche kann diese Konfiguration unter Configuration -> Clusters -> Storage Controller vorgenommen werden. Dabei muss darauf geachtet werden, dass die IP-Adresse welche unter Host eingetragen ist zu dem private Interface gehört und das es sich bei diesem Interface auch um das physikalische Interface zu dem privaten Netzwerk handelt.

Für die Konfiguration mittels der Kommandozeile werden die folgenden Befehle verwendet.

sudo euca_conf --deregister-sc

sudo euca_conf --register-sc

Wichtig! Alle Volumes die vor der Ausführung des obigen Befehls erstellt wurden, werden anschließend nicht mehr funktionieren und sollten mit nachfolgendem Befehl entfernt werden.

Arbeiten mit dem Storage Controller

Das Erstellen von Volumes

Zum Erstellen eines Eucalyptus Storage Controller Volumes nutzen wir den Befehl

euca-create-volume -s 1 -z myzone

Dabei entspricht -s die Größe in GB und -z den Namen der UEC Verfügbarkeitszone.

Mit dem Befehl

euca-describe-availability-zones

wird der Name des UEC Storage Controller Volumes ausgegeben.

VOLUME vol-xxxxxxxx

Das Benutzen von Volumes

Um ein Volume einer bereits gestarteten Instanz hinzuzufügen nutzen wir den Befehl

euca-attach-volume -i i-xxxxxxxx -d /dev/sdb vol-xxxxxxxx

Wobei -i den Identifier der Instanz und -d dem Namen des Endgerätes entspricht, dass dem Storage Controller Volume zugewiesen werden soll.

Mit dem Befehl

euca-describe-volumes

erhalten wir detaillierte Informationen zu den gemounteten Volumes.

VOLUME vol-xxxxxxxx 1 myzone in-use 2009-10-23T14:41:47.375Z
ATTACHMENT vol-xxxxxxxx i-xxxxxxxx /dev/sdb 2009-10-23T14:42:10.274Z

Anschließend sollte das hinzugefügte Endgerät im Verzeichnis /dev der Instanz vorhanden sein. Anschließend sollten wir in der Lage sein mittels

sudo fdisk /dev/sdb

mit dem Volume zu arbeiten. Dieses also zu partitionieren, formatieren, zu mounten und das Volume so zu nutzen, als wäre es wie ein physikalisches Endgerät vorhanden und an unserer Instanz angeschlossen.

Quelle



Eucalyptus: Arbeiten mit Walrus

Bei Walrus handelt es sich um den Speicherdienst von Eucalyptus, dessen Schnittstelle zu den Simple Storage Services (S3) von Amazon kompatibel ist. Mittels Walrus können Daten persistent in Buckets und Objekten gespeichert und verwaltet werden.

Für die Verwaltung der Eucalytpus Virtual Machine Images innerhalb von Walrus - also dem Speichern, Registrieren und Löschen - können die offiziellen Amazon Tools genutzt werden. Es existieren aber auch Tools von Drittanbietern die in diesem Artikel vorgestellt werden.

S3 curl

S3 Curl kommuniziert mit Walrus, indem Sicherheitsparameter als Curl Header hinzugefügt werden. Mit S3 Curl stehen Funktionen zum Erstellen, Löschen und Auflisten der Buckets, sowie dem Hoch- und Herunterladen von Objekten und der Verwaltung von Zugriffsrechten zu Verfügung.

Für die Nutzung von S3 Curl wird das "perl-Digest-HMAC package" benötigt. Weiterhin muss in der s3curl.pl der Hostname des "Endpoints" z.B. wie folgt angepasst werden.

my @endpoints = ( 's3.amazonaws.com' );

nach

my @endpoints = ( 'your-host' );

Bei "your-host" handelt es sich um die IP-Adresse bzw. dem Hostnamen auf dem Walrus ausgeführt wird. Für die Authentifizierung ist es notwendig, dass es sich bei "your-host" um den selben Host handelt, der von eucarc für $S3_URL in den Umgebungsvariablen gesetzt wurde.

Beim Anpassen der s3curl.pl darf nur der Hostname, aber nicht die Portnummer oder ein Pfad angegeben werden. Es sollte also nur abc.de und nicht abc.de:8773/services/Walrus verwendet werden!

Bevor die nachfolgenden Befehle ausgeführt werden, sollte sichergestellt sein das "eucarc" eingebunden ist.

~/.euca/eucarc

Dann kann es losgehen. Zunächst wird der Access Key sowie der Secret Key des Amazon Accounts benötigt. An dieser Stelle wäre es vorteilhaft, diese Daten in die ".s3curl" Konfigurationsdatei zu schreiben.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY

Zum Erstellen eines Buckets nutzen wir den nachfolgenden Befehl. Dabei entspricht "bucketName" dem Namen des Buckets der erstellt werden soll.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --put /dev/null -- -s -v $S3_URL/bucketName

Ein Objekt wird mit dem folgenden Befehl erstellt/hochgeladen (put), wobei "objectName" dem Namen des Objekts entspricht, das erstellt werden soll.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --put -- -s -v $S3_URL/bucketName/objectName

Für die Abfrage der MD5 Checksumme, sowie die Größe und das Datum der letzten Änderung an einem Objekt, nutzen wir diesen Befehl.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --head -- -s -v $S3_URL/bucketName/objectName > object.head

cat object.head

Hiermit laden (get) wir ein Objekt.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --get -- -s -v $S3_URL/bucketName/objectName > object

Ein Objekt kann wie folgt gelöscht werden.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --del -- -s -v $S3_URL/bucketName/objectName

Einen Bucket löschen wir mit diesem Befehl. An dieser Stelle ist zu beachten, dass Buckets vollständig leer sein müssen, bevor sie gelöscht werden können.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --del -- -s -v $S3_URL/bucketName

Die Zugriffssrechte für einen Bucket erhalten wie folgt.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --get -- -s -v $S3_URL/bucketName?acl | xmlindent > bucket.acl

Der Inhalt eines Buckets wird mit diesem Befehl angezeigt.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --get -- -s -v $S3_URL/bucketName | xmlindent > bucket.list

Eine Liste aller Buckets von einem Benutzer kann so angezeigt werden.

s3curl.pl --id $EC2_ACCESS_KEY --key $EC2_SECRET_KEY --get -- -s -v $S3_URL | xmlindent > bucketlisting

S3cmd

Mit S3cmd können Daten in Amazon S3 hoch- und heruntergeladen sowie verwaltet werden. Es eignet sich darüber hinaus gut für Skripte und automatisierte Backups die von cron gesteuert werden.

Installation

Zunächst wird python und python-openssl benötigt.

Nach dem Herunterladen und Entpacken von S3cmd muss der Patch unter dem Dateinamen s3cmd-0.9.8.3.patch abgespeichert werden.

Das S3cmd Verzeichnis muss in s3cmd-0.9.8.3 umbenannt und der Patch mittels patch -p1 < s3cmd-0.9.8.3.patch hinzugefügt werden.

Konfiguration

Nun muss eine Konfigurationsdatei mit dem Namen s3cfg.walrus für Walrus erstellt werden, für die folgende Beispielkonfiguration genutzt werden kann.

[default]
access_key = ACCESSKEY
acl_public = False
bucket_location = US
debug_syncmatch = False
default_mime_type = binary/octet-stream
delete_removed = False
dry_run = False
encrypt = False
force = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase =
guess_mime_type = False
host_base = localhost:8773
host_bucket = localhost:8773
service_path = /services/Walrus
human_readable_sizes = False
preserve_attrs = True
proxy_host =
proxy_port = 0
recv_chunk = 4096
secret_key = SECRET
send_chunk = 4096
use_https = False
verbosity = WARNING

Als Beispielkonfiguration für Amazon S3 kann die folgende verwendet werden.

[default]
access_key = ACCESSKEY
acl_public = False
bucket_location = US
debug_syncmatch = False
default_mime_type = binary/octet-stream
delete_removed = False
dry_run = False
encrypt = False
force = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase =
guess_mime_type = False
human_readable_sizes = False
preserve_attrs = True
proxy_host =
proxy_port = 0
recv_chunk = 4096
secret_key = SECRET
send_chunk = 4096
simpledb_host = sdb.amazonaws.com
use_https = False
verbosity = WARNING

Nutzung von S3cmd

Erstellen eines Bucket.

s3cmd -c s3cfg.walrus mb s3://testbucket

Löschen eines Bucket.

s3cmd -c s3cfg.walrus rb s3://testbucket

Auflisten aller Buckets.

s3cmd -c s3cfg.walrus ls

Den Inhalt eines Buckets anzeigen.

3cmd -c s3cfg.walrus ls s3://testbucket

Ein Objekt hochalden (put).

s3cmd -c s3cfg.walrus put s3://testbucket

Ein Objekt laden (get).

s3cmd -c s3cfg.walrus get s3://testbucket/

Löschen eines Objekts.

s3cmd -c s3cfg.walrus del s3://testbucket/

Quelle



Ubuntu Enterprise Cloud Terminologie

Bei dem Einsatz der Ubuntu Enterprise Cloud (UEC) wird eine eigene Terminologie verwendet, die für das Verständnis und dem Umgang doch wichtig ist. Dieses Glossar fasst alle notwendigen Begriffe und ihre Bedeutung zusammen.

Cloud
Ein Verbund von physikalischen Maschinen, die mit Hilfe von virtuellen Maschinen Rechnerressourcen dynamisch bereitstellen und "wieder einsammeln".

Cloud Controller (CLC)
Komponente von Eucalyptus die eine Weboberfläche (HTTPS Server auf Port 8443) bereitstellt und die Amazon EC2 API implementiert. Es sollte maximal einen Cloud Controller für eine UEC Installation geben. Der CLC wird durch das Ubuntu Package eucalyptus-cloud zur Verfügung gestellt.

Cluster
Ein Verbund von Nodes, die einem Cluster Controller zugeordnet sind. Dabei kann es mehr als einen Cluster in einer UEC Installation geben. Cluster bestehen in einigen Fällen aus physikalisch räumlich voneinander getrennten Nodes.

Cluster Controller (CC)
Eine Eucalyptus Komponente die für die Verwaltung der Node Ressourcen zuständig ist. Der CC wird durch das Ubuntu Package eucalyptus-cc zur Verfügung gestellt.

EBS
Elastic Block Storage

EC2 - Elastic Compute Cloud
Amazons Public Cloud Computing Angebot auf Basis von virtuellen Servern, bei dem die Abrechnung pro Stunde bzw. pro Gigabyte erfolgt.

EKI
Eucalyptus Kernel Image

EMI
Eucalyptus Machine Image

ERI
Eucalyptus Ramdisk Image

Eucalyptus
Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems.
Bei Eucalyptus handelt es sich um ein Open Source Projekt, welches ursprüglich an der University of California in Santa Barbara entwickelt wurde und mittlerweile durch Eucalyptus Systems unterstützt wird.

Front-end
Ein oder mehrere physikalische Server, auf denen die Eucalytpus Komponenten (cloud, walrus, storage controller, cluster controller) ausgeführt werden.

Node
Bei einem Node handelt es sich um eine phyiskalische Maschine, die in der Lage ist virtuelle Maschinen und einen Node Controller auszuführen. Innerhalb von Ubuntu bedeutet dies, dass eine CPU die VT Erweiterung unterstützt und den KVM Hypervisor ausführen kann.

Node Controller (NC)
Eine Eucalyptus Komponente die auf den Nodes ausgeführt wird, welche die virtuellen Maschinen beherbergen die wiederum der Cloud zugeordnet sind. Der NC wird durch das Ubuntu Package eucalyptus-nc zur Verfügung gestellt.

S3 - Simple Storage Service
Amazons Public Cloud Computing Angebot für das Speichern der EC2- und anderer Daten, bei dem die Abrechnung pro Gigabyte erfolgt.

Storage Controller (SC)
Eine Eucalyptus Komponente die zur Verwaltung des dynamic block storage services (EBS) dient. Jeder Cluster innerhalb einer Eucalyptus Installation kann seinen eigenen Storage Controller besitzen. Der SC wird durch das Ubuntu Package eucalyptus-sc zur Verfügung gestellt.

UEC
Ubuntu Enterprise Cloud
Ubuntu's Cloud Computing Lösung auf der Basis von Eucalyptus.

VM
Virtual Machine

VT
Virtualization Technology
Moderne CPUs unterstützen diese Funktion, um die Arbeit (das Hosting) mit den virtuellen Maschinen zu beschleunigen.

Walrus
Eine Eucalyptus Komponente welche die Amazon S3 API implementiert und dafür benötigt wird, die Images der virtuellen Maschinen, sowie die Daten der Benutzer in S3 Buckets mittels put/get zu speichern.



Die Xen Cloud Platform

In diesem Artikel stelle ich die Xen Cloud Platform (XCP) vor, die im August 2009 erstmals veröffentlicht wurde. Dabei handelt es sich um eine Initiative, mit der eine vollständige Open Source Lösung auf Basis einer von der Industrie unterstützenden API für Cloud Anbieter zur Verfügung stehen soll. Mit einer XCP Infrastruktur sollen andere Open Source Projekte wie z.B. Eucalyptus, Convirture, OpenNebula, OpenXenCenter, Xen VNC Proxy, und Nimbus in der Lage sein den Xen Hypervisor besser nutzen zu können, in dem die neue API speziell auf das Cloud Computing ausgerichtet ist.

Die Xen Cloud Platform versteht sich als eine Kombination der Eigenschaften der Xen Virtualisierung Platform (Mobilität, Offenheit, Isolation und der Möglichkeit mehrere Instanzen parallelen auszuführen) mit neuen und verbesserten Speicher-, Sicherheits- und Netzwerk- Virtualisierungstechnologien. Damit soll eine Vielzahl von virtuellen Infrastruktur Cloud Services angeboten werden können. Darüber hinaus werden Anforderungen bzgl. der Sicherheit, Verfügbarkeit, Performance und Isolation von Hybrid Clouds erfüllt.

Aktuelle Funktionen

  • Xen 3.4.1
  • Linux 2.6.27 Kernel
  • Windows PV Treiber, Microsoft Zertifiziert
  • XAPI Enterprise-class Management Tool Stack
    • Lebenszyklus einer virtuellen Maschine: Live Snapshots, Checkpoint, Migration
    • Ressourcen Pools: Sichere Neuverteilung (Live), Autokonfiguration, DR
    • Host Konfiguration: Flexibles Speichermanagement, Netzwerkbetrieb, Power Management
    • Verfolgen von Ereignissen: Fortschritt, Benachrichtigung
    • Sichere Kommunikation durch SSL
    • Möglichkeit für Upgrades und Patching
    • Überwachung und Benachrichtung bzgl. der Perfomance in Echtzeit
  • Unterstützung von Single-Root I/O Virtualization
  • Installation des Host per CD-ROM und Netzwerk
  • Vollständige "xe" Kommandozeile und Web Service API
  • Openvswitch
  • Fehlertoleranz (Marathon FT products)
  • VNC Console Proxy und Web Front-End
  • Unabhängiges Front-End

Roadmap für XCP 1.0

  • VSwitch Integration
    Mehrere Nutzer einer Netzwerkinfrastruktur; Übernahme der Firewall- und Routingregeln von migrierten virtuellen Maschinen; Flexible Überwachung des Datenverkehrs von virtuellen Ports
  • Netchannel 2 Integration
    Verbesserung der Skalierbarkeit der Xen Vernetzung auf größeren Systemen; Beschleunigung des Datenverkehrs zwischen virtuellen Maschinen
  • Single-Root I/O Virtualization (SR-IVO) Vernetzung
    Xen unterstützt bereits SR-IVO Netzwerkkarten, allerdings müssen diese noch manuell konfiguriert werden.
  • Starten der Gast Systeme von SR-IOV Host-Bus-Adapters (HBAs)
  • Libvirt bindings
  • Native Unterstützung für das Open Virtualization Format (OVF)
  • DMTF (Distributed Management Task Force) Standards für Virtualisierung und Cloud
  • Intelligente Fehlerbehebung um die Auswirkungen von Hardware-Fehlern zu minimieren
  • Unterstützung von Web-basierten Management mehrere Nutzer für unterschiedliche Anbieter wie z.B. Eucalyptus, Enomaly oder OpenNebula
  • Verbesserung der Skalierbarkeit des Managements für die Verwaltung von mehr als 1.000 Xen-Hosts
  • Zusammenschluss von günstigen lokalen Speicher durch die Integration von DRDB und Parallax
  • Oracle Cluster File System 2 (ocfs2) Integration

Quelle

Xen Cloud Platform



Die 11 besten Open Source Cloud Computing Projekte 2009

Auf Basis von John Willis's Cloud Computing Awards 2009 - "The Cloudies", hat Mark Hinkle seine Top 11 Open Source Cloud Computing Projekte 2009 ausgewählt. Da ich Open Source und Cloud Computing für unzertrennlich halte, stelle ich die Projekte - Chef, collectd, Eucalyptus, OpenNebula, openQRM, Puppet, RabbitMQ, Zenoss, Bitnami, ECP und Ubuntu Enterprise Cloud jeweils kurz vor.

Chef

Bei Chef handelt es sich um ein Integrations-Framework für das Konfigurationsmanagement aller Arten von IT Infrastrukturen, aber speziell für die Bereitstellung von Cloud Umgebungen. Dazu wird mittels eines Quellcodes beschrieben, wie jeder Teil der Infrastruktur aufgebaut werden soll. Diese Infrastrukturbeschreibung wird anschließend einem Server zugeordnet. Das Ergebnis ist eine voll automatisierte Infrastruktur.

Webseite: http://wiki.opscode.com/display/chef/Home

collectd

collectd ist ein Daemon, der Statistiken der System-Performance sammelt und sie in RRD-Dateien speichert. Der Daemon verfügt über eine Plugin Architektur, die es erlaubt Informationen von einer Vielzahl von Diensten und Servern wie Apache, memcache und Linux-VServer zu sammeln. collectd ist damit die Ideale Erweiterung für bereits vorhandene System Management-Tools.

Webseite: http://collectd.org

Eucalyptus

Eucalyptus steht für "Elastic Utility Computing Architecture Linking Your Programs To Useful Systems" und dient zum Erstellen einer Cloud Computing Infrastruktur auf Cluster Systeme. Die aktuelle Schnittstelle ist mit den Schnittstellen von Amazon EC2, S3 und EBS kompatible. Die Infrastruktur ist allerdings dafür gedacht, mehrere Client-Schnittstellen unterstützen. Eucalyptus basiert auf gängigen Linux-Tools und grundlegenden Web-Service-Technologien, die eine einfache Installation und Wartung ermöglichen.

Ich habe Eucalyptus bereits vor kurzem ausführlich vorgestellt. Der Artikel kann HIER nachgelesen werden.

Webseite: http://open.eucalyptus.com

OpenNebula

Mit OpenNebula kann jegliche Art von Cloud Umgebung aufgebaut werden. Darüber hinaus können damit virtuelle Infrastrukturen in einem Rechenzentrum oder einem Cluster verwaltet werden, oder eine lokale Infrastruktur mit einer Public Cloud Infratruktur verbunden und kombiniert werden, um damit hoch skalierbare Hosting Umgebungen zu entwickeln. OpenNebula unterstützt ebenfalls Public Clouds, indem Schnittstellen zur Verfügung stehen mit denen virtuelle Machinen, Speichersysteme und das Netzwerk verwaltet werden können.

Webseite: http://www.opennebula.org

openQRM

openQRM ist eine Open Source Lösung zur Verwaltung und dem automatisierten und skalierbaren Betrieb von Rechenzentren- und Cloud-Computing-Plattformen. Die Administration der physikalischen Server und der virtuellen Maschinen erfolgt dabei in einer übergreifenden zentralen Managementkonsole. Mit einer Snapshot-Funktion können Serversysteme dupliziert und Backup/Restore, sowie Server-Versionierung und eine dynamische Anpassung des Speicherplatzes vorgenommen werden.

Webseite: http://www.openqrm.com

Puppet

Puppet ist ein Model-Driven Open Source-Framework für den automatisierten Aufbau und die Konfiguration von Servern. Mit Puppet können administrative Aufgaben wie z.B. das Hinzufügen von Benutzern, die Installation von Software oder die Aktualisierung der Serverkonfiguration auf vielen unterschiedlichen Arten von Systemen vorgenommen werden. Der Clou hierbei ist allerdings, dass immer derselbe Code verwendet werden kann, obgleich die Systeme auf völlig unterschiedlichen Betriebssystemen laufen.

Webseite: http://reductivelabs.com/products/puppet

RabbitMQ

RabbitMQ is ein Enterprise Messaging System welches auf dem AMQP Standard aufsetzt. AMQP ist ein Standard, mit dem Middleware Systeme, untereinander Nachrichten austauschen können.

Webseite: http://www.rabbitmq.com

Zenoss

Zenoss dient zur Überwachung der Amazon Web Services und vielen weiteren Arten von Cloud Computing Umgebungen und virtuellen Infrastrukturen.

Webseite: http://community.zenoss.org/index.jspa

Bitnami

Bitnami vereinfacht die Bereitstellung von Web Anwendungen, sowohl virtuell als auch in einer Cloud. Jeder BitNami Stack beinhaltet eine Anwendung, die mit jeder von ihr benötigten Software so ausgestattet ist um vollständig ausgeführt zu werden. BitNami Stacks sind kostenlos als gewöhnliche Installationsroutinen, virtuelle Machine Images und Cloud Templates erhältlich. Systeme die z.B. BitNami Anwendungen verwenden sind u.a. Drupal, Joomla!, Wordpress, SugarCRM, Alfresco, Redmine und Subversion.

Webseite: http://www.bitnami.org

Enomaly’s Elastic Computing Platform (ECP)

ECP ist eine programmierbare virtuelle Cloud Infrastruktur für kleine, mittlere und große Unternehmen. Es unterstützt beim Design, Bereitstellen und Verwalten von virtuellen Anwendungen innerhalb einer Cloud. Weitere Funktionen sind die automatische Skalierung von virtuellen Maschinen, Load Balancing, Systemanalysse, sowie die Konfiguration und Optimierung der Cloud Kapazitäten.

Webseite: http://src.enomaly.com

Ubuntu Enterprise Cloud

Die Ubuntu Enterprise Cloud (UEC) ist in der Ubuntu Server Edition enthalten und beinhaltet eine Vielzahl an Open Source Projekten wie z.B. Eucalyptus. Anwendern steht damit die Möglichkeit offen eine eigene Private Cloud aufzusetzen.

Ein Tutorial zum Einrichten einer eigenen Private Cloud mit der Ubuntu Enterprise Cloud habe ich gestern HIER veröffentlicht.

Webseite: http://www.ubuntu.com/cloud

Quelle

Mark Hinkle
John Willis



Erste Schritte mit der Ubuntu Enterprise Cloud

Das Eucalyptus System kann auf viele unterschiedliche Umgebungen beliebig angepasst werden. Diese Installations-Anleitung zeigt die Einrichtung einer Privat Cloud auf Basis von Eucalyptus mit der Ubuntu Enterprise Cloud.

Ziel dieses Tutorials

Dieses Tutorial beschreibt die Installation, Konfiguration und Registierung, sowie weitere Schritte für die Arbeit mit einer grundlegenden Eucalyptus Einrichtung. Am Ende haben wir eine Cloud mit einem "Front-End" Controller und einem Knoten, auf dem mehrere Instanzen von Virtual Machines ausgeführt werden können, vollständig eingerichtet. Siehe dazu die Schritte 1 - 3.

In den Schritten 4 - 6 lernen wir die ersten Schritte für die Einrichtung einer Private Cloud und wie diese z.B. mit der RightScale Cloud Management Platform verbunden werden kann.

  • Schritt 1: Die Voraussetzungen
  • Schritt 2: Installation & Konfiguration
  • Schritt 3: Registrierung der Eucalyptus Komponenten
  • Schritt 4: Erster Login
  • Schritt 5: Erstellen eines Virtual Machine Image
  • Schritt 6: Starten eines Images

1. Schritt: Die Voraussetzungen

Das Eucalyptus System hat drei grundlegende Bestandteile:

  • eucalyptus-cloud: Beinhaltet den Cloud Controller (Front-End Services) und das Walrus Speichersystem.

  • eucalyptus-cc : Beinhaltet den Cluster Controller der für das virtuelle Netzwerk zuständig ist.

  • eucalyptus-nc: Beinhaltet den Node Controller zur Verwaltung der einzelnen Knoten, der mit der KVM (Kernel basierende Virtual Machine) kommuniziert und die jeweiligen Virtual Machines verwaltet.

Eine einfache Eucalyptus Umgebung besteht aus zwei Systemen, einem Front-End und einem Node. Das Front-End ist für eucalyptus-cloud und eucalyptus-cc zuständig. In einer komplexeren Umgebung mit mehreren Systemen können/ sollten die oben genannten Teile des Front-Ends voneinander getrennt betrieben werden. Da die Kommunikation vollständig über das Netzwerk erfolgt, ist diese Separierung einfach vorzunehmen.

Das folgende Diagramm zeigt einen einfachen Aufbau einer Eucalyptus Umgebung:

Vor der Installation der Pakete gibt es ein paar Voraussetzungen die erfüllt sein müssen, damit am Ende ein voll funktionsfähiges Eucalyptus System vorhanden ist. Zunächst muss das Front-End in der Lage sein E-Mails zu verschicken. Die Administrations-Tools von Eucalyptus nutzen E-Mails um den Administrator zu benachrichtigen, das er die Anmeldeinformationen von Benutzern prüfen muss. Dazu sollte Postfix installiert werden und als 'mailhost' der 'localhost' eingetragen werden (z.B. als Eintrag in die /etc/hosts).

Auf dem Node auf welchem von Eucalyptus die Virtual Machines ausgeführt werden, muss die erste Netzwerkschnittstelle als Bridge (BR0) konfiguriert werden. Sie dazu (Ubuntu Server Guide Bridging - in Englisch). Dieser Bridge fügt Eucalyptus für jede vorhandene Virtual Machine eine virtuelle Netzwerkschnittstelle (Virtual Network Interfaces) hinzu, bevor die Netzwerkverbindung einer Virtual Machine aktiviert wird.

Des Weiteren benötigt Eucalyptus einen DHCP Server der automatisch IP-Adressen vergibt. Ab dem Zeitpunkt wo die Virtual Machines über die Bridge mit dem lokalen Netzwerk verbunden sind, führen sie ihren lokalen DHCP Client aus, um eine IP-Adresse zu erhalten.

Auf jedem Host der einen Eucalyptus Client nutzt, sollten die Amazon Elastic Compute Cloud (EC2) API und AMI Tools installiert werden. Dafür wird folgendes benötigt:

http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-30349.zip
http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.3-26357.zip

Damit die ec2-ami-tools einwandfrei funktionieren müssen zusätzlich die Pakete ruby, libopenssl-ruby und curl installiert werden.

Für den Zugriff der EC2-ami-Tools auf die Meta-Daten (wie z.b. EC2-bundle-vol), muss folgender Eintrag vorgenommen werden. Bei der CC_IP handelt es sich um die IP-Adresse des Rechners auf dem Eucalyptus-cc ausgeführt wird.

vi ec2ami/lib/ec2/amitools/instance-data.rb
(set META_DATA_URL="http://:8773/latest/meta-data")

  • Ports: Um auf Eucalyptus auch hinter einer Firewall zugreifen zu können muss der Port 8773 geöffnet werden. Das ist z.B. dann der Fall, wenn sich die EC2- und AMI-Tools sowie die Eucalyptus Cloud auf unterschiedlichen Seiten der Firewall befinden. Wenn das Eucalyptus System mit einer Cloud Management Platform verbunden werden soll, müssen zusätzlich die Ports 8773 und 8443 geöffnet werden.

Schritt 2: Installation & Konfiguration

Zuerst werden die eucalyptus-cloud und eucalyptus-cc Pakete auf der Front-End Machine installiert.

sudo apt-get install eucalyptus-cloud eucalyptus-cc

Anschließend erfolgt die Installation des eucalyptus-nc Pakets auf jedem Node.

sudo apt-get install eucalyptus-nc

Am Ende wird der eucalyptus-nc Service auf dem Node gestoppt und die /etc/eucalyptus/eucalyptus.conf editiert. In der eucalyptus.conf erhält die Bridge den Namen der ersten Netzwerkschnittstelle. Danach wird der eucalyptus-nc Service wieder gestartet.

Die oben beschriebenen Schritte können wie folgt umgesetzt werden:

sudo /etc/init.d/eucalyptus-nc stop
sudo vi /etc/eucalyptus/eucalyptus.conf
(set VNET_BRIDGE="br0")
sudo /etc/init.d/eucalyptus-nc start

Das folgende Diagramm zeigt, wie die Umgebung danach aussehen sollte:

Das Netzwerk sollte außerdem so konfiguriert werden, dass der IPv4 Datenverkehr von den IPv6 Ports weitergeleitet wird, da das Eucalyptus Web-Frontend standardmäßig IPv6 verwendet.

sudo vi /etc/sysctl.conf
(uncomment net.ipv4.ip_forward=1)
sudo sysctl -p

Schritt 3: Registrierung der Eucalyptus Komponenten

Eucalyptus setzt voraus, das jeder Node innerhalb des Systems zu einem Cluster gehört. Ein Cluster wiederum gehört zu einer Cloud. Auf jedem Node wird eine Kopie von eucalyptus-nc ausgeführt. Genauso muss auf jedem Cluster eine Kopie von eucalytpus-cc ausgeführt werden. In unserem Beispiel wird der eucalytpus-cc auf der selben Maschine ausgeführt wie der Cloud Controller (eucalyptus-clc). Diese Komponenten müssen sich vor dem Start des Systems nun gegenseitig registrieren.

Für die Registrierung eines Cluster wird der folgende Befehl benötigt:

sudo euca_conf -addcluster localhost

Dabei entspricht dem Namen des Clusters, den die Benutzer sehen werden. Es handelt sich dabei um einen reinen logischen Namen, der nur lokal zu Eucalyptus gehört und mit einer Verfügbarkeitszone übereinstimmt, wie sie bei den Client-Tools angezeigt wird.

Um nun einen Node bei einem Cluster zu registrieren, ist der folgende Befehl notwendig.

sudo euca_conf -addnode

Später können weitere Nodes - auf denen eine Kopie von eucalyptus-nc ausgeführt wird - hinzugefügt werden, indem der obige Befehl erneut für jeden Node ausgeführt wird.

Schritt 4: Erster Login

Nach dem ersten Start von Eucalyptus muss die Administrationsumgebung der Cloud eingerichtet werden. Dazu öffnen wir im Webbrowser folgende UR:

https://[front-end-ip-address]:8443

Mit den Standardzugangsdaten Benutzername: admin und Passwort: admin erfolgt die erste Anmeldung, bei der das Passwort geändert werden muss. Nun folgen wir den Anweisungen auf dem Bildschirm. Ist die Konfiguration abgeschlossen klicken wir auf den Reiter credentials und anschließend auf Download Certificate.

Wichtig ist hierbei zu beachten, dass wir eine sichere Verbindung nutzen, also "https" anstatt "http". Wir erhalten eine Warnung auf Grund des Sicherheitszertifikats. Dafür müssen wir eine Ausnahme eintragen, um die Seite sehen zu können. Wird für diese Seite keine Ausnahme eingetragen, kann die Konfigurationsseite von Eucalyptus nicht angezeigt werden.

Jetzt müssen wir mittels X.509 Zertifikaten die EC2 API und AMI Tools auf unserem Server wie folgt einrichten.

mkdir ~/.euca
cd ~/.euca
mv ~/Desktop/euca2-admin-x509.zip ~/.euca
unzip euca2-admin-x509.zip

Die Installation kann mittels eines Skripts (ec2toolsinstall.sh) wie folgt durchgeführt werden.

cd ~/.euca
# Eucalyptus is not compatible with the newer ec2tools so we will
# install and remove them to insure all dependencies get installed
sudo apt-get install ec2-api-tools ec2-ami-tools
sudo apt-get remove ec2-api-tools ec2-ami-tools
wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-30349.zip
unzip ec2-api-tools-1.3-30349.zip
mv ec2-api-tools-1.3-30349 ec2
wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.3-26357.zip
unzip ec2-ami-tools-1.3-26357.zip
mv ec2-ami-tools-1.3-26357 ec2ami
echo 'export JAVA_HOME=/usr' >> eucarc
echo 'export EC2_HOME=~/.euca/ec2' >> eucarc
echo 'export EC2_AMITOOL_HOME=~/.euca/ec2ami' >> eucarc
echo 'export PATH=$PATH:$EC2_HOME/bin:$EC2_AMITOOL_HOME/bin' >> eucarc

Vergabe der Zugriffsrechte:

chmod +x ec2toolsinstall.sh

Das Skript sollte die Datei eucarc erzeugt haben, die noch noch ge-sourced werden muss.

source ~/.euca/eucarc

Optional: Registrierung bei RightScale

RightScale bietet eine Cloud-Management-Plattform für den Einsatz mit Eucalyptus. Diese Cloud Management Software wird als Service innerhalb der Amazon Web Services ausgeführt und muss daher die Möglichkeit haben, mit dem Eucalyptus Cloud Controller (eucalyptus-clc) der hinter einer Firewall steht, zu kommunizieren.

Daher müssen die Ports 8443 und 8773 (Richtung > Internet) geöffnet werden, damit RightScale mit der Eucalyptus Cloud kommunizieren kann.

Um unsere Eucalyptus Cloud bei RightScale zu registrieren, folgen wir den Anweisungen in der unten verlinkten Anleitung:

  • Registrieren der Eucalyptus Cloud bei RightScale.

Schritt 5: Erstellen eines Virtual Machine Image

Mit dem vmbuilder können wird ein Virtual Machine Image erstellen, das mit Eucalyptus gestartet werden kann.

Zunächst erstellen wir eine Datei mit dem Namen part, in der die Größe, der Typ und der Mountpunkt der Virtual Machine beschrieben ist:

root 400
/mnt/ephemeral 0 /dev/sda2
swap 1 /dev/sda3

Anschließend erstellen wir eine Skriptdatei mit dem Namen firstboot. Dieses Skript wird ausgeführt wenn das Image das erste Mal in Eucalyptus gestartet wird und installiert dabei einen SSH Daemon.

apt-get -y install openssh-server

Nun erstellen wir ein Image mit dem vmbuilder und übergeben beim Aufruf die beiden Skripte als Parameter.

sudo vmbuilder xen ubuntu --part ./part --firstboot ./firstboot

Mit Hilfe der EC2 API Tools packen und registrieren wir abschließend den Kernel, die Ramdisk und das Image.

mkdir kernel
ec2-bundle-image -i /boot/vmlinuz-2.6.28-11-generic -d ./kernel --kernel true
ec2-upload-bundle -b kernel -m ./kernel/vmlinuz-2.6.28-11-generic.manifest.xml
EKI=`ec2-register kernel/vmlinuz-2.6.28-11-generic.manifest.xml | awk '{print $2}'`
echo $EKI

mkdir ramdisk
ec2-bundle-image -i /boot/initrd.img-2.6.28-11-generic -d ./ramdisk --ramdisk true
ec2-upload-bundle -b ramdisk -m ramdisk/initrd.img-2.6.28-11-generic.manifest.xml
ERI=`ec2-register ramdisk/initrd.img-2.6.28-11-generic.manifest.xml | awk '{print $2}'`
echo $ERI

mkdir image
ec2-bundle-image -i ubuntu-xen/root.img -d ./image --kernel $EKI --ramdisk $ERI
ec2-upload-bundle -b image -m ./image/root.img.manifest.xml
EMI=`ec2-register image/root.img.manifest.xml | awk '{print $2}'`
echo $EMI

Der Kernel, die Ramdisk und das Image sind nun in der Eucalyptus Cloud und können dort genutzt werden.

Zur Bestätigung geben wir folgenden Befehl ein:

ec2-describe-images

Die Ausgabe sollte nun einen registrierten Kernel, Ramdisk und Image anzeigen, die als "available" gekennzeichnet sind.

Schritt 6: Starten eines Images

Bevor eine Instanz eines Image gestartet wird, müssen wir ein Schlüsselpaar (SSH Key) erstellen um uns nach dem Start als Root anmelden zu können. Der Schlüssel wird gespeichert, daher muss dieser Schritt nur einmal durchgeführt werden.

ec2-add-keypair mykey > ~/.euca/mykey.priv
chmod 0600 ~/.euca/mykey.priv

Falls wir unseren Key mal vergessen sollten, können wir uns mittels ec2-describe-keypairs eine Liste aller erstellten und auf dem System gespeicherten Schlüssel anzeigen lassen.

Nun können wir Instanzen von unserem registrierten Image wie folgt erstellen.

ec2-run-instances $EMI -k mykey

Während des ersten Starts einer Instanz erstellt das System einen Cache für das Image aus welchem die Instanz erstellt wird. Da die Images in der Regel sehr groß sind, kann dieser Vorgang etwas dauern.

Der aktuelle Status der Instanz kann mit folgendem Befehl abgefragt werden.

ec2-describe-instances

Die Ausgabe zeigt die aktuellen Informationen und den Status der Instanz. Während des ersten Starts sollte sich die Instanz im Status "pending" befinden. Ist die Instanz gestartet, sollte der Status auf "running" wechseln. Nachdem die Instanz über DHCP eine IP-Adresse erhalten hat können wir uns mittels des oben generierten SSH Keys mit der Instanz verbinden.

ssh -i ~/.euca/mykey.priv root@

Die Umgebung der Eucalyptus Cloud sollte nun diesem Diagramm entsprechen.

Weitere Informationen

  • Log Dateien: /var/log/eucalyptus
  • Konfigurationsdateien: /etc/eucalyptus
  • Init Skripte: /etc/init.d/eucalyptus-cc, /etc/init.d/eucalytpus-cloud und /etc/init.d/eucalytpus-nc
  • Datenbank: /var/lib/eucalyptus/db
  • Neustart (Anmerkung): Bei einem Neustart wird Eucalyptus nicht automatisch neu gestartet. Die Services müssen daher manuell geladen werden.
  • Umgebung (Anmerkung): Bevor der Client gestartet wird, sollten die Quellen unter ~/.euca/eucarc ge-sourced werden.

Quellen

Eucalyptus-Jaunty



Cloud Computing mit Open Source

Ein Vorteil von Cloud Computing besteht in dem einfachen gegenseitigen Bereitstellen und Nutzen von IT Services. Die Herausforderung ist aber, die Voraussetzungen zu schaffen eine einzelne Cloud mit anderen Clouds zusammenarbeiten zu lassen. Dazu sollten die kollaborierenden IT-Systeme über dieselben Sicherheitsanforderungen und robusten Infrastrukturen verfügen, wie es aus traditionellen IT Umgebungen bekannt ist. Auf Grund der Offenheit, Flexibilität, Interoperabilität und einem verringerten Risiko bzgl. eines Vendor lock-in, ist Open Source dafür die geeignete Technologie. Das führt dazu, dass sich Open Source mit Cloud Computing verschmelzen wird und "Open Source Clouds" in den nächsten Jahren zu einem großen Trend werden.

Es existieren bereits Cloud Computing Technologien auf Basis von Open Source, die ebenfalls schon eingesetzt werden. Diese möchte ich kurz vorstellen.

Linux Betriebssysteme

  • Die Ubuntu Enterprise Cloud kombiniert Ubuntu Linux mit Eucalyptus und diversen anderen Cloud Management Tools.
  • Red Hat Enterprise Linux, sowie andere Linux Distributionen können ebenfalls mit vorhanden Open Source Cloud Technologien kombiniert werden um Cloud Computing Umgebungen aufzubauen

Eucalyptus

  • Bei Eucalyptus handelt es sich um ein Forschungsprojekt von der University of California in Santa Barbara. Eucalyptus enthält die Apache Axis2 Web Services Engine, den Mule Enterprise Service Bus, Rampart Security und die Libvirt Virtualisierung API. Eucalyptus verfügt darüber hinaus über seine eigene Umsetzung der Amazon-API.
  • Webseite: http://open.eucalyptus.com

Deltacloud

  • Im September 2009 wurde durch Red Hat das Deltacloud Projekt gegründet. Die Idee hinter dem Projekt ist die einfache Integration von Public und Private Clouds. Deltacloud stellt eine gemeinsame auf REST basierende API zur Verfügung, um Amazon EC2 Instanzen und/oder Private Clouds auf Basis von VMware oder Red Hat Enterprise Linux miteinander zu verbinden. Das Deltacloud Portal dient zur Verwaltung aller Clouds die innerhalb einer Umgebung bereitgestellt werden. Geht es nach Red Hat, soll Deltacloud zu dem Standard des Cloud Computing werden.
  • Webseite: http://deltacloud.org

Nimbus

  • Bei Nimbus handelt es sich um ein Open Source Toolkit, mit dem Clustersystem in eine Infrastructure as a Service Umgebung verwandelt werden können. Mittels der EC2 Schnittstelle können sich Unternehmen mit der Public Cloud Infrastruktur von Amazon verbinden.
  • Webseite: http://www.nimbusproject.org

Virtual Machine Hypervisor

  • Viele Open Source Lösungen beinhalten den Xen Server von Citrix Systems.
  • Webseite: http://www.xen.org

Simple Cloud API

  • Die Simple Cloud API von Zend Technologies kann dafür verwendet werden, um von einem System aus auf mehrere Clouds zuzugreifen. Unterstützt werden u.a. GoGrid, IBM, Microsoft, Nirvanix Storage Delivery Network, and Rackspace Files
  • http://www.simplecloud.org

Damit sich Open Source Clouds durchsetzen, sind natürlich Standards notwendig. Darüber hinaus müssen sich ebenfalls Zuverlässigkeit und Sicherheit beweisen. Werden diese Herausforderungen gemeistert, befinden sich die Open Source Clouds auf einem guten Weg. Durch den Einsatz von Open Source können hier die Vorab-Investitionen minimiert werden. Zusätzlich behält jedes Unternehmen die vollständige Kontrolle über seine eigene Cloud, kann aber trotzdem die Infrastruktur durch shared Services von Public Clouds erweitern.



Eucalyptus – Eine Open Source Infrastruktur für die eigene Cloud

Beim Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus)[1][2] handelt es sich um eine Open Source Software Infrastruktur zum Aufbau von skalierbaren Utility Computing bzw. Cloud Computing Umgebungen für spezielle Clustersysteme oder einfachen miteinander verbundenen Arbeitsplatzrechnern.

Eucalyptus wurde als ein Forschungsprojekt am Computer Science department an der University of California Santa Barbara entwickelt und wird mittlerweile von der Eucalyptus Systems Inc. vermarktet. Die Software wird aber weiterhin als Open Source Projekt gepflegt und weiterentwickelt. Die Eucalyptus Systems Inc. bietet darüber hinaus lediglich weitere Dienstleitungen und Produkte sowie einen professionellen Support rund um Eucalyptus an.

Folgende Funktionen stellt Eucalyptus bereit:

- Kompatibilität mit den Schnittstellen zu Amazon EC2 und S3 (SOAP und REST).
- Unterstützung aller Virtual Machines die auf einem Xen Hypervisor oder einer KVM ausgeführt werden.
- Administrationstools für die System- und Benutzerverwaltung
- Die Möglichkeit mehrere Cluster für eine Cloud zu konfigurieren, wobei jeder einzelne Cluster über eine private interne IP-Adresse verfügt.

Architektur

Eucalyptus besteht aus fünf zusammenarbeitenden Hauptkomponenten um den angeforderten Cloud Service bereit zu stellen. Die Kommunikation zwischen den Komponenten erfolgt über gesicherte SOAP Nachrichten mittels WS-Security.

Cloud Controller (CLC)
Der Cloud Controller dient innerhalb einer Eucalyptus Cloud als Hauptkomponente für die Verwaltung des gesamten Systems und stellt den Administratoren und Benutzern einen zentralen Zugriffspunkt bereit. Die Kommunikation aller Clients mit dem Eucalyptus System erfolgt ausschließlich nur über den Cloud Controller anhand der auf SOAP oder REST basierenden API. Der Cloud Controller ist dafür zuständig, alle Anfragen zu der richtigen Komponente weiterzuleiten, diese zu sammeln und die Antwort der Komponente anschließend wieder zu dem Client zurück zu senden. Der Cloud Controller ist somit die öffentliche Schnittstelle einer Eucalyptus Cloud.

Cluster Controller (CC)
Der Cluster Controller ist innerhalb des Eucalyptus Systems für die Verwaltung des virtuellen Netzwerks zuständig. Der Cloud Controller erhält alle Anfragen auf Basis seiner SOAP oder REST Schnittstellen. Der Cloud Controller erhält alle Informationen über die vorhandenen Node Controllers des Eucalyptus Systems und ist für die Kontrolle des Lebenszyklus jedes einzelnen verantwortlich. Er leitet alle Anfragen an die Node Controller mit verfügbaren Ressourcen weiter um damit virtuelle Instanzen zu starten.

Node Controller (NC)
Ein Node Controller steuert das Betriebssystem und den zugehörigen Hypervisor eines Rechners (Node) im Eucalyptus System. Auf jeder physikalischen Maschine die eine durch den Cluster Controller instantiierte virtuelle Instanz auf Grund einer Anfrage beherbergt, muss eine Instanz eines Node Controller vorhanden sein.

Walrus (W)
Walrus ist für die Zugriffsverwaltung auf den Speicherdienst innerhalb eines Eucalyptus Systems zuständig. Walrus erhält die Anfragen über seine SOAP oder REST Schnittstelle.

Storage Controller (SC)
Der Storage Controller verwaltet den Speicherdienst innerhalb eines Eucalyptus Systems und verfügt über eine Schnittstelle zu Amazon's S3 Dienst. Der Storage Controller arbeit in Verbindung mit Walrus und wird für die Speicherung und den Zugriff auf die Images der Virtual Machines, die Kernel Images, die RAM Disk Images und die Daten der Benutzer verwendet. Die Images der Virtual Machines können rein privat oder öffentlich zugänglich gemacht werden und können dabei komprimiert und verschlüsselt gespeichert werden. Die Images werden lediglich entschlüsselt, wenn ein Node eine neue virtuelle Instanz starten muss und dazu einen Zugriff auf das Image benötigt.

Ein Eucalyptus System vereint und verwaltet Ressourcen von Single-Cluster als auch Multi-Cluster Systemen. Dabei besteht ein Cluster aus einer Gruppe von Rechnern, die alle mit dem selben LAN verbunden sind. Zu jedem Cluster kann wiederum einer aber auch mehrere Node Controller gehören, die für die Verwaltung der Instantiierung und Beendigung der virtuellen Instanzen verantwortlich sind.

Wie in Abbildung 1 illustriert, besteht ein Single-Cluster aus mindestens zwei Maschinen. Auf dem einen werden der Cluster Controller, der Storage Controller und der Cloud Controller ausgeführt, auf dem anderen der Node Controller. Diese Art der Konfiguration ist vor allem für Experimente und schnelle Konfigurationen geeignet. Die dargestellte Konfiguration könnte ebenfalls auf einer einzigen Maschine implementiert werden. Allerdings ist dafür eine äußerst leistungsstarke Hardware notwendig!


Abbildung 1: Topologie einer Single-Cluster Eucalyptus Installation [2]

Wie in Abbildung 2 dargestellt, kann bei einem Multi-Cluster jede Komponente (CC, SC, NC, und CLC) auf einer separaten Maschine ausgeführt werden. Dies sollte die bevorzugte Art und Weise sein das Eucalyptus System zu konfigurieren, wenn damit ernsthaft gearbeitet werden soll. Mit einem Multi-Cluster kann zudem die Performance erhöht werden, indem einem Controller die passende Maschine zugewiesen wird. Zum Beispiel sollte der Cloud Controller auf einer Maschine mit einer schnellen CPU ausgeführt werden. Im Allgemeinen bringt die Entscheidung für einen Multi-Cluster eine höhere Verfügbarkeit, sowie eine bessere Lastverteilung und eine optimierte Verteilung der Ressourcen über alle Cluster. Das Clusterkonzept ist vergleichbar mit dem Konzept der Verfügbarkeitszonen der Amazon EC2. Dabei werden die Ressourcen über mehrere Verfügbarkeitszonen hinweg verteilt, damit ein Fehler in einer Zone nicht die Anwendung beeinträchtigt.


Abbildung 2: Topologie einer Multi-Cluster Eucalyptus Installation [2]

Folgende Hardwarevoraussetzungen müssen erfüllt sein, um darauf einen CC, CLC, Walrus oder SC auszuführen. [2]

Folgende Hardwarevoraussetzungen müssen erfüllt sein, um darauf einen NC auszuführen. [2]

Eucalyptus und die Ubuntu Enterprise Cloud

Bei der Ubuntu Enterprise Cloud (UEC) handelt es sich um eine Open Source Initiative von Ubuntu, um auf eine einfachere Art und Weise skalierbare Cloud Infrastrukturen auf Basis von Eucalyptus bereitzustellen und diese zu konfigurieren.

Mit der Ubuntu Enterprise Cloud können Public Clouds erstellt werden, welche Amazon's EC2 infrastructure nutzen. Es können damit aber genau so gut Private Clouds entwickelt werden, die auf der eigenen Infrastruktur im eigenen Rechenzentrum hinter der eigenen Firewall gehostet werden.

Vorteile von Eucalyptus

Bei Eucalyptus handelt es sich um eine Umgebung für Cloud Services, mit der Public Clouds auf Amazon's EC2 Infrastruktur bzw. Private Clouds im hauseigenen Rechenzentrum erstellt werden können. Die grundlegenden Vorteile sollen hier noch einmal kurz aufgeführt werden:

Open Source und Entwicklung
Eucalyptus wurde geschaffen, um die Kommunikation und Forschung von Cloud Computing Plattformen zu fördern. Der Quellcode ist frei verfügbar, was es ermöglicht die Plattform so zu erweitern, damit sie den eigenen Anforderungen entspricht. Eucalyptus wird zunehmend weiterentwickelt. Darüber hinaus ist die Aufnahme und Integration von Funktionswünschen und Verbesserungsvorschlägen sehr schnell.

Community
Eucalyptus verfügt über eine große Community die gerne bereit ist einander zu helfen. Über die Foren kann schnell Kontakt zu anderen Benutzern aufgenommen und Hilfe bezogen werden.

Public Cloud
Eucalyptus funktioniert einwandfrei auf Amazon's EC2 Framework und kann damit als Public Cloud eingesetzt werden.

Private Cloud
Eucalyptus kann auf der eigenen Infrastruktur im eigenen Rechenzentrum hinter der eigenen Firewall als Private Cloud eingesetzt werden. Dadurch ist die Kontrolle bzgl. der Sicherheit und der gesamten Umgebung in der eigenen Hand.

Portabilität
Auf Grund der Kompatibilität von Eucalyptus mit Amazon's EC2 API sowie der Flexibilität von Eucalyptus, können Anwendungen ohne großen Aufwand von einer Cloud in die andere migriert werden. Darüber hinaus besteht die Möglichkeit des Aufbaus von Hybrid Clouds, indem eine Private Cloud mit einer Public Cloud erweitert bzw. kombiniert wird.

Qualitativ durch Tests
Durch den Einsatz von Eucalyptus in Ubuntu's Enterprise Cloud findet tagtäglich ein weltweiter realer Test auf Basis von mehr als tausend Server-Instanzen statt.

Kommerzieller Support
Neben den Foren der Eucalyptus Community kann natürlich auch auf einen kommerziellen Support zurückgegriffen werden.

Quellen:
[1] Eucalyptus
[2] IBM developerWorks