Ubuntu Enterprise Cloud im Test


    Tags: ,

    WolkenUbuntu Enterprise Cloud (UEC) ist eine Server-Plattform zum Aufbau und Betrieb von private oder public Clouds. Aufbauend auf den aktuellen Ubuntu 10.4 Server wird Eucalyptus ("Elastic Utility Computing Architecture Linking Your Programs To Useful Systems") verwendet. Diese aus einem universitären Projekt hervorgegangene freie Software wird zum einen als Service von dem gleichnamigen Startup betrieben, und ist außerdem als Paket für Ubuntu, RHEL, CentOS, openSUSE und Fedora verfügbar.

    Eucalyptus plus Xen, KVM, ESX

    Im Kern kann Eucalyptus verschiedene Hypervisor verwenden, um Systeme in der Cloud laufen zu lassen: Eucalyptus bevorzugt Xen, Ubuntu sieht KVM als Default vor, VMware ist in der kommerziellen Eucalyptus-Variante ebenfalls als „Motor“ verfügbar.

    UEC geht mit dem Cloudcomputing-Ansatz somit deutlich über klassischen Lösungen zur Server-Virtualisierung hinaus: Rechner-, Speicher -und Netzwerkressourcen werden von dem System gebündelt und transparent für das Hosting virtueller Maschinen zur Verfügung gestellt. Die vorhandenen Ressourcen lassen sich dabei flexibel nutzen und ändern.

    Die Besonderheit von UEC bzw. Eucalyptus ist dabei die weitgehende Anlehnung an den Cloud-Computing-Pionier Amazon: Alle wesentlichen Steuerungskommandos (EC2) sowie das Storage-Format (S3) sind kompatibel, so dass ein nahtloser Übergang von Amazon zur eigenen Wolke und umgekehrt möglich ist.

    Amazon dürfte auch beim Anspruch auf die Verwaltung der Workloads Vorbild gewesen sein: diese lassen sich tatsächlich „elastisch“ verwalten: Dynamische Zuweisung von IP-Adressen, Auswahl von Rechnerressourcen, nachträgliche Erweiterung von Speicherplatz usw.

    Architektur

    UEC/Eucalyptus besteht aus einer Reihe von Server- bzw. Steuerungskomponenten. Grundsätzlich unterschieden wird dabei zwischen der zentralen Steuerung einerseits sowie den Nodes andererseits, auf denen die eigentlichen VMs – Eucalyptus spricht hier von „Instances“ – laufen und welche die Wolke ausmachen.

    Die Steuerung besteht aus Cloud Controller (CLC), Cluster Controller (CC) sowie dem Storage Controller (SC). Die Architektur ist dabei hierarchisch aufgebaut:

    • Jeder Node gehört zu einem Cluster, jeder Cluster gehört zu einer Cloud.
    • Die Cloud wird vom CLC verwaltet, jeder Cluster vom CC.

    Die Ubuntu-Variante von Eucalyptus fügt dem System einen Image-Store hinzu: Im Walrus-Speichersystem kann lokal ein Repository von Images bzw. VMs verwaltet werden, auf welches das Cloudsystem dynamischen zugreifen kann, um VMs zu provisionieren sowie darauf Snapshots zu erstellen.

    UEC Architektur

    In einem typischen Setup werden die Controller auf einem Rechner zusammengefasst, der dann das sog. Front-End bildet. Sämtliche Komponenten können aber jeweils auf eigenen Rechnern betrieben werden. Die Nodes werden auf dedizierten Rechnern betrieben, welche hardwareseitig über Virtuali­sierungs­unter­stützung (Intel VT, AMD SVM) verfügen müssen.

    Ein typisches Minimal-Setup umfasst somit zwei Rechner (wobei für Test-Zwecke auch die Einrichtung eine Single-Server-Systems dokumentiert

    Installation der Wolke: teils stürmisch

    Welche Bedeutung Ubuntu dem Cloudcomputing-Paket beimisst, mag man daran ermessen, dass das Hauptmenü des Installationsprogramms direkt die Installation der Cloud anbietet. Dies macht es dem Administrator denkbar einfach, die Basis aufzusetzen: Auf dem Frontend-Rechner wird UEC als Controller mit allen benötigten Komponenten eingerichtet. Der Installer erfragt dabei vor allem, welche IP verwendet werden soll, welcher IP-Adressen-Bereich den Nodes zur Verfügung gestellt werden soll sowie welche Steuerungskomponenten (Controller) auf dem System einzurichten sind.

    UEC Installation

    Auf allen Nodes erfolgt die Installation über denselben Menüpunkt, jedoch nur mit der Option „Node controller“.

    Im Anschluss sollten die beteiligten Dienste auf allen Rechnern laufen. Nun ist der Zugriff über die Webadministration unter der IP des Controllers auf Port 8443 erreichbar.

    UEC suggeriert mit dem Installationsprozess eine Einfachheit, die das Ganze jedoch in der Praxis nicht hat. Insbesondere die eigentliche Inbetriebnahme der Nodes, welche eigentlich mit einem einzigen Kommando im entsprechenden Cluster registriert und damit nutzbar sein sollten, erwies sich bei unseren Tests als Hürde. Zum einen muss das Networking richtig konfiguriert werden – hier greifen die Voreinstellungen des Installers nicht immer korrekt. Zum anderen müssen die Security-Komponenten richtig aufgesetzt werden – alle Steuerungskommandos werden über X509-Zertifikate gesichert, diese gilt es im System zu registrieren und richtig anzuwenden.

    UEC Webadmin

    Besonderes Augenmerk sollte der Administrator dem Netzwerk-Setup schenken: UEC kennt vier Netzwerkmodi - SYSTEM, STATIC, MANAGED, MANAGE-NOVLAN. Dabei sehen SYSTEM und STATIC einen bereits im Netz vorhandenen DHCP-Server vor. Die Managed-Varianten dagegen implementieren einen eigenen DHCP-Server in der Cloud. Hier gilt es, dafür zu sorgen, dass keine Konflikte mit einem bereits im LAN vorhandenen DHCP-Server auftreten.

    Hilfreich ist dabei, dass Eucalyptus MAC-Adressen in einem bestimmten reservierten Bereich vergibt – dieser lässt sich dann gezielt im vorhandenen DHCP-Server von der Verwaltung ausklammern. Weiterhin zu beachten ist, dass in der Eucalyptus-Konfigdatei /etc/eucalyptus/eucalyptus.conf derselbe Netzwerkmodus eingestellt wird wie auf dem Controller, damit das System zusammenspielt.

    Inbetriebnahme

    Nachdem der erste Node eingerichtet und rebootet ist, kann die Wolke in Betrieb genommen werden. Es empfiehlt sich, zu prüfen, ob alle Dienste laufen und miteinander kommunizieren:

    cat /var/log/eucalyptus/registration.log

    2010-07-23 11:13:36+02:00 | 4577 -> Calling walrus Walrus 192.168.10.169

    2010-07-23 11:13:36+02:00 | 4578 -> Calling cluster cluster1 192.168.10.169

    2010-07-23 11:13:36+02:00 | 4579 -> Calling storage cluster1 storage 192.168.10.169

    2010-07-23 11:13:36+02:00 | 4578 -> Cluster cluster1 is already registered.

    2010-07-23 11:13:36+02:00 | 4577 -> Walrus 192.168.10.169 is already registered.

    2010-07-23 11:13:36+02:00 | 4579 -> SC for cluster1 is already registered.

    2010-07-23 11:13:44+02:00 | 4800 -> Calling node cluster1 node 192.168.122.1

    2010-07-23 11:13:44+02:00 | 4799 -> Calling node cluster1 node 192.168.10.169

    2010-07-23 11:13:44+02:00 | 4800 -> euca_conf --register-nodes returned 0

    Um den ersten Node in Betrieb zu nehmen, ist folgende Sequenz notwendig:

    Credentials abrufen und für den User einrichten:

    uecadmin@uec:~$ sudo euca_conf --get-credentials mycreds.zipunzip mycreds.zip
    ln -s eucarc .eucarc

    Node beim Cluster-Controller registrieren

    uecadmin@uec:~$ sudo euca_conf --register-nodes 192.168.10.226

    Ressourcen des Clusters prüfen:

    uecadmin@uec:~$ euca-describe-availability-zones verbose AVAILABILITYZONE cluster1 192.168.10.169
    AVAILABILITYZONE |- vm types free / max cpu ram disk
    AVAILABILITYZONE |- m1.small 0021 / 0024 1 192 2
    AVAILABILITYZONE |- c1.medium 0021 / 0024 1 256 5
    AVAILABILITYZONE |- m1.large 0009 / 0012 2 512 10
    AVAILABILITYZONE |- m1.xlarge 0009 / 0012 2 1024 20
    AVAILABILITYZONE |- c1.xlarge 0003 / 0006 4 2048 20

    Der Cluster meldet die Menge verfügbarer Ressourcen, dabei werden automatisch Availabilityzones gestaffelt nach Größenklassen von VMs gebildet.

    Mit jedem weiteren Node kann das UEC-System somit nahtlos skaliert werden, eine der sehr elementaren Eigenschaften eines Cloudsystems und sicherlich einer der großen Vorteile.

    Wolke ans Fliegen bringen

    Ubuntu möchte es den Administratoren einfach machen und bietet im Web-Admin auf dem Reiter „Store“ eine Reihe fertig vorbereiteter Images zum Download an. Per Klick werden diese heruntergeladen und im Storage abgelegt. Anschließend kann man sich das Kommando anzeigen lassen, mit dem sich das Image als VM starten lässt:

    euca-run-instances -k mykey emi-DFE11073

    Mit dem Kommando euca-describe-instances läßt sich der Administrator den Status der VM anzeigen:

    uecadmin@uec:~$ euca-describe-instances
    RESERVATION r-47FB07CB admin default
    INSTANCE i-4A060949 emi-39D4160B 192.168.10.172 192.168.10.242 running mykey 0 m1.small 2010-07-23T16:14:21.737Z cluster1 eki-AE9517D0 eri-17361927

    Jeder Administrator wird aber seine eigenen Images erstellen und betreiben wollen.

    Ein Eucalyptus-Image besteht aus den Komponenten:

    • VM image (*.img)

    • einem Xen-kompatiblen Pärchen aus Kernel und Ramdisk(xen-kernel/vmlinuz* und xen-kernel/initrd*)

    • einem KVM-kompatiblen Pärchen aus Kernel und ramdisk (kvm-kernel/vmlinuz* und kvm-kernel/initrd*).

    Für Übungszwecke kann man sich z.B. hier ein entsprechend vorbereitetes Paket herunterladen.

    Der Prozess der Image-Erstellung besteht aus mehreren Schritten:

    1. Bundle: Die Bestandteile müssen zu einem Bundle zusammengestellt werden

    2. Upload: Das Bundle wird als Image im Storage abgelegt

    3. Registrierung: Das Bundle wird im Cluster Controller registriert

    Dieser Vorgang wird für jeden Bestandteil – VM-Image, Kernel, Ramdisk – einzeln durchgeführt:

    uecadmin@uec:~$ euca-bundle-image -i euca-ubuntu-9.04-x86_64/kvm-kernel/vmlinuz-2.6.28-11-generic --kernel true
    uecadmin@uec:~$ euca-upload-bundle -b ubuntu-kernel-bucket -m /tmp/vmlinuz-2.6.28-11-generic.manifest.xml
    uecadmin@uec:~$ euca-register ubuntu-kernel-bucket/vmlinuz-2.6.28-11-generic.manifest.xml
    uecadmin@uec:~$ euca-upload-bundle -b ubuntu-kernel-bucket -m /tmp/vmlinuz-2.6.28-11-generic.manifest.xml
    uecadmin@uec:~$ euca-register ubuntu-kernel-bucket/vmlinuz-2.6.28-11-generic.manifest.xml
    uecadmin@uec:~$ euca-bundle-image -i euca-ubuntu-9.04-x86_64/kvm-kernel/initrd.img-2.6.28-11-generic --ramdisk true
    uecadmin@uec:~$ euca-upload-bundle -b ubuntu-ramdisk-bucket -m /tmp/initrd.img-2.6.28-11-generic.manifest.xml
    uecadmin@uec:~$ euca-register ubuntu-ramdisk-bucket/initrd.img-2.6.28-11-generic.manifest.xml
    uecadmin@uec:~$ euca-upload-bundle -b ubuntu-ramdisk-bucket -m /tmp/initrd.img-2.6.28-11-generic.manifest.xml
    uecadmin@uec:~$ euca-register ubuntu-ramdisk-bucket/initrd.img-2.6.28-11-generic.manifest.xml
    uecadmin@uec:~$ euca-bundle-image -i euca-ubuntu-9.04-x86_64/ubuntu.9-04.x86-64.img --kernel $EKI --ramdisk $ERI
    uecadmin@uec:~$ euca-upload-bundle -b ubuntu-image-bucket -m /tmp/ubuntu.9-04.x86-64.img.manifest.xml
    uecadmin@uec:~$ euca-register ubuntu-image-bucket/ubuntu.9-04.x86-64.img.manifest.xml

    Als nächstes kann man die erfolgreiche Registrierung prüfen mit

    uecadmin@uec:~$ euca-describe-images
    IMAGE ; emi-39D4160B ; ubuntu-image-bucket/ubuntu.9-04.x86-64.img.manifest.xmladmin ; available ; public ; x86_64 ; machine eki-AE9517D0 ; eri-17361927
    IMAGE ; emi-E12B1087 ; image-store-1279878322/image.manifest.xml ; admin ; available ; public ; x86_64 ; machine eki-F75010FE ; eri-0BDE1171
    IMAGE ; eki-F75010FE ; image-store-1279878322/kernel.manifest.xml ; admin ; available ; public ; x86_64 ; kernel
    IMAGE ; eri-0BDE1171 ; image-store-1279878322/ramdisk.manifest.xml ; admin ; available ; public ; x86_64 ; ramdisk

    Los geht es dann endlich mit dem Kommando zum Start:

    uecadmin@uec:~$ euca-run-instances -k mykey --kernel eki-AE9517D0 --ramdisk eri-17361927 emi-39D4160B

    Ggf. noch Zugriff auf das öffentliche Netz erteilen, mit ping testen und per SSH zur neuen VM verbinden:

    euca-authorize default -P tcp -p 22 -s 0.0.0.0/0
    ping 192.168.10.224
    ssh root@192.168.10.224

    Management

    Grundsätzlich sind mehrere Wege vorgesehen, um die Dienste und VMs in der Wolke zu verwalten:

    • Den vollständigen Funktionsumfang erhält man (nur) über die Amazon-kompatiblen euc2ools, die Bestandteil des Eucalyptus-Pakets von UEC sind

    • Eine GUI ist verfügbar über die Firefox-Extension Elasticfox (alternativ über den sehr ähnlichen Fork Hybridfox)

    • Die eigene Cloud lässt sich zudem über Tools von Drittanbietern registrieren und managen: Landscape von Canonical (Ubuntu) als hosted oder lokale Edition sowie in Kürze RightScale (www.rightscale.com)

    Fazit

    Elasticfox

    Das Konzept ist faszinierend: Ubuntu liefert mit UEC und Eucalyptus eine vollständige Plattform für Cloud-Computing, kostenlos und Open-Source. Der Betrieb erweist sich als stabil, das System lässt sich sehr gut skalieren und somit kann man sich vorstellen, dass dieses Modell künftig auch in Unternehmen Schule machen könnte. Als Pluspunkt darf dabei sicherlich die weitgehende Kompatibilität zu Amazon EC2/S3 zählen, welche eine Migration in beide Richtung zu einer einfachen Aufgabe macht und damit die Zukunftssicherheit gewährleistet.

    Ob das System derzeit für mehr als für Test- und Evaluierungszwecke taugt, darf jedoch fraglich erscheinen. Lediglich die Kommandozeilen-Tools sind vollständig – der Rest inklusive Elasticfox, dem Web-GUI sowie Hybridfox stellt eher ein Sammelsurium dar als eine vollständige und einheitliche Managementumgebung. Hier muss Canonical noch deutlich nachbessern, um gerade im Vergleich mit den großen Servervirtualisierungslösungen von Citrix, Red Hat und VMware Stand halten zu können.

    Ganz wichtig: für den Enterprise-Betrieb selbstverständliche Sicherheitsmechanismen für Failover, High Availability usw. fehlen und müssten „manuell“ im System aufgesetzt werden.

    Zudem ist der Setup-Prozess bei weitem nicht so einfach, wie das Marketing verspricht. Nach der Basis-Installation gilt es, die – vernünftige – Dokumentation intensiv zu studieren, bis sich ein erstes Erfolgserlebnis einstellt. Danach vergeht noch einiges mehr an Zeit, bis die weitergehenden Möglichkeiten – insbesondere bei den Security-Policies sowie bei der Umsetzung der Management-Konzepte (Zuteilung von Zonen, Ressourcen usw.) sowie beim Networking den Wünschen entsprechend umgesetzt sind.

    Insgesamt ist der Ansatz viel versprechend und sucht derzeit in der Opensource-Szene seinesgleichen.

    Links / Literatur

    UEC-Home: http://www.ubuntu.com/cloud
    Eucalyptus-Home: http://www.eucalyptus.com/
    UEC-Dokumentation: https://help.ubuntu.com/community/UEC
    Eucalyptus Beginner's Guide: http://cssoss.wordpress.com/2010/06/22/pdf-version-of-eucalyptus-beginners-guide-uec-edition/
    Elasticfox: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609
    Hybridfox: http://code.google.com/p/hybridfox/

    Keine Kommentare