Der Amazon EC2 Workflow

Die folgende Graphik verdeutlicht den grundsätzlichen Ablauf zum Verwenden von Amazon EC2.

  • 1. Zunächst wird ein AMI (Amazon Machine Image) von Grund auf neu, oder auf Basis eines bereits vorhandenen AMIs erstellt. Dieser Vorgang ist optional, da Instanzen aus bereits vorhandenen AMIs gestartet werden können, ohne diese vorab zu verändern.
  • 2. Für ein AMI das einen lokalen Instanzspeicher für sein Root Device verwendet, muss der Prozess zum bundlen und registrieren des AMIs erfolgen. Für ein AMI hingegen, dass ein Amazon EBS Volume verwendet, reicht es aus, den create Image Befehl auf einer bereits gestarteten Instanz auszuführen. Amazon EC2 gibt anschließend eine AMI ID zurück, wodurch auf Basis des AMI so viele Instanzen wie gewünscht gestartet werden können.
  • 3. Starten einer oder mehrerer Instanzen eines AMI.
  • 4. Verwalten und verwenden der Instanzen als wären es gewöhnliche Server.

Quelle



Amazon EC2 mit Ubuntu Images (erste Schritte)

Dieser Artikel beschreibt die Nutzung der offiziellen Ubuntu Images unter Amazon EC2.

Um die Ubuntu Server Edition unter den Amazon Web Services auszuführen, sind folgende Schritte notwendig.

  • Erstellen eines Amazon Web Services Account
  • Konfigurieren der Keys
  • Installation der Amazon EC2 API Tools
  • Instanziierung der Images
  • Konfiguration der Instanz

Continue reading “Amazon EC2 mit Ubuntu Images (erste Schritte)” »



Das Konzept der Amazon Virtual Private Cloud

Bei der Amazon Virtual Private Cloud (VPC) handelt es sich um eine sichere und lückelose Integrationsmöglichkeit zwischen der bereits vorhandenen IT Infrastruktur eines Unternehmens und der Amazon Cloud und dient zum Aufbau einer Hybrid Cloud. Mit Amazon VPC können Unternehmen ihre existierende Infrastruktur mit speziell isolierten AWS Ressourcen mittel eines Virtual Private Network (VPN) verbinden, um damit die Verwaltungsmögklichkeiten wie die Bereiche Sicherheit, Firewall und Intrusion Dection für die AWS Ressourcen zu erweitern.

Um die Amazon Virtual Private Cloud zu nutzen, muss zunächst der IP-Adressraum für die VPC festgelegt werden. Die IP-Adressen innerhalb dieses Adressraums sind privat und bilden ein Netzwerk das mittels paketbasierten Routing von anderen Netzwerken inkl. dem Internet vollständig isoliert ist.

Als nächstes müssen Subnetze erstellt werden, welche Segmente eines VPC IP-Adressraums sind. Damit können die Amazon EC2 Instanzen innerhalb des VPC separiert und sicher betrieben werden. Existiert mehr als ein Subnetz in einem VPC, werden diese mittels eines logischen Routers sternförmig (Stern-Topologie) miteinander verbunden.

Um sich mit der VPC zu verbinden, wird eine VPN Verbindung benötigt, die als VPN Tunnel zwischen der VPC und dem Rechenzentrum, dem Heimnetzwerk oder jeder anderen Co-Location dient. Dazu muss das eigene bestehende Netzwerk so konfiguriert werden, dass jeglicher VPC Datenverkehr zu dem Gateway geroutet wird, welches das Ende der VPN Verbindung darstellt.

Mit einer aktiven VPN Verbindung können anschließend Amazon EC2 Instanzen in einem VPC subnetz starten. Mit den entsprechenden Sicherheitsrichtlinen ist diese Instanz dann ebenfalls im eigenen Netzwerk sichtbar und kann von dort aus wie eine "lokale" Instanz genutzt werden.

VPC basierter Datenverkehr der für das Internet bestimmt ist, wird zunächst automatisch über das VPN in das eigene Netzwerk gerouted. Dort kann dieser von bereits vorhandenen Sicherheitssystemen, wie Firewalls, Intrusion Detection Systemen untersucht werden, bevor die Daten in das Internet weitergeleitet werden. Das ist dann besonders sinnvoll, wenn spezielle Hardware- und Softwaresysteme eingesetzt werden, um bestimmte Sicherheitsrichtlinien zu erfüllen.

Quelle



Die Amazon S3 Konsole

Mit der Amazon S3 Konsole hat Amazon seine AWS Management Console erweitert. Wie schon von den bisherigen Konsolen, wie z.B. der für EC2 bekannt, handelt es sich um eine Weboberfläche, mit der sämtliche Amazon S3 Ressourcen verwaltet werden können. Dazu gehören das Erstellen neuer Buckets sowie das Hochladen von Objekten.

Um die Amazon S3 Konsole zu nutzen, reicht es aus sich mit seinem AWS Benutzeraccount und dem dazugehörigen Passwort anzumelden. Die Access Key ID und der Secrect Access Key werden nicht benötigt, diese werden automatisch durch AWS im Hintergrund geladen.

Damit integriert die AWS Management Console mit Amazon S3, Amazon EC2, Amazon CloudFront, Amazon Elastic MapReduce und Amazon RDS nun fünf Services an einer zentralen Stelle.

Mit der Amazon S3 Konsole können weiterhin Ordner angelegt, sowie Objekte der Öffentlichkeit zugänglich gemacht werden. Ordner und Objekte die mit S3 Tools von einem Drittanbieter erstellt wurden, können mit der Konsole ebenfalls bearbeitet werden.

Die Amazon S3 Konsole ist unter http://console.aws.amazon.com/s3 zu finden.



Erstellen eines Image aus einem ISO (KVM)

Dieser Artikel beschreibt, wie mittels KVM und dem ISO Image eines Gast Betriebssystems das installiert werden soll, ein Root Dateiystem für Eucalyptus erstellt wird.

Voraussetzung

  • Funktionsfähige KVM Umgebung
  • Hardware Virtualisierung Unterstützung auf dem System (Hardware-assisted virtualization) ist empfehlenswert, da qemu genutzt werden sollte.

Continue reading “Erstellen eines Image aus einem ISO (KVM)” »




Eucalyptus: Die Größe von Images ändern (Variante 1)

Dieser Artikel beschreibt das Ändern der Größe eines bereits vorhandenen Images.

$ sudo fsck.ext3 -f IMAGE
$ sudo resize2fs IMAGE SIZE

Dabei handelt es sich bei "IMAGE" um den Namen der Image Datei und "SIZE" um die neue Größe der Datei. Hier muss darauf geachtet werden, dass ein G für GB - Gigabyte hinter der Größe steht.

Um z.B. die Größe des Image "ubuntu-9.04-i386.img" auf 8 Gigabyte zu ändern nutzen wir den Befehl:

$ sudo fsck.ext3 -f ubuntu-9.04-i386.img
$ sudo resize2fs ubuntu-9.04-i386.img 8G

Nun kann mit dem Befehl "euca-upload-image" das veränderte Image in die Eucalyptus Cloud hochgeladen und ausgeführt werden.

Sollte Eucalyptus so konfiguriert sein, dass die maximale Imagegröße 20 Gigabyte beträgt, sollte der Befehl "df -h" eine ähnliche Ausgabe erzeugen.

/dev/sda1 8G /
/dev/sda2 11G /mnt

Quelle



UEC: Zusammenstellen von Images für Ubuntu 9.10

Dieser Artikel beschreibt das Vorgehen (Bundling) für das Erstellen und die Registrierung von VM Images mit dem UEC Cloud Controller für Ubuntu 9.10. Dazu benötigen wir ein Image, dass von den Daily Builds heruntergeladen werden kann, verknüpfen alles miteinander und laden es in unsere Ubuntu Cloud.

1. Um den Vorgang von der Kommandozeile aus zu starten nutzen wird die folgenden Befehle. Hierbei wird automatisch ein UEC Image heruntergeladen.

TIMESTAMP=$(date +%Y%m%d%H%M%S)
RELEASE=karmic
ARCH=amd64 # Or this might be i386
[ $ARCH = "amd64" ] && IARCH=x86_64 || IARCH=i386
UEC_IMG=$RELEASE-server-uec-$ARCH
URL=http://uec-images.ubuntu.com/$RELEASE/current/
[ ! -e $UEC_IMG.tar.gz ] && wget $URL/$UEC_IMG.tar.gz # This may take a bit, depending on your connectivity

2. Als nächstes muss alles verpackt, hochgeladen und registriert werden. In dem Package cloud-utils befindet sich das Tool uec-publish-tarball. Mit diesem können die oben genannten Aktionen in einem Schritt durchgeführt werden. Weiterhin ist in den cloud-utils das Tool uec-publish-image vorhanden. Mit diesem kann direkt mit einem ungepackten Image gearbeitet werden.

uec-publish-tarball ${UEC_IMG}.tar.gz "${RELEASE}-${TIMESTAMP}" "${ARCH}"

Diese Schritte sind nur dann notwendig, wenn nicht das Tool uec-publish-tarball verwendet wird!

1. Entpacken des UEC Image Tarball

[ ! -e $UEC_IMG.img ] && tar -S -xzf $UEC_IMG.tar.gz

2. Zusammenstellen des Kernels

BUCKET_KERNEL="k-$TIMESTAMP"
UEC_KERNEL=$UEC_IMG-vmlinuz-virtual
euca-bundle-image -i $UEC_KERNEL -r $IARCH --kernel true
euca-upload-bundle -b $BUCKET_KERNEL -m /tmp/$UEC_KERNEL.manifest.xml
EKI=$(euca-register $BUCKET_KERNEL/$UEC_KERNEL.manifest.xml | grep "^IMAGE" | awk '{print $2}') && echo $EKI

3. Zusammenstellen der initrd (Wird nur benötigt, wenn keine Ramdisk vorhanden ist)

BUCKET_INITRD="r-$TIMESTAMP"
UEC_INITRD=$UEC_IMG-initrd-virtual
euca-bundle-image -i $UEC_INITRD -r $IARCH --ramdisk true
euca-upload-bundle -b $BUCKET_INITRD -m /tmp/$UEC_INITRD.manifest.xml
ERI=$(euca-register $BUCKET_INITRD/$UEC_INITRD.manifest.xml | grep "^IMAGE" | awk '{print $2}') && echo $ERI

4. Zusammenstellen des Images

BUCKET_IMAGE="i-$TIMESTAMP"
UEC_IMG=$RELEASE-server-uec-$ARCH
euca-bundle-image -i $UEC_IMG.img -r $IARCH --kernel $EKI ${ERI:+--ramdisk ${ERI}} # This will take a long time (~10m)
euca-upload-bundle -b $BUCKET_IMAGE -m /tmp/$UEC_IMG.img.manifest.xml
EMI=$(euca-register $BUCKET_IMAGE/$UEC_IMG.img.manifest.xml | grep "^IMAGE" | awk '{print $2}') && echo $EMI

3. Damit ist der Kernel und das Image in unsere Ubuntu Cloud (Eucalyptus) hochgeladen worden und kann nun genutzt werden.

euca-describe-images

Wir sollten einen registrierten Kernel sowie ein Image sehen, die als "available" markiert sind.

Mit dem anschließenden Befehl können wir das überprüfen.

Quelle



Haizea – Open Source Lease-Management

Was ist Haizea?


Bei Haizea handelt es sich um eine Open Source Lease-Management Architektur auf Basis von virtuellen Maschinen. Genauer gesagt ist Haizea eine Software mit der, in Kombination mit dem OpenNebula Virtual Infrastructure Manager, Xen, KVM oder VMWare Cluster verwaltet werden können. Haizea erlaubt zudem das Deployment unterschiedlicher "Miet"-Arten (lease) von instanziierten virtuellen Maschinen. Weiterhin verfügt Haizea über einen Simulationsmodus, in dem mit Scheduling-Algorithmen experimentiert werden kann, die speziell auf das Deployment von virtuellen Maschinen ausgerichtet sind, bzw. das Leasing abstrahieren.

Haizea ist ein Ressourcen Manager / Ressourcen Scheduler

Haizea ist eine Softwarekomponente, die eine Reihe von Computern - typischerweise einen Cluster - verwalten kann. Dabei ermöglicht sie Benutzern die exklusive Nutzung von Ressourcen, wobei die Anfrage an die Ressourcen unterschiedlich formuliert sein kann. Anfragen wären z.B. "Ich benötige genau zu diesem Zeitpunkt 10 Nodes mit je 1 Gigabyte Arbeitsspeicher." oder "Ich benötige morgen in der Zeit von 14.00 Uhr bis 16.00 Uhr 4 Nodes mit je 2 CPUs und 2 Gigabyte Arbeitsspeicher."

Haizea verwendet den Leasing-Ansatz

Die grundlegende Ressource Bereitstellung in Haizea wurde von dem bekannten Prinzip des Leasings abstrahiert. Ein Leasingverhältnis ist eine Form von Vertrag, bei dem sich eine Vertragspartei dazu verpflichtet, eine Reihe von Ressourcen (z.B. ein Auto), einer anderen Partei zur Verfügung zu stellen.

Dieser Ansatz wurde von Haizea adaptiert. Das bedeutet, wenn ein Benutzer Rechenressourcen bei Heizea anfordert, werden ihm diese im Sinne des Leasings bereitgestellt.

Haizea nutzt virtuelle Maschinen

Der Haizea Ansatz sieht die Nutzung von virtuellen Maschinen (VM) als das Optimum an, um Ressourcen auf Basis des Leasing-Prinzips zu bereitzustellen. Dazu sind Haizea's Scheduling-Algorithmen zur Verwaltung von virtuellen Maschinen ausgerichtet.

Haizea ist Open Source

Haizea wurde unter der Apache License 2.0 veröffentlicht.

Wozu dient Haizea?


Haizea kann auf zwei Arten verwendet werden. Zum einen als Standalone-Komponente, zum anderen als Scheduling-Backend für einen Virtual Infrastructure Manager wie z.B. OpenNebula.

Haizea zusammen mit OpenNebula verwenden

Haizea kann als Plugin für OpenNebula's Scheduling-Daemon verwendet werden. Mit OpenNebula können Ressourcen aus einem Pool von physikalischen Ressourcen dynamisch verteilt und neu zugeteilt werden. OpenNebula und Haizea ergänzen einander, indem OpenNebula für die Verarbeitung und Bereitstellung der Virtualisierung (Verwaltung von virtuellen Maschinen auf Basis von Xen, KVM und VMWare innerhalb eines Clusters) zuständig ist und Haizea das Scheduling übernimmt.

Haizea als Standalone-Komponente

In erster Linuie ist Haizea eine Ressourcen Management Komponente für virtuelle Maschinen, mit der Leasing-Anfragen entgegengenommen und Entscheidungen bzgl. des Scheduling getroffen werden können. Allerdings ist Haizea nicht in der Lage, diese getroffenen Entscheidungen zu delegieren.

Haizea ist z.B. in der Lage zu bestimmen, wann das Leasing einer bestimmten Anzahl von virtuellen Maschinen beginnt und wieder endet. Allerdings fehlt die Möglichkeit einem Virtual Machine Manager anzuweisen, diese Aktionen durchzuführen.

Haizea kann solche Anweisungen für sich selbst simulieren und ist daher im Standalone-Betrieb für die Scheduling-Forschung (Leasing, VMs) und die Simulation einer lang anhaltenden Arbeitslast (über Wochen und Monate) geeignet.

Funktionen von Haizea


Haizea unterstützt die folgenden Leasing-Arten:

  • Best-Effort Leasing: Die Leasing-Anfrage wird in einer Queue abgelegt bis Ressourcen verfügbar sind.
  • Advance Reservation Leasing: Das Leasing muss zu einem bestimmten Zeitpunkt beginnen.
  • Immediate Leasing: Das Leasing muss sofort oder überhaupt nicht beginnen.

Das Leasing erfordert eine einzelne virtuelle Maschine oder eine Gruppe von virtuellen Maschinen, die parallel ausgeführt werden.

Haizeas Scheduling Algorithmen verfügen über folgende Eigenschaften:

  • Explizite Zeitplanung zur Bereitstellung von virtuellen Maschinen, ohne den manuellen Eingriff eines Benutzers. Soll z.B. ein Leasing um 14:00 Uhr starten, erstellt Haizea einen Zeitplan für den Transfer der erforderlichen virtuellen Maschinen Images zu dem physikalischen Node auf welchem die virtuellen Maschinen ausgeführt werden sollen.
  • Verwenden der Suspend/Resume Funktion der virtuellen Maschinen, um höher priorisierten Leasing-Anfragen ihre Ressourcen zuteilen zu können. Weiterhin wird die Cold Migration von virtuellen Maschinen verwendet. Dabei wird eine angehaltene ("eingefrorene") virtuelle Maschine auf einen anderen Host migriert und dort anschließend wieder gestartet. Die Zeitplanung für eine Live-Migration ist derzeit in Arbeit.
  • Für Best-Effort Leasing-Anfragen wird eine First-Come First-Serve Queue inkl. Backfilling (aggressiv, konservativ, oder mit einer beliebigen Anzahl von Reservierungen) verwendet.

Quelle




Eucalyptus: Erstellen eines Image aus einem ISO (Xen)

Dieser Artikel beschreibt, wie mittels Xen und dem ISO Image eines Gast Betriebssystems das installiert werden soll, ein Root Dateiystem für Eucalyptus erstellt wird.

Voraussetzung

  • Hardware Virtualisierung Unterstützung auf dem System (Hardware-assisted virtualization)
  • Funktionsfähige Xen Umgebung (domU muss gestartet werden können)

Continue reading “Eucalyptus: Erstellen eines Image aus einem ISO (Xen)” »




Einrichten einer Para-virtualisierten Netzwerkschnittstelle in Eucalyptus

Dieser Artikel beschreibt das Einrichten einer Para-virtualisierten Netzwerkschnittstelle unter Eucalyptus. Die folgenden Anweisungen gelten für eine KVM basierte Eucalyptus Installation.

Für ein auf Xen basiertes Eucalyptus System muss die unten aufgeführte Datei gen_libvirt_xml entsprechend geändert werden. Continue reading “Einrichten einer Para-virtualisierten Netzwerkschnittstelle in Eucalyptus” »



Eucalyptus: Installation eines Tomcat in ein vorhandenes Image

Dieser Artikel beschreibt die Installation eines Tomcat Servlet Container in ein bereits vorhandenes Ubuntu Image.

Dafür muss zunächst das Image gemounted werden.

losetup /dev/loop5 root.img
mount /dev/loop5 temp-mnt

Im Anschluß muss ein JDK sowie ein Tomcat heruntergeladen und in das /opt Verzeichnis des Images gespeichert werden. Continue reading “Eucalyptus: Installation eines Tomcat in ein vorhandenes Image” »



UEC: Zusammenstellen von Images für Ubuntu 10.04

Dieser Artikel beschreibt das Vorgehen (Bundling) für das Erstellen und die Registrierung von VM Images mit dem UEC Cloud Controller für Ubuntu 10.04 LTS. Dazu benötigen wir ein Image, dass von den Daily Builds heruntergeladen werden kann, verknüpfen alles miteinander und laden es in unsere Ubuntu Cloud.

Um den Vorgang von der Kommandozeile aus zu starten nutzen wird die folgenden Befehle. Hierbei wird automatisch ein UEC Image heruntergeladen und bereitgestellt.

TIMESTAMP=$(date +%Y%m%d%H%M%S)
RELEASE=lucid
ARCH=amd64 # Or this might be i386
[ $ARCH = "amd64" ] && IARCH=x86_64 || IARCH=i386
UEC_IMG=$RELEASE-server-uec-$ARCH
URL=http://uec-images.ubuntu.com/$RELEASE/current/
[ ! -e $UEC_IMG.tar.gz ] && wget $URL/$UEC_IMG.tar.gz
uec-publish-tarball $UEC_IMG.tar.gz $RELEASE-$TIMESTAMP

Damit ist der Kernel und das Image in unsere Ubuntu Cloud (Eucalyptus) hochgeladen worden und kann nun genutzt werden.

Mit dem anschließenden Befehl können wir das überprüfen.

euca-describe-images

Wir sollten einen registrierten Kernel sowie ein Image sehen, die als "available" markiert sind.

Quelle



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: Mit VNC ein Image debuggen

Dieser Artikel beschreibt das Debugging mittels libvirt und VNC um Zugriff zu einer Instanz zu erhalten.

Achtung!!! Diese Methode dient lediglich zu Debugging Zwecken und ist nicht für den Produktivbetrieb vorgesehen! Die Sicherheit des Systems ist nicht gewährleistet solange die Kommunikation mit VNC nicht verschlüsselt ist sowie kein Passwort gesetzt wurde!

Zunächst erfolgt die Anmeldung auf dem Node Controller (NC), der für das Debbuging als Root genutzt werden soll.

Anschließend werden die Dateien "gen_libvirt_xml" oder "gen_kvm_libvirt_xml" (abhängig vom verwendeten Hypervisor) benötigt. Dieses sollten sich in der Regel unter "/usr/share/eucalyputs" befinden.

Nun muss in der Datei das folgende Tag gefunden werden.

< devices >

Vor dem schließenden Tag

< /devices >

muss der folgende Eintrag hinzugefügt werden.

< graphics type='vnc' port='-1' autoport='yes' keymap='en-us' listen='0.0.0.0' />

Nun muss eine Instanz gestartet werden. Wichtig hierbei ist, dass es sich um eine Instanz handelt, die auf dem Node Controller ausgeführt wird, der gerade angepasst wurde!

Auf dem Node Controller wird nun folgender Befehl ausgeführt:

virsh vncdisplay < instance id >

Als VNC Fensternummer sollte ein Rückgabewert ähnlich ":2" erscheinen. Zu dieser Nummer muss nun 5900 hinzuaddiert werden, also als Ergebnis 5902. Dabei handelt es sich um den VNC Port, auf dem die Instanz lauscht.

Nukn kann eine Verbindung zu der Instanz mit folgendem Befehl hergestellt werden:

xvncviewer < NC IP >:5902

Sobald die Instanz gedebugged wird, kann das Image angepasst und die korrigierte Version hochgeladen werden.

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



Cloud Computing Nutzen: Optimierung der eigenen IT-Infrastruktur

Der Großteil aller Unternehmen verfügt über eine eigene, in der Regel komplexe IT-Infrastruktur, die es zu verwalten gilt und den immer neuen und steigenden Anforderungen gerecht zu werden. Dadurch verlieren die meisten den Fokus auf die eigenen Kernkompetenzen, um sich mit genau diesen von ihren Mittbewerbern zu differenzieren um hieraus einen Vorteil zu erzielen.

Weiterhin werden enorme finanzielle und zeitliche Investitionen getätigt, um den Anforderungen an das laufende Geschäft durch das Verwalten, Vergrößern und Skalieren von Ressourcen und Kapazitäten zu erhöhen (Stichwort: Lastspitzen), wodurch sich die Produktivität z.B. für neue geschäftskritische Projekte verringert. An dieser Stelle dürfen ebenfalls nicht die Vorab-Investitionen vernachlässigt werden, die für den Aufbau der IT-Infrastruktur sowie dem laufenden Betrieb/ Wartung vorgenommen werden müssen.

Mit dem Einsatz von Cloud Computing Lösungen z.B. durch das Outsourcing interner IT-Anwendungen oder der Nutzung von Cloud Storage können externe Ressourcen damit effektiv und bedarfsgerecht genutzt werden und die oben genannten Kosten lassen sich damit minimieren.

Die Nutzung einer Cloud Computing Umgebung bei einem externen Anbieter muss vorab genau evaluiert werden, wobei viele Themen zu hinterfragen sind. Wie ist die Interoperabilität zwischen der IT-Infrastruktur des Anbieters und meiner eigenen. Kann ich meine bereits bestehende Infrastruktur ohne großen Aufwand und vor allem auf sicherem Weg und zuverlässig mit der des Anbieters verbinden und intergrieren? Kann ich meine aktuelle Anwendungsplattform weiterhin nutzen und welche Programmiersprachen/ Modelle und Betriebssysteme bietet der Anbieter? Wie ist die Expertise des Anbieters in dessen Cloud Umgebung ich meine Anwendungen betreiben möchte hinsichtlich einer verteilten, redundanten, hochverfügbaren und skalierbaren Infrastruktur? Verfügt der Anbieter über ein Sicherheitsmodell inkl. Risikomanagement und Disaster Recovery? Wie transparent sind die Verträge des Anbieters? Stichwort: Versteckte Kosten! Werden gesonderte Verfplichtungen mit dem Anbieter eingegangen oder müssen initial Investitionen vorgenommen werden und mögliche Anschaffungen zu finanzieren? Wie ist die Skalierbarkeit der Infrastruktur, d.h. wie schnell wird auf hohe (Lastspitzen) und geringe (Leerlauf) Nachfragen reagiert? Wie ist der Freiheitsgrad meiner Entwickler innerhalb der Infrastruktur des Anbieters. Können diese genau so arbeiten und schnell auf meine Unternehmensanforderungen reagieren, wie in der eigenen Infrastruktur?



UEC: Erstellen eines eigenen Image

Dieses Tutorial beschreibt das Erstellen von Images für die Ubuntu Enterprise Cloud mit Hilfe des vmbuilder utility. Dieses Image ist generisch und kann für jede Eucalyptus Cloud genutzt werden.

Zunächst erstellen wir eine Beschreibung zu einer Partition, hier mit dem Namen "part". Diese beinhaltet die Größe, den Typ sowie den Mountpoint der Partition unserer VM.

$ cat > part <

Im nächsten Schritt wird ein einfaches Skript mit dem Namen "firstboot" (entspricht ebenfalls dem Dateinamen) erstellt. Dieses wird das erste Mal ausgeführt, wenn das Image innerhalb von Eucalyptus gestartet wird um einen SSH Daemon zu installieren.

$ cat >firstboot <

Nun kann mit dem vmbuilder das Image erstellt werden. Dazu wird als Parameter das vorher erstellte Skript "firstboot" mit übergeben.

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

Als nächstes müssen wir einen Kernel, eine Ramdisk und natürlich das Image "bundlen", registieren und hochladen. Dazu verwenden wir die EC2 API Tools.

mkdir kernel
euca-bundle-image --image /boot/vmlinuz-$(uname -r) \
--destination ./kernel --kernel true
euca-upload-bundle --bucket kernel \
--manifest ./kernel/vmlinuz-$(uname -r).manifest.xml
EKI=`euca-register kernel/vmlinuz-$(uname -r).manifest.xml | awk '{print $2}'`
echo $EKI

mkdir ramdisk
sudo sh -c 'grep -q acpiphp /etc/initramfs-tools/modules ||
printf "#acpiphp needed for ebs\nacpiphp\n" > /etc/initramfs-tools/modules'
sudo mkinitramfs -o ./ramdisk/initrd.img-$(uname -r)
euca-bundle-image --image ./ramdisk/initrd.img-$(uname -r) \
--destination ./ramdisk --ramdisk true
euca-upload-bundle --bucket ramdisk \
--manifest ramdisk/initrd.img-$(uname -r).manifest.xml
ERI=`euca-register ramdisk/initrd.img-$(uname -r).manifest.xml | awk '{print $2}'`
echo $ERI

mkdir image
euca-bundle-image --image ubuntu-xen/root.img \
--destination ./image --kernel $EKI --ramdisk $ERI
euca-upload-bundle --bucket image --manifest ./image/root.img.manifest.xml
EMI=`euca-register image/root.img.manifest.xml | awk '{print $2}'`
echo $EMI

Die Shell Variablen in dem obigen Code Beispiel werden dazu benötigt, um die anschließende Instalaltion zu testen. Nun sollte der Kernel, die Ramdisk und das Image in Eucalyptus hochgeladen worden und betriebsbereit sein. Um das zu überprüfen nutzen wir den folgenden Befehl.

euca-describe-images

Wir sollten einen registierten Kernel, eine Ramdisk und das Image sehen, wobei alle als "available" gekennzeichnet sind.

Quelle