sxxt60
Goto Top

Installation eines Hetzner EQ Server mit Xen 4, basierend auf Debian Squeeze

In der folgenden Anleitung findet ihr eine Beschreibung, wie ihr Xen auf einem bestehenden Debian System installieren könnt. Diese Anleitung ist nur mit Hetzner EQ Servern getestet, kann aber mit etwas Geschick, mit Sicherheit auch bei anderen Hostern Verwendung finden. Bitte beachtet, dass es bei anderen Hostern häufig andere Regeln bezüglich der Einrichtung der Zusatz IPs auf virtuellen Systemen gibt.


back-to-topEinleitung

Bevor Du mit diesem Tutorial anfängst solltest Du dir ein Bier öffnen (falls Du noch keines geöffnet hast) und all deinen Frust den Du bisher mit Hetzner und Xen hattest vergessen.

Am Ende der Anleitung haben wir einen laufenden Server mit Debian Squeeze und mehreren virtuelle Servern via Xen, die je nach Bedarf nur intern oder über eine IP von außen erreichbar sind.

Die Voraussetzungen sind: Ein frischer EQ Server, Zugang zum Robot von Hetzner und rund eine Stunde Zeit. Wie im Hetzner Wiki beschrieben, benötigen wir für extra IPs kein extra Subnetz! Zu jedem EQ Server, spendiert Hetzner bis zu 4 IPs, diese werden zu 1€ / Monat abgerechnet.

Solltest du also vorhaben die virtuellen Maschinen von extern zu managen, beantrage am besten vor dem Start die nötige Anzahl an IP Adressen über den Robot. Erfahrungsgemäß werden die IPs binnen 24 Stunden zugeteilt.

Bevor wir loslegen noch ein Hinweis. Ich übernehme keinerlei Garantie für die Funktion der nachfolgenden Anleitung und übernehme für eventuell entstehende Schäden keinerlei Haftung!


back-to-top1. Debian Installieren

Zuerst installieren wir Debian, solltest du bereits ein Debian Squeeze installiert haben kannst du die nachfolgenden Schritte überspringen und direkt mit "Xen Installieren" fortfahren.
Um ein neues Betriebssystem zu installieren, gehen wir in den Robot von Hetzner, wählen den gewünschten Server und lassen diesen via Rescue Console als Linux auf 64-Bit Basis starten. Das Passwort ist bitte unbedingt zu notieren!

Nach einem Neustart des Servers via SSH Console oder Hetzner-Robot verbinden wir uns per SSH auf den Server. In der bash geben wir den Befehl "installimage" ein und wählen das entsprechende Debian-Image aus, ich empfehle hier eine Debian Squeeze 64 Bit minimal Installation.

Nach den nötigen Voreinstellungen und der Grundinstallation starten wir den Server erneut und melden uns per "root" mit dem notierten Passwort an.
Anschließend ändern wir das Passwort mittels "passwd". Ich empfehle hier ein mindestens 16 stelliges Passwort mit Groß- / Kleinschreibung und einigen Sonderzeichen.


back-to-top2. Xen Installieren

Xen benötigt einen passenden Kernel für unser System, deshalb ermitteln wir mit "uname -r" den genauen Namen unseres Kernels.
Der Referenz EQ Server vom Juli 2011 läuft derzeit mit dem Kernel "2.6.32-5-amd64", der Xen Kernel heißt für diese Version entsprechend "2.6.32-5-xen-amd64" und kann via "apt-get install xen-linux-system-2.6.32-5-xen-amd64" installiert werden. Solltest Du dir nicht sicher sein welcher Kernel der richtige für Dich ist kannst Du einfach mit "apt-cache search linux-system" schauen welcher der aktuelle Xen-Kernel für Dich ist.
Da es für gewöhnlich regelmäßig neue Versionen gibt, ist sinnvoll die Paketlisten mit „apt-get update“zu aktualisieren, dies behebt gelegentlich install Fehler bei der die Installationsquelle nicht mehr gefunden werden kann.

Nachdem wir nun unseren Xen-Kernel installiert haben, packen wir noch etwas Spielzeug hinzu! "apt-get install xen-tools xen-utils xen-hypervisor". Diese drei Pakete erleichtern uns später das arbeiten mit Xen.


back-to-top3. Xen-Kernel booten

Damit der Xen-Kernel ordnungsgemäß bootet, müssen wir etwas nachhelfen indem wir mit "mv /etc/grub.d/10_linux /etc/grub.d/50_linux" dafür sorgen das der Xen-Kernel in der Liste ganz oben steht.

Ein kleiner Tipp am Rande: Anscheinend ist im Xen Kernel die ACPI Implementierung nicht richtig umgesetzt und der Server wollte nach einem sauberen reboot gar nicht mehr hochfahren. Folgendes schafft Abhilfe:

Wir editieren in der Datei "/etc/default/grub" den Parameter "GRUB_CMDLINE_LINUX_DEFAULT" so das es wie folgt aussieht: "GRUB_CMDLINE_LINUX_DEFAULT="acpi=off", damit sagen wir dem Kernel das er die ACPI-Implementierung doch bitte einfach überspringen soll.

Nachdem wir mit unseren Anpassungen am Kernel fertig sind updaten wir mit "update-grub" noch unseren grub.


back-to-top4. System neustarten

Nach einem Reboot des Servers sollten wir bei dem Kommando "uname -r" unseren Xen-Kernel angezeigt bekommen. Sollte dies nicht der Fall sein oder fährt der Server nicht mehr richtig hoch hast du leider etwas falsch gemacht.


back-to-top5. Bridge erstellen

Also nächstes legen wir eine Bridge für unsere Gastsysteme an. Dazu editieren wir einfach die Datei "/etc/xen/xend-config.sxp". Hier reicht für den Anfang eine Zeile.
"(network-script network-bridge)" darf nicht auskommentiert sein, alle anderen network-script Optionen sollten entsprechend auskommentiert (#) sein.


back-to-top6. Image Config erstellen

Als nächstes passen wir die Config für neue Gäste etwas an, dazu bearbeiten wir "/etc/xen-tools/xen-tools.conf". Die Einstellungen die wir nun setzen, zählen als Default Einstellungen für die zu erstellenden Gäste. Allerdings kann beim erstellen eines Gastes immer durch mitgeben entsprechender Parameter eine andere Konfiguration gewählt werden.

Folgende Zeilen sollten angegeben sein (der Rest kann auskommentiert werden):

dir = /home/xeninstall-method = debootstrapdebootstrap-cmd=/usr/sbin/debootstrapsize = 20G memory = 512Mbswap = 2Gfs = ext3dist = `xt-guess-suite-and-mirror --suite`image = sparsedhcp = 1passwd = 1kernel = /boot/vmlinuz-`uname -r`initrd = /boot/initrd.img-`uname -r`arch=amd64mirror = http://ftp.de.debian.org/debian/ext3_options = noatime,nodiratime,errors=remount-roext2_options = noatime,nodiratime,errors=remount-roxfs_options = defaultsreiser_options = defaultsboot = 1serial_device = hvc0 disk_device = xvda

Erläuterung:
"dir" gibt an in welchem Verzeichniss die Config und die Images für die Gäste gespeichert werden sollen.
"install-method" gibt die Methode der Installation an.
"size" ist die Größe des Images.
"memory" der zugesicherte Arbeitsspeicher.
"swap" ist der Swap.
"fs" ist das gewünschte Filesystem.
"dist" ist das Betriebssystem das installiert werden soll, die Einstellung die ich eingetragen habe nimmt das OS des Wirts.
"passwd" fragt nach einem Passwort für den Gast beim erstellen.
"kernel" und "initrd" enthalten Boot-Informationen für den Gast, hier wir automatisch der Kernel des Wirts verwendet.
"arch" enthält die Architektur (entweder i386 oder amd64).
"mirror" enthält einen OS Spiegel für Ressourcen die installiert werden müssen. Alles andere ist soweit eigentlich irrelevant für uns.

Damit unsere Bridge richtig eingesetzt wird, müssen wir noch mal den Server neustarten.


back-to-top7. Gast erstellen

Sollte unser Server wieder hochfahren, können wir mit "xen-create-image --hostname xen-01 --role=udev --install-method=debootstrap" einen Gast erstellen. "--role=udev" installiert udev, damit wir uns später auch per SSH einloggen können.

Nach kurzer Wartezeit sollten wir eine Bestätigung bekommen und unser Gast ist erreichbar.


back-to-top8. Loop anpassen

Anscheinend kommt Debian mit mehr als 3-4 Gästen nicht klar, deshalb hier auch ein kleiner Trick: Einfach "/etc/modules" anpassen sodass wir anstatt "loop" - "loop max_loop=64" stehen haben.


back-to-top9. Xen Kommandos

xm start [name] - Startet den angegeben Gast
xm list - Listet alle gestarteten Gäste
xm shutdown [name] - Fährt den angegeben Gast herunter
xm reboot [name] - Rebootet den angegeben Gast
xm top - Erzeugt eine Ausgabe wie "top", nur für alle Systeme
xm create - Erzeugt einen neuen Gast
xm help - Zeigt noch mehr lustige Kommandos ;)


back-to-top10. Gratuliere

Gratulation, wenn alle Gäste soweit laufen und der Wirt keine Problem macht, haben wir den ersten großen Schritt bereits geschafft! Wenn Du keine eigenen IP Adressen für deine Gäste benötigst bist du hier fertig und darfst in Ruhe deine Bier genießen! Für alle anderen: Weiter geht’s!


back-to-top11. Vorraussetzungen für mehrere IPs

Als nächstes benötigen wir separate IP-Adressen die wir im Robot bestellen können. Hier fallen leider Kosten von einem Euro den Monat je IP an. Auf ein zusätzliches Subnetz können wir getrost verzichten. Wichtig ist nur das die IP Adressen die MAC-Adresse der Haupt-IP haben. Die Einstellung dafür findest Du im jeweiligen Server unter "IPs".

Noch ein Hinweis:, diese Anleitung funktioniert nur sofern alle IP Adressen im selben D-Subnetz liegen. Sollte dies nicht der Fall sein kann die Haupt-IP nicht als Gateway genutzt werden und die Pakete werden nicht richtig geroutet.


back-to-top12. Von Bridge zu Route

Damit wir separate IP-Adressen nutzen können müssen wir von einer einfachen Netzwerkbrücke auf Routing umstellen. Dafür müssen Wir auch eine kleine Einstellung am Wirt machen. In "/etc/sysctl.conf" benötigen wir folgende Parameter:
net.ipv4.conf.all.rp_filter=1net.ipv4.icmp_echo_ignore_broadcasts=1net.ipv4.ip_forward=1net.ipv6.conf.all.forwarding=1net.ipv4.conf.default.proxy_arp=1

Von der Debian Seite ist soweit alles okay, nun zur Xend-Konfiguration. In "/etc/xen/xend-config.sxp" kommentieren wir "(network-script network-bridge)"und "(vif-script vif-bridge)" aus und aktivieren dafür "(network-script network-route)" und "(vif-script vif-route)".

Nun routet Xen alle Pakete zu einem entsprechenden Gast, damit der Wirt auch weiß welcher Gast überhaupt gemeint ist müssen wir dem Gast eine IP zuweißen. Die Konfigurationen von allen Gästen finden Wir unter "/etc/xen/", dort einfach die Konfigurationsdatei des gewünschten Gasts öffnen und unter "Networking" folgendes Eintragen:
#dhcp = 'dhcp'vif = [ 'mac=xx:xx:xx:xx:xx:xx, ip=xxx.xxx.xxx.xxx' ]

Nun müssen wir noch kurz was am Netzwerk verändern! In "/etc/network/interfaces" ist die "up route add" auszukommentieren oder zu löschen, diese Zeile wird von Hetzner bei der Installation erstellt und hat für uns keinen Zweck. Außerdem notieren wir uns die Netmaske aus dem oberen Block.

Hier sollten wir nun unseren Wirt neustarten und hoffen er hat unsere Eingriffe überlebt.


back-to-top13. Gastsystem anpassen

Einen kleinen Schritt zur Vollendung benötigen wir noch, dazu fahren wir nach einem erfolgreichen Neustart unseren Gast via "xm create /etc/xen/gast.cfg" hoch. Anschließend wählen wir uns mit "xm console gast" auf unserem Gast ein.
Sobald wir drin sind bearbeiten wir "/etc/network/interfaces" und passen die Einträge etwas an:

# The loopback network interfaceauto loiface lo inet loopback# The primary network interfaceauto eth0iface eth0 inet static address IP-ADRESSE! gateway HAUPT-IP! netmask NETMASK DES WIRTS!

Nachdem wir fertig sind, müssen wir nur noch unseren Gast neustarten: "xm reboot gast". Anschließend sollte der Gast anpingbar sein und auch nach außen pingen können, als Test können wir zum Beispiel einen DNS Server von Google anpingen: "ping 8.8.8.8".
Fertig!

Wir sind nun fertig und können beliebig viele Gäste erstellen ... Prost! face-smile

Diese Anleitung wurde gemeinsam von Alexander Koß und Florian Garrecht erstellt .

Content-ID: 169496

Url: https://administrator.de/contentid/169496

Printed on: December 10, 2024 at 15:12 o'clock

i-xperts
i-xperts Jul 27, 2011 at 19:31:48 (UTC)
Goto Top
Vielen Dank für das super Tutorial! Genauso habe ich es auch gemacht. Alles läuft Problemlos bis zum Schritt 12 durch.

Wenn ich jetzt aber auf "network-route" umstelle taucht bei mir ein anscheinend bekannter Bug in Xen 4.0 auf. Die Datei "hotplugpath.sh", welche automatisch von Xen generiert werden sollte, wird vermisst. Der Fehler taucht auf, sobald man die "xend-config.sxp" auf "network-route" umgestellt hat und anschliessend mit "/etc/init.d/xend restart" das ganze neu starten möchte. So oder so kriege ich keine Netzwerkverbindung zustande.
Ich bin mir nicht sicher, ob die fehlende Netzwerkverbindung explizit etwas mit diesem Bug zu tun hat oder nicht.
Da der Bug in der neueren Version von Xen behoben sei, versuchte ich es mit kompilieren des Hypervisors in der Version 4.1 sowie 4.1.1 als Dom0 hatte ich vorerst den standard Debian-Xen-Kernel verwendet. Da scheint zwar der Bug behoben, jedoch die Netzwerkverbindung steht immer noch nicht.
Ausserdem ist mir dabei aufgefallen, dass die DomU's den "b"-Status haben (blocked) und da auch bleiben - ein zugriff mittels der xl console ist aber weiterhin möglich.
Nachdem ich das ganze System nach ca. 20 verschiedenen Anleitungen neu Aufgesetzt habe und versucht damit in den "network-route"-Modus zu gelangen bin ich langsam an Ende mit meinem Latein. Der Support bei Hetzner meint es sei definitiv ein Software-Problem und damit meins. Die MAC-Adressen sind ok, jede IP/DomU hat eine seperate (von Hetzner bezogen).

Hattet Ihr damit keine Probleme? Wenn ja wie habt Ihr die gelöst?

Hoffend auf gute Gedankenanstösse, Inputs und Ideen...

Gruss

Simon / is-on-2
sxxt60
sxxt60 Jul 28, 2011 at 12:22:13 (UTC)
Goto Top
Hallo Simon,

mit dem beschriebenen Fehler hatte ich bis dato noch nicht zu kämpfen.
Das die DomU's den "b" Status haben ist völlig normal. Lasse einen Gast einfach mal etwas rechnen und verfolge dabei mit xm top den Status der Gäste. Sobald ein Gast etwas rechnet ändert sich der Status in "r".

Du hast jeder IP Adresse auch noch eine seperate MAC zuweisen lassen? Dies war bei mir so gar nicht von nöten, da jedes Paket dass von einem Gast nach draußen gelangt, ja eh über die Dom0 geroutet wird. Ich hatte schon öfters davon gelesen das Hetzner solche Pakete verwirft (wenn nicht mit extra bestellter MAC für die Gäste gearbeitet wird), kann das ganze bei mir aber so nicht feststellen.

Ich habe Schritt 12 wirklich 1zu1 so bei meinem Server durchgemacht und hatte damit keine Probleme. Google brauche ich vermutlich nicht mehr bemühen, dass hast du vor dem Post mit Sicherheit schon erledigt. Vielleicht fällt einem anderen Mitglied ja noch etwas dazu ein.

Gruß,
Florian
i-xperts
i-xperts Jul 28, 2011 at 14:27:17 (UTC)
Goto Top
Hallo Florian

Danke für deine Antwort! Das mit dem Status habe ich so irgendwo mal gelesen - daher dachte ich b = blocked und r = ready - anyway wieder was gelernt.

Das mit der MAC Adresse hat mir der Support von Hetzner so erklärt. Man könne auch die selbe MAC wie der Host/Dom0 nehmen, was ich ehrlich gesagt etwas komisch finde. Ok - ist virtualisiert - im echten Netzwerk wäre das verheerend!

Google hat jede menge Antworten bereit - nur welches ist die richtige? Nach so vielen Versuchen und so vielen Anleitungen/Tutorials/HowTo's hat man irgendwann die Geduld verloren noch weiter einfach nur rumzuprobieren...

Hoffe sehr, dass jemand hier ist der das Problem kennt und weiss wie es zu lösen ist. Noch schöner, wenn derjenige die Lösung auch hier reinschreiben würde!

Weiter hoffend...

Gruss

Simon / is-on-2
Dani
Dani Sep 01, 2011 at 14:09:54 (UTC)
Goto Top
Seit neuestem steht auch ein IPv6 Netz /64 kostenlos zur Verfügung.


Grüße,
Dani
sxxt60
sxxt60 Sep 09, 2011 at 06:58:02 (UTC)
Goto Top
Ja das ist korrekt, dass gab es bei Erstellung der Doku allerdings auch schon kostenlos zu haben.
Da ich meinen Server allerdings noch nicht IPv6 tauglich gemacht habe, erwähnte ich das hier auch noch nicht näher.

Mittelfristig will ich das aber auf jedenfall noch nachholen. Eine entsprechende kurze Doku folgt dann selbstverständlich. face-smile

Gruß,
Florian