Archiv: Stichwort "Xen"

Xen: Umstellung von “Bridged”-Setup zu “Routed”-Setup

Bislang hatte ich auf meinem Hetzner Root-Server ein “Bridge”-Setup. Dieses habe ich jetzt auf ein “Routed”-Setup umgestallt, da Hetzner nun bald endgültig auf die neue Subnetz Allokierung umstellt und dort ein “Briged”-Setup dann nicht mehr möglich wäre.

Das “Bridge”-Setup ist auch eher für den Einsatz in einem lokalen LAN gedacht. Problem bei dieser Variante im Rechenzentrum ist, das der Switch die MAC-Adressen und IP`s der DomU`s zulassen muss. Dadurch besteht die Möglichkeit, die IP Adresse eines benachbarten Server zu übernehmen.

Zwar geht es hier um die Verwendung im Rechenzentrurm (mit öffentlichen IP`s), werde jedoch zur Veranschaulichung private Adressen nutzen.

192.168.1.0/24 (Für den Hauptserver)
192.168.2.0/24 (Zusätzliche Netz für die DomU`s)

Anpassungen – Dom0

IP-Forwarding aktivieren:

echo "1" > /proc/sys/net/ipv4/ip_forward

Proxy-APR aktivieren:

echo "1" > /proc/sys/net/ipv4/conf/default/proxy_arp

Es müssen natürlich die richtigen Netzwerk Einstellungen (IP, Netmask, …) für den Hauptserver (Dom0) gesetzt werden. Die letzte Zeile sorg dafür, das der Hauptserver noch die erste “benutzbare” IP aus dem zusätzlichen Subnetz bekommt. Diese IP wird dann später bei den DumU`s als Gateway eingetragen.

/etc/network/interfaces

auto eth0
iface eth0 inet static
	address 192.168.1.1
	broadcast 192.168.1.255
	netmask 255.255.255.0
	gateway 192.168.1.254
	pointopoint 192.168.1.254
 
	# IP aus dem zus. Subnetz mit Netzmaske
	up ip addr add 192.168.2.254/24 dev eth0

Dann noch eine Anpassung an dem Xen Script für die Interfaces.

/etc/xen/scripts/vif-common.sh

##
# ip_of interface
#
# Print the IP address currently in use at the given interface, or nothing if
# the interface is not up.
#
function ip_of()
{
	# ALT
	# ip addr show "$1" | awk "/^.*inet.*$1\$/{print \$2}" | sed -n '1 s,/.*,,p'
 
	# wird zu
	ip addr show "$1" | awk "/^.*inet.*$1\$/{print \$2}" | sed -n '2 s,/.*,,p'
}

Sehr wichtig ist auch in der Konfigurationsdatei der jeweiligen DomU die richtige IP Adresse einzutragen, da sonst beim Starten der DomU nicht die richtigen Routen angelegt werden.

/etc/xen/domu.cfg

vif = [ 'ip=192.168.2.1' ]

Anpassungen – DomU`s

Die DomU`s bekommen dann die zweite des Hauptservers als Gateway.

/etc/network/interfaces

auto eth0
iface eth0 inet static
	address  192.168.2.1
	netmask  255.255.255.0
	gateway  192.168.2.254

Schluss:

- DomU`s herunterfahren
- Dom0 neu starten
- DomU`s starten
- Fertig

Xen: Backend device not found

Beim experimentieren mit mehreren XEN Dom-U`s hatte ich heute folgendes Problem.

Fehlermeldung:

Error: Device 2049 (vbd) could not be connected. Backend device not found.

Die Ursache für dieses Problem ist relativ einfach. Standardmäßig werden nur 8 Loop Devices angelegt, was in diesem Fall einfach zu wenig ist.

Lösung 1 (Debian):

Unter Debian reicht es die Datei “/etc/modprobe.d/xen” mit folgendem Inhalt zu erstellen.

options loop max_loop=32

Dann noch kurz nen reboot.

reboot

Fertig.

Lösung 2:

Alternativ muss der Bootloader angepasst werden. Dazu einfach “max_loop=32″ in der Datei “/boot/grub/menu.lst” hinzufügen.

title           Xen 3.0.3-1-i386-pae / Debian GNU/Linux, kernel 2.6.18-4-xen-686
root            (hd0,1)
kernel          /boot/xen-3.0.3-1-i386-pae.gz
module          /boot/vmlinuz-2.6.18-4-xen-686 root=/dev/sda2 ro console=tty0
module          /boot/initrd.img-2.6.18-4-xen-686 max_loop=32

Danach den Bootloader neu schreiben und neustarten.

grub-install /dev/sdX
reboot

Zum Schluss müssen noch die Loop Devices angelegt werden. Das muss nach jedem Neustart passieren. Deswegen am besten an ein Startup Script anhängen.

for i in `seq 8 1 31` ; do mknod /dev/loop$i b 7 $i ; done

Fertig.