PRAXIS I Workshop

Administration virtualisierter Infrastrukturen mit Archipel Inselverwaltung von Thorsten Scherf

Virtuelle Maschinen-Instanzen laufen heutzutage auf einer Vielzahl unterschiedlicher -Systeme. Ein einheitliches Management-Tool ist notwendig, um den Zoo an virtuellen Systemen und deren Hosts im Überblick zu behalten und entsprechend zu verwalten. Mit Archipel steht nun ein recht neues Tool dieser Gattung zur Verfügung, das durch seine administrationsfreundliche Oberfläche besticht. Dieser Workshop stellt die Fähigkeiten des Management-Werkzeugs vor und zeigt dessen Inbetriebnahme. Quelle: pixelio.de

eben dem Platzhirschen VMware eine ungesicherte wie auch mit TLS ge- zierung erfolgt wahlweise mittels eines N hat auch das Open Source-Umfeld schützte TCP-Verbindung übertragen. passenden SASL-Plug-Ins, beispielsweise viele sehr elegante und leistungsstarke Vir- Auch der Einsatz eines SSH-Tunnels ist Kerberos oder aber auch mit Hilfe von tualisierungswerkzeuge zu Tage gefördert. von Haus aus denkbar. Eine Authentifi- X.509-Zertifikaten. Die beiden Zugpferde sind hier sicherlich KVM (Kernel-based ) und . Daneben existieren jedoch weitere Physikalische Architektur Lösungen wie beispielsweise VirtualBox, OpenVZ oder auch -Container Physical Hypervisor Physical Hypervisor (LXC). Setzt ein Unternehmen nun un- Archipel Agent Archipel Agent terschiedliche Technologien ein, bedeutet dies im Umkehrschluss auch den Einsatz unterschiedlicher Management-Tools. Dass dies jedoch nicht zwangsläufig der Physical Hypervisor Physical Hypervisor Fall sein muss, ist spätestens seit Erscheinen des Virtualisierung-Frameworks be- Archipel Agent Archipel Agent kannt. Das Framework bringt diverse Trei- ber für den Zugriff auf die unterschied- lichsten Virtualisierungstechnologien von XMPP Hause aus mit [1] und gestattet somit ei- XMPP HTTP Server nen einheitlichen Zugriff auf virtuelle Maschinen unabhängig davon, auf wel- EJabberd Archipel GUI chem Hypervisor diese laufen.

Als Management-Tools stehen für libvirt XMPP () HTTP / HTTPS auf der Kommandozeile virsh und virt- install zum Verwalten und Erzeugen von virtuellen Maschinen-Instanzen zur Ver- User computer User computer User computer fügung und mit virt-manager existiert ein grafisches Frontend. Die Tools müssen Safari / Webkit Safari / Webkit Safari / Webkit dabei nicht zwingend auf dem jeweiligen Hypervisor installiert sein und ein Re- mote-Zugriff ist ohne weiteres möglich. Um die Daten zwischen der Workstation und dem Hypervisor zu übertragen, exis- tieren diverse Möglichkeiten: So lässt sich Bild 1: Bei Archipel kommen diverse OpenSource-Komponenten zum Einsatz. Die zentrale Rolle spielt dabei ein beispielsweise der IP-Traffic sowohl über XMPP-Server, der für die Echtzeit-Kommunikation zwischen den einzelnen Komponenten verantwortlich ist.

www.it-administrator.de August 2011 45 PRAXIS I Workshop

Dank der großen Flexibilität von libvirt Komponente, die auf jedem Hypervisor- # /etc/ejabberd/ejabberd.cfg kommt es in diversen anderen Virtualisie- System zu installieren ist und als eine Art {loglevel, 4}. rungs-Projekten zum Einsatz, so beispiels- Bindeglied zwischen dem XMPP-Server {hosts, [“rawhide.tuxgeek.de”,”tuxgeek.de”, ”localhost”]}. weise in oVirt [2] oder aber auch in Archipel und dem libvirt-Framework des Hypervi- {listen, [3]. Archipel ersetzt dabei die etwas ange- sors dient. Der Agent selbst kommuniziert [ {5222, ejabberd_c2s, [ staubte GTK+-Oberfläche des virt-mana- gar nicht mit dem Hypervisor sondern {access, c2s}, {shaper, c2s_shaper}, gers durch eine schicke und modere Cap- überlässt diese Aufgabe libvirt. Somit ist ein {max_stanza_size, 65536} puccino-basierte Oberfläche und fügt Zugriff auf sämtliche Hypervisoren mög- ]}, {5269, ejabberd_s2s_in, [ weitere Features, die beispielsweise virt-ma- lich, die libvirt unterstützt. Der Archipel- {shaper, s2s_shaper}, nager nicht besitzt, hinzu. Dank des JavaS- Client ist dabei die Komponente, die – {max_stanza_size, 131072} ]}, cript-basierten Frameworks, erfolgt der Zu- meistens zusammen mit dem XMPP-Ser- {5280, ejabberd_http, [ griff auf Archipel über nahezu jeden ver – auf einem zentralen Management- captcha, http_bind, beliebigen Webbrowser – eine zusätzliche Server läuft und die jedem zugreifenden http_poll, web_admin Anwendung oder eine lokale libvirt-Instal- Client eine hübsche Weboberfläche prä- ]} lation sind dabei nicht notwendig. sentiert. Der komplette Client ist dabei in ]}. {auth_method, internal}. Javascript geschrieben und basiert auf dem {shaper, normal, {maxrate, 1000}}. XMPP-Server als zentrale Strophe.js-Framework. Archipel erzeugt {shaper, fast, {maxrate, 50000}}. {max_fsm_queue, 1000}. Architektur-Komponente zur Weiterverarbeitung Cappuchino-Ob- {acl, local, {user_regexp, “”}}. {access, max_user_sessions, [{10, all}]}. Archipel besteht aus mehreren Kompo- jekte. Diese lassen sich dann mit nahezu {access, max_user_offline_messages, [{5000, nenten die untereinander über das bekann- jedem beliebigen Javascript fähigen Web- admin}, {100, all}]}. {access, local, [{allow, local}]}. te XMPP-Protokoll (ehemals Jabber) kom- brower abrufen. Bild 1 zeigt die Architektur {access, c2s, [{deny, blocked}, munizieren. Die Zustellung von Nach- des Archipel-Frameworks. {allow, all}]}. {access, c2s_shaper, [{none, admin}, richten findet somit nahezu in Echtzeit {normal, all}]}. statt. Zentrale Komponente der gesamten {access, s2s_shaper, [{fast, all}]}. Installation {access, announce, [{allow, admin}]}. Architekur ist ein XMPP-Server der als Kommt der ejabberd-Server als XMPP- {access, configure, [{allow, admin}]}. {access, muc_admin, [{allow, admin}]}. eine Art Nachrichtenzentrale agiert. Die Komponente zum Einsatz, so ist darauf zu {access, muc_create, [{allow, local}]}. Archipel-Entwickler empfehlen den Ein- achten, dass dieser die beiden Module {access, muc, [{allow, all}]}. {access, pubsub_createnode, [{allow, local}]}. satz des ejabberd-Servers, jedoch sollte “mod_admin_extra” und “ejabberd_ {access, register, [{allow, all}]}. auch jeder andere XMPP-Server funktio- xmlrpc” enthält. Ist dies nicht der Fall, müs- {language, “en”}. {modules, nieren. Die ejabberd-Software ist Bestand- sen Sie diese manuell nachliefern. Hierzu [ {mod_adhoc, []}, teil sämtlicher Linux-Distributionen und verwenden Sie die Sourcen der ejabberd- {mod_caps, []}, lässt sich somit recht einfach über den je- Module und das Erlang-XMLRPC-Archiv {mod_disco, []}, {mod_irc, []}, weiligen Paket-Manager installieren. und übersetzen diese. Unter Umständen {mod_http_bind, []}, sind noch die Dateisystem-Pfade im Ma- {mod_last, []}, {mod_muc, [ Über die Download-Seite von Archipel [4] kefile anzupassen, dies hängt von der ein- {access, muc}, stehen dann die beiden Komponenten Ar- gesetzten Linux-Distribution ab. Die resul- {access_create, muc_create}, {access_persistent, muc_create}, chipel-Agent und Archipel-Client zur Ver- tierenden beam-Dateien gehören dann in {access_admin, muc_admin} ]}, fügung. Beim Agent handel es sich um die das ebin-Verzeichnis des ejabberd-Servers {mod_offline, [{access_max_user_messages, (Listing 1 und Listing 2). max_user_offline_messages}]}, {mod_ping, []}, cd /usr/local/src {mod_privacy, []}, wget http://ejabberd.jabber.ru/files/ Hat dies soweit funktioniert, müssen Sie {mod_private, []}, contributions/xmlrpc-1.13-ipr2.tgz {mod_pubsub, [ -xzf xmlrpc-1.13-ipr2.tgz schließlich noch die Konfigurationsdatei {access_createnode, pubsub_createnode}, cd xmlrpc-1.13/src {last_item_cache, false}, make des XMPP-Servers anpassen. Hierbei han- ]}, cp - a ebin/*.beam /usr/lib/ejabberd/ebin/ delt es sich um die Datei /etc/ejabberd/ejab- {mod_register, [ {welcome_message, {“Welcome!”, berd.cfg. Wichtig ist hierbei, dass Sie den Listing 1: Installation des “Hi.\nWelcome to this XMPP lokalen Rechnernamen und die zusätzlich server.”}}, ejabberd_xmlrpc Moduls {ip_access, [{allow, “127.0.0.0/8”}, installierten ejabberd-Module korrekt an- {deny, “0.0.0.0/0”}]}, {access, register} geben. Listing 3 zeigt eine beispielhafte ]}, cd /usr/local/src Konfiguration (die ejabberd Default-Kon- {mod_roster, []}, svn checkout http://svn.process-one.net/ {mod_shared_roster,[]}, ejabberd-modules/ figuration wollte in unserem Praxis-Test {mod_stats, []}, cd mod_admin_extra/trunk/ nicht mit Archipel zusammenarbeiten). {mod_time, []}, ./build.sh {mod_vcard, []}, cp ebin/mod_admin_extra.beam {mod_version, []} /usr/lib/ejabberd/ebin/ Der Aufruf von /etc/init.d/ejabberd start ak- ]}. Listing 2: Installation des tiviert schließlich den Server. Sollten Fehler Listing 3: Die Konfigurationsdatei ejabberd_xmlrpc Moduls auftreten, so finden Sie die entsprechenden des XMPP-Servers Logeinträge in der Datei /var/log/ejabberd/

46 August 2011 Alle Listings zum Download auf www.it-administrator.de PRAXIS I Workshop

nutzen Sie entweder den letzten Night- lyBuild oder den letzten StableBuild [4]. Noch einfacher gelingt die Installation über den zentralen Python Package Index (PyPi) – dies setzt jedoch eine - Verbindung und das Paket python-setup- tools auf den Hypervisor-Systemen vo- raus. Über den Aufruf von easy_install archipel-agent installieren Sie dann den Ar- chipel-Agent auf dem lokalen System.

In der Konfigurationsdatei /etc/archipel/ar- chipel.conf müssen Sie wieder darauf ach- ten, dass der richtige Rechnername für Bild 2: Nach der Installation des Management-Systems steht dieses für erste Zugriffe bereit den lokalen Hypervisor und den zentralen XMPP-Server zum Einsatz kommen. ejabberd.log. Um die Installation des Servers “rawhide.tuxgeek.de” im Verzeichnis Auch das zuvor eingerichtete admin-Kon- abzuschließen legen Sie noch ein entspre- “/var/www/html/”. Das DocumentRoot to des XMPP-Servers geben Sie in der chendes admin-Konto an: des Webservers kann hier natürlich auch Datei an. Für das Berechtigungs- und Tag- wieder zwischen den einzelnen Linux- ging-System auf dem XMPP-Server rich- # ejabberdctl register admin Distributionen variieren. Alle in diesem ten Sie noch zwei PubSub-Nodes ein. {rawhide.tuxgeek.de} {password} Artikel vorgestellten Beispiele basieren auf Dies geschieht auf dem Hypervisor-Sys- einer Fedora 15-Installation. Zur Anmel- temen durch den Aufruf von: Den Rechnername und das Passwort pas- dung am Archipel-Management-System sen Sie dabei natürlich entsprechend an. geben Sie den oben erzeugten Admin- # archipel-tagnode —jid=admin@xmpp- Account an. Wichtig dabei ist, dass Sie den server —password=password —create Die Archipel-Client-Installation gestaltet Account mit Domänenname verwenden, # archipel-rolesnode sich um einiges einfacher. Hier laden Sie also beispielsweise [email protected]. Als —jid=admin@xmpp-server lediglich die gewünschte Version [4] he- Boch-Server nutzen Sie die URL http:// —password=password —create runter und entpacken diese in ein belie- Management-Server:5280/http-bind/. biges Verzeichnis. Wichtig ist, dass der Ein /etc/init.d/archipel startet schließlich Webserver Zugriff auf dieses Verzeichnis Einbindung der Hypervisoren den Agent-Dienst. Mögliche Fehlermel- erhält. Sollte auf dem Management-Sys- Ein Log-In in das System ist zu diesem dungen finden Sie der Logdatei /var/log/ tem ein aktiviertes SELinux zum Einsatz Zeitpunkt jedoch noch nicht sehr hilf- archipel/archipel.log. kommen, so ist nach dem Entpacken des reich, da natürlich noch die Hypervisor- Client-Archives zwingend der richtige Systeme fehlen. Ohne diese Systeme lassen Hypervisor-Management SELinux Context auf den Ordner zu set- sich natürlich auch keine virtuellen Ma- Nachdem die Installation sämtlicher Ar- zen, ansonsten kann der Webserver nicht schinen erzeugen. Für den Betrieb eines chipel-Komponenten abgeschlossen ist, be- auf die Dateien zugreifen und erzeugt ei- kommt üblicher weise eben- steht die nächste Aufgabe darin, die Hy- ne Vielzahl von AVC-Deny-Meldungen. falls ein Linux mit libvirt-Installation zum pervisor-Systeme auf dem Management- Den richtigen SELinux Context setzen Einsatz. Der gewünschte Hypervisor ist Node bekannt zu machen. Da bei Archipel Sie wie folgt: dann entsprechend hinzuzufügen, also bei- alles ein XMPP-Objekt (oder Jabber- Ob- spielsweise XEN, KVM, QEMU oder jekt) ist, sind natürlich auch die Hypervi- # chcon -R -t public_content_r LXC. Die einzelnen Abhängigkeiten sollte soren so zu behandeln, indem diese als re- /var/www/html/Archipel/ der Paket-Manager der eingesetzten Li- guläre XMPP-Kontakte dem Manage- nux-Distribution selbstständig auflösen. Hiermit ist die Installation des Manage- So benötigt ein KVM beispielsweise ein ment-Servers beendet. Ein Zugriff mittels QEMU als Hardware-Emulator sowie ei- eines Webbrowsers sollte zu diesem Zeit- nige weitere Python-Tools. punkt bereits möglich sein. Hierzu bauen Sie einfach eine HTTP-Verbindung zum Auf diesem System ist nun der Archipel- Management-Server auf. Das Archipel- Agent als eine Art Proxy zwischen dem Client-Installationsverzeichnis geben Sie XMPP-Server und der lokalen libvirt-In- dabei in der URL an – also beispielsweise stallation zu installieren. Auch hier geht http://rawhide.tuxgeek.de/Archipel/ für eine die Installation recht einfach vonstatten: Bild 3: Hypervisor-Systeme werden in Archipel als Installation des Clients auf dem Rechner Je nach Vorliebe und Experimentierfreude reguläre XMPP-Kontakte behandelt

www.it-administrator.de August 2011 47 PRAXIS I Workshop

Nach einem Stop des Archipel-Dienstes lässt sich die gewünschte VM nun in die Archipel-Datenbank importieren und taucht danach, neben dem Hypervisor, als regulärer XMPP-Kontakt in der Archi- pel-Weboberfläche auf:

# /etc/init.d/archipel stop * Stopping Archipel: [OK] # archipel-importvirtualmachine —file /var/lib/archipel/hypervi- sor.sqlite3 \ —uuid 7f0bbaae-8ac2-11e0-be38- 00216ab8187e — xmppserver=rawhide.tuxgeek.de \ —name webserver01 SUCCESS: Virtual machine webserver01 Bild 4: Als JIT-Name ist zwingend der String “Hypervisor” gefolgt vom Domänennamen zu verwenden has been inserted with JID \ 7f0bbaae-8ac2-11e0-be38- ment-System hinzugefügt werden. Nach Instanzen verfügen, so erkennt Archipel [email protected] dem Login klicken Sie dazu in der linken diese leider nicht automatisch. Glückli- # /etc/init.d/archipel start unteren Ecke auf das “+”-Zeichen um den cherweise bringt es aber ein Import- * Starting Archipel: [OK] ersten Hypervisor hinzuzufügen. Als JIT- Tool für diese Aufgabe mit. Dieses be- Name verwenden Sie hier Hypervisor@ nötigt zum einen die Deskriptor-Datei Da als Echtzeit-Protokoll zwischen allen hypervisor-fqdn (also etwa hypervisor@ der SQLite-Datenbank des Hypervisors beteiligten Archipel-Objekten das hv01.tuxgeek.de), zusätzlich ist die Angabe (üblicher weise /var/ lib/archipel/hyper- XMPP-Protokoll zum Einsatz kommt eines Alias-Namens möglich. Durch einen visor.sqlite3) und zum anderen die UU- (Bild 6), lässt sich jeder XMPP-fähige Klick auf das Symbol “New VM” in der IDs der zu importierenden virtuellen IM-Client zur Kommunikation mit den Icon-Leiste erzeugen Sie eine neue virtu- Systeme. Diese ermitteln Sie durch eine einzelnen Objekten verwenden. Bild 7 elle Maschine. Hierzu definieren Sie alle einfache libvirt-Abfrage. Mittels virsh zeigt ein Beispiel mit einem konfigurier- notwendigen Eigenschaften entsprechend, dumpxml {VMName} präsentiert libvirt ten Empathy-Client, der hier einfache also beispielsweise die Größe der virtuellen sämtliche Konfigurationsdaten der an- Status-Abfragen an die VM “webser- Disk, der Arbeitsspeicher, Boot-Medium gegebenen VM. Da an dieser Stelle je- ver01” sendet. Das Tool vnc-viewer stellt und Netzwerkkonfiguration. Libvirt stellt doch nur die uuid interessant ist, filtert schließlich eine Verbindung zum VNC- standardmäßig ein NAT-Gerät zur Konfi- grep diese entsprechend heraus: Server des Hypervisors her, um so einen guration zur Verfügung, aber natürlich be- grafischen Zugriff auf die virtuelle Ma- steht auch die Möglichkeit, eine Bridge # virsh dumpxml webserver01|grep -i schine zu bekommen. Beide Funktionen, einzurichten, sodass Sie die virtuellen Gäste uuid also VNC-Viewer und Chat-Client, sind direkt erreichen können. 7f0bbaae-8ac2-11e0-be38- jedoch auch im Archipel-Client selbst 00216ab8187e integriert. Besonders der Javascript-ba- Zur eigentlichen Installation des Betriebs- systems kommt üblicher Weise eine vir- tuelle CD zum Einsatz, oft in Form einer Image-Datei. Diese sucht Archipel im Ver- zeichnis “/vm/iso/”. Das Verzeichnis “/vm” sollte deshalb allen Hypervisor- Systemen zur Verfügung stehen. Dies ist auch deshalb notwendig, da im Verzeichnis “/vm/drives/” die Speicher-Backends der virtuellen Systeme liegen, bei einer Live- Migration zwischen zwei Hypervisor-Sys- temen müssen diese natürlich Zugriff hie- rauf haben.

Sollten die hinzugefügten Hypervisor- Systeme bereits über virtuelle System- Bild 5: Nach erfolgreichem Import der virtuellen Maschine lassen sich sämtliche Eigenschaften nun über Archipel definieren

48 August 2011 www.it-administrator.de PRAXIS I Workshop

Über eine eingebaute Maps-Kar- XMPP Architektur te lassen sich die Archipel-Objekte geo- graphisch positionieren. Eine Migration Virtual machine Virtual machine von Objekten soll dann auch über das Verschieben auf der Landkarte möglich vm1@fqdn/hypA vm2@fqdn/hypB sein, in der aktuellen Version hat diese Funktion aber leider noch nicht funk- tioniert. Ein weiteres nützliches Feature Hypervisor XMPP von Archipel ist die Möglichkeit, ein ein- hypA@fqdn/hostnameB User zelnes oder auch mehrere Kommandos XMPP XMPPXMMPP Server r XMPP an eine Vielzahl von Systemen abzuset- Hypervisor fqdn user2@fqdn/Psi zen. Diese lassen sich nämlich in be- hypA@fqdn/hostnameA stimmte Gruppen eingliedern, etwa in XMPP (bosh) die Gruppe Webserver. Kommandos, wie beispielsweise das Starten, Stoppen oder User User admin@fqdn/ eine Migration, lassen dann auf sämtliche ArchipelGUI user1@fqdnArchipelGUI Objekte dieser Gruppe anwenden.

Fazit Abschließend lässt sich festhalten, dass Bild 6: Alle Archipel-Komponenten kommunizieren über das Protokoll XMPP miteinander... Archipel ein interessantes Tool ist, wenn es um die Verwaltung von vielen virtu- sierte VNC-Viewer innerhalb des Web- Clustering der Umgebung. Leider bezieht ellen Maschinen und deren Hypervisor- browsers sieht sehr schick aus. sich dieser Punkt bisher lediglich auf den Systemen geht. Die schicke und anspre- XMPP-Server, die Hypervisor-Systeme chende Weboberfläche bietet keines der Der integrierte IM-Client ist dabei nicht bilden somit aktuell noch einen Single- anderen Tools, die in dieser Liga spielen. nur in der Lage, mit dem internen XMPP- Point-of-Failure, der sich aber durch den Auf der anderen Seite hat Archipel noch Server zu sprechen, sondern unterstützt Einsatz weiterer Tools, wie beispielsweise einige technische Mängel und bestimm- auch externe Server. Dies kann recht hilf- der Cluster Suite, beheben lässt. te Funktionen sind noch nicht imple- reich sein, falls Sie einmal einen Ratschlag VMCasts erlauben es dem Administrator, mentiert. Auch fehlende Software-Pakete der Archipel-Entwickler benötigen, die im- vorgefertigte Appliances zu erstellen und und die mangelhafte Dokumentation mer hilfsbereit Fragen auf dem IRC Freen- zu konfigurieren. Diese stellt Archipel machen die Installation und den Betrieb node Kanal #archipel beantworten. dann über RSS-Feeds den Hypervisoren des Frameworks nicht unbedingt einfa- zum Download zur Verfügung. Dies, und cher. Schließlich muss sich der verant- Zusätzliche Features auch der Einsatz von Templates, beschleu- wortliche Administrator fragen, ob die Neben dieser netten Spielerei bietet Ar- nigt das Bereitstellen von virtuellen Ma- genannten Features einen zusätzlichen chipel natürlich auch Funktionen wie das schinen enorm. Komplexitätslevel durch den Einsatz von Archipel rechtfertigen. Die meisten grundlegenden Funktionen, die Archipel bietet, sind bereits von Tools wie virt- manager [5] bekannt. (jp)

[1] libvirt-Projektseite B8P41 [2] oVirt-Projektseite B8P42 [3] Archipel-Projektseite B8P43 [4] Archipel-Download B8P44 [5] virt-manager-Projektseite B8P45

Bild 7: ...dies ermöglicht die Kommunikation mit den einzelnen Komponenten sowie mit einem Link-Codes regulären XMPP-/Jabber-Client, wie beispielsweise Empathy oder Pidgin

Link-Codes eingeben auf www.it-administrator.de August 2011 49