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.
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!
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
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
Xen benötigt einen passenden Kernel für unser System, deshalb ermitteln wir mit
Der Referenz EQ Server vom Juli 2011 läuft derzeit mit dem Kernel
Da es für gewöhnlich regelmäßig neue Versionen gibt, ist sinnvoll die Paketlisten mit
Nachdem wir nun unseren Xen-Kernel installiert haben, packen wir noch etwas Spielzeug hinzu!
Damit der Xen-Kernel ordnungsgemäß bootet, müssen wir etwas nachhelfen indem wir mit
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
Nachdem wir mit unseren Anpassungen am Kernel fertig sind updaten wir mit
Nach einem Reboot des Servers sollten wir bei dem Kommando
Also nächstes legen wir eine Bridge für unsere Gastsysteme an. Dazu editieren wir einfach die Datei
Als nächstes passen wir die Config für neue Gäste etwas an, dazu bearbeiten wir
Folgende Zeilen sollten angegeben sein (der Rest kann auskommentiert werden):
Erläuterung:
Damit unsere Bridge richtig eingesetzt wird, müssen wir noch mal den Server neustarten.
Sollte unser Server wieder hochfahren, können wir mit
Nach kurzer Wartezeit sollten wir eine Bestätigung bekommen und unser Gast ist erreichbar.
Anscheinend kommt Debian mit mehr als 3-4 Gästen nicht klar, deshalb hier auch ein kleiner Trick: Einfach
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!
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.
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
Von der Debian Seite ist soweit alles okay, nun zur Xend-Konfiguration. In
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
Nun müssen wir noch kurz was am Netzwerk verändern! In
Hier sollten wir nun unseren Wirt neustarten und hoffen er hat unsere Eingriffe überlebt.
Einen kleinen Schritt zur Vollendung benötigen wir noch, dazu fahren wir nach einem erfolgreichen Neustart unseren Gast via
Sobald wir drin sind bearbeiten wir
Nachdem wir fertig sind, müssen wir nur noch unseren Gast neustarten: "
Fertig!
Wir sind nun fertig und können beliebig viele Gäste erstellen ... Prost!
Diese Anleitung wurde gemeinsam von Alexander Koß und Florian Garrecht erstellt .
Inhaltsverzeichnis
Einleitung
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!
1. 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.2. 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.3. 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.4. 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.5. 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.6. 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.
7. 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.
8. 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.9. Xen Kommandos
xm start [name]
- Startet den angegeben Gastxm list
- Listet alle gestarteten Gästexm shutdown [name]
- Fährt den angegeben Gast herunterxm reboot [name]
- Rebootet den angegeben Gastxm top
- Erzeugt eine Ausgabe wie "top", nur für alle Systemexm create
- Erzeugt einen neuen Gastxm help
- Zeigt noch mehr lustige Kommandos ;)10. 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!
11. 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.
12. 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.
13. 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!
Diese Anleitung wurde gemeinsam von Alexander Koß und Florian Garrecht erstellt .
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 169496
Url: https://administrator.de/contentid/169496
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
5 Kommentare
Neuester Kommentar
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
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
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
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