Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:xen-howto

XeN 3.1 Howto auf einem OVH Server

Autor: sledge0303

Version: 1.1

Stand: 29.12.2007 22:00 Uhr

1.0 Einleitung

Bei der Installation muss sehr vorsichtig vorgegangen werden und keiner der folgend genannten Schritte ausgelassen werden. Es kann sonst passieren, dass das System entweder nicht gestartet wird oder der Server vom Switch gesperrt wird. Gerade jetzt sind Fähigkeiten wie lesen, verstehen und nachdenken erforderlich!
Ziel dieser Installation ist eine Paravirtualisierung des Servers. Wer mehr über XeN erfahren möchte, sollte sich vor Beginn der Installation darüber informieren. Dahingehend wird als Beispiel Etch als Gastsystem eingerichtet. Man kann auch andere Betriebssysteme wie Windows, andere Linuxsysteme sowie BSD als Gast erstellen. Windows wird aufgrund nicht aktivierter VT Unterstützung im BIOS nicht installierbar sein, auch wenn man mindestens 2 Prozessoren unter der Haube hat… :-(
Bedingung für eine erfolgreiche Installation:

  1. Etch from scratch OS
  2. eine grosse, nicht eingehängte Partition, für die Erstellung von LVM Devices

«< 60% round blue|WICHTIG WICHTIG WICHTIG WICHTIG WICHTIG ::: Solltest du das Monitoring bei OVH deaktiviert haben, reaktiviere es wieder - zumindest bis der Server mit XeN und deinen Netzwerkeinstellungen funktioniert. Solltest du das wichtigste, die Umstellung von Bridge auf NAT vergessen haben, der Server vom Switch gesperrt, wird kein Techniker eingreifen um den Server wieder zu entsperren. Wenn das am Wochenende oder vor einem Feiertag passieren sollte, kann es ein paar Tage dauern bis der OVH Kundendienst anhand deiner Mail die Entsperrung deines Servers veranlasst. ::: »>

2.0 Vorbereitung

Nachdem wir Etch from scratch mit GRUB Bootloader bereits installiert haben, die entsprechende Partition für die LVM Devices bereitsteht, können wir mit der Installation beginnen. Wir lösen erstmal die Abhängigkeiten auf. Vorher schauen wir nach, ob sich eventuelle 'Störenfriede' im OS befinden und deinstallieren diese gegebenenfalls:

apt-get remove exim4 exim4-base lpr nfs-common portmap pidentd pcmcia-cs \
pppoe pppoeconf ppp pppconfig

Installation der Abhängigkeiten

apt-get -y install screen debootstrap python python-twisted iproute \
bridge-utils libcurl3-dev libssl0.9.7 yaird xen-tools

2.1 mein RAM wird nicht vollständig erkannt

Gerade bei Server mit mehr als 3GB RAM Speicher kommt es vor, dass das System nicht den kompletten Speicher initialisiert. Das liegt nicht an Xen, sondern am GRUB Bootloader. Der muss gepatcht werden. Hier kannst du das Paket runterladen und installieren:

http://download.nixhelp.de/patched/grub_0.97-27_i386.deb

Anschließend wie gewohnt installieren mit

dpkg -i grub_0.97-27_i386.deb

Nach dem nächsten reboot sollte der komplette Speicher erscheinen.

3.0 Installation XeN 3.1

Wir laden uns die Quellpakete auf unseren Server, entpacken und installieren XeN. Das ganze funktioniert relativ kurz und schmerzlos:

cd /usr/src
wget http://bits.xensource.com/oss-xen/release/3.1.0/bin.tgz/xen-3.1.0-install-x86_32.tgz
tar zxf xen-3.1.0-install-x86_32.tgz
cd dist/
./install.sh
mv /lib/tls /lib/tls.disabled
update-rc.d xend defaults 20 21
update-rc.d xendomains defaults 21 20

Zum Abschluss noch der Kernel. Da es sich hier um einen vorkonfigurierten Kernel nach Vorbild des originalen Etch 2.6.18-5 Kernel handelt, müssen wir zusätzlich eine initiale Ramdisk, initrd, erstellen. Auch das geht relativ kurz und schmerzlos über die Bühne

depmod 2.6.18-xen
mkinitrd.yaird -o /boot/initrd.img-2.6.18-xen 2.6.18-xen
update-grub

Eine Fehlermeldung oder ähnliches dürfte in keinem Fall erscheinen.

3.1 Vorkonfiguration Netzwerk

Wichtig ist nun, dass Netzwerk muss auf NAT umgestellt werden, zuerst sichern wir die alte Konfiguration

mv /etc/xen/xend-config.sxp /etc/xen/xend-config.OLD

Was den zugewiesenen Speicher angeht, kann man diesen je nach Verfügbarkeit erweitern oder verringern. Jedenfalls sollten 128MB Ram ausreichen.

|xend-config.sxp
cat > /etc/xen/xend-config.sxp << "EOF"
# -*- sh -*-
 
#
# Xend configuration file.
#
 
(xend-relocation-server yes)
 
(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')
 
(network-script network-nat)
(vif-script     vif-nat)
 
# Die nächsten beiden Werte anpassen.
(dom0-min-mem 128)
(dom0-cpus 0)
 
(vncpasswd '')
EOF

3.2 Bootloader anpassen und reboot

Wir müssen kleinere Änderungen am Bootloader Grub vornehmen:

nano /boot/grub/menu.lst

Der entsprechende Eintrag sollte nach dem Editieren in etwa so aussehen:

title Xen 3.1 / XenLinux 2.6
root (hd0,0)
kernel /boot/xen-3.1.0.gz  dom0_mem=128000
module /boot/vmlinuz-2.6.18-xen root=/dev/sda1 ro max_loop=255

Wichtig sind die Einträge dom0_mem und max_loop. Sollten Abweichungen bei der Kernelbezeichnung sein, diese natürlich nicht anpassen ;-)
Wenn alles erledigt wurde, können wir den Server mit dem neuen XeN System rebooten.

reboot

3.3 Routing

Damit dein VServer eine Verbindung aufbauen kann, muss das entsprechende Routing erstellt werden. Da du höchstwahrscheinlich nur eine einzige IP zur Verfügung hast, danke OVH :-(, dürfen die Ports selbstverständlich nicht doppelt belegt werden durch Dienste. Klingt eigentlich logisch, sollte nicht extra erwähnt werden müssen, doch es gibt leider einzelne Blitzbirnen die es dennoch versuchen würden…8-O
Das Netzwerk für die VServer liegt im Klasse A Bereich, fängt mit 10.0.0.1 als Nutz-IP an und der Gateway wird immer die 10.0.0.254 sein, Broadcast dementsprechend 255.0.0.0
Solltest du 172.x.y.z oder 192.x.y.z vorziehen, ist dieses entsprechend der Grund-/ sowie VServerkonfiguration anzupassen. Wer keine Grundlagen zum Thema Netzwerkaufbau hat, sollte sich bei Wikipedia vorher erkundigen wie so etwas funktioniert.
Hier findest du nun ein Beispielskript, es beschreibt den SSH Zugang für den VServer 'Test' mit der IP 10.0.0.1. Auf Port 50122 lauscht der SSHd Dienst . Erstellst du einen 2. VServer, 10.0.0.2, dann konfigurierst du z.B. Port 50123 als dessen Zugang per SSH. Das selbe machst du mit all deinen anderen Diensten wie HTTP, FTP, SMTP… usw usw usw…

| /etc/network/if-up.d
cat > /etc/network/if-up.d/routing << "EOF"
#!/bin/sh
 
IPTABLES="/sbin/iptables"
 
#loesche alle Regeln
$IPTABLES -t nat --flush
 
# Routing fuer XenU's
# 10.0.0.1
# damit der VServer nach aussen kommunizieren kann:
$IPTABLES -t nat -A POSTROUTING -s 10.0.0.1 -o eth0 -j SNAT --to $deine_externe_ip
# 10.0.0.1:50122 frei schalten fuer SSH Kommunikation
$IPTABLES -t nat -A PREROUTING -p tcp -d $deine_externe_ip --dport 50122 -i eth0 -j DNAT --to-destination 10.0.0.1:50122
EOF

Anschliessend vergeben wir dem Skript die entsprechenden Rechte

chmod 700 /etc/network/if-up.d/routing

Der erste $IPTABLES Befehl muss für jeden VServer erstellt werden, sonst sagt der keinen Ton. Natürlich jedes mal die lokale IP anpassen :-)
Nach jeder Änderung muss es erneut ausgeführt werden:

sh /etc/network/if-up.d/routing

4.0 erster Test

Als erstes prüfen wir welcher Kernel hochgefahren wurde

uname -a

Erscheint 2.6.18-xen –> alles OK

Ist alles in Ordnung, prüfen wir ob der XeN Dienst ohne Fehler hochgefahren wurde

xm dmesg | egrep 'seg|fail'

Hier sollte keine Meldung erscheinen.

4.1 LVM einrichten

Wir installieren das Paket LVM und anschliessend wird das Device für die XeN-Vserver erstellt

apt-get install lvm2
pvcreate /dev/sdaX
vgcreate lvmxen /dev/sdaX

X steht für die Devicenummer.
Auch dieses dürfte problemlos über die Bühne gehen wenn man dieses Howto gelesen und verstanden hat.

4.2 XeN-Tools Konfigurieren

Wieder sichern wir die alten Einstellungen

mv /etc/xen-tools/xen-tools.conf /etc/xen-tools/xen-tools.OLD

…und ersetzen diese durch eine neue Konfiguration

|Xen Tools
cat > /etc/xen-tools/xen-tools.conf << "EOF"
lvm = lvmxen
 
size   = 10Gb     # Disk image size.
memory = 128Mb    # Memory size
swap   = 128Mb    # Swap size
fs     = ext3     # use the EXT3 filesystem for the disk image.
dist   = etch     # Default distribution to install.
image  = sparse   # Specify sparse vs. full disk images.
 
#
#  Currently supported and tested distributions include:
#
#   sid          - Debian
#   sarge        - Debian
#   etch         - Debian
#   dapper       - Ubuntu
#   centos4      - CentOS 4
#   fedora-core4 - Fedora Core 4 (codname stentz)
#
 
gateway   = 10.0.0.254
netmask   = 255.0.0.0
kernel = /boot/vmlinuz-2.6.18-xen
 
 
mirror = http://ftp2.de.debian.org/debian/
 
# mirror = http://gb.archive.ubuntu.com/ubuntu/
EOF

5.0 domU / Vserver erstellen

Mit diesem String wird der VServer erstellt. Bitte nehmt ggf. Anpassungen am zugewiesenen HDD Speicher sowie RAM vor:

xen-create-image --hostname=test --size=100Gb --swap=256Mb \
--ip=10.0.0.1 --netmask=255.255.255.0 --gateway=10.0.0.254 --force \
--lvm=lvmxen --memory=96Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xen \
--debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

Der Vorgang dauert ein paar Minuten. Zum Abschluss der Installation wirst du aufgefordert ein Rootpasswort zu vergeben. Danach ist die Installation abgeschlossen!

5.1 VServer konfigurieren

Bevor der VSerer in Betrieb genommen werden kann, müssen noch kleine Änderungen sowie Installationen vorgenommen werden
Wir mounten das frisch erstellte Device des VServers. Danach installieren wir die deutsche Sprachumgebung.

mount /dev/lvmxen/test-disk /mnt
 
chroot /mnt
 
apt-get install locales && dpkg-reconfigure locales

Damit wir nun den SSHd Dienst für unseren VServer nutzen können, muss der Port angepasst werden. Beispiel:

nano /etc/ssh/sshd_config
 
Port 50122

Anschliessend loggen wir uns aus dem chroot aus und führen ein umount durch

exit
 
umount /mnt

6.0 Start des VServers

xm create -c /etc/xen/test.cfg

Jetzt kann man nach herzenslust seinen Dienst in diesem VServer installieren.
FIXME: links mit Dokumentation zum Thema XeN/VServer werden noch hinzugefügt
FIXME: Troubleshooting / Tipps / Tricks

zurück zum Seitenindex

howto/xen-howto.txt · Zuletzt geändert: 2015/04/20 15:45 (Externe Bearbeitung)

Seiten-Werkzeuge