Outils personnels

Xen dedibox2

Un article de TcWeb.

Dedibox viennent tout juste de sortir la version 2 des dedibox ... je m'empresse donc de faire la suite de Xen dedibox avec une petite touche d'ipv6

L'objectif de ce document c'est de décrire l'installation de xen sur une dedibox V2 à 30€ HT par mois. Le dom0 sera sur une petite partition de 2G en début de disque et tout le reste y compris le swap du dom0 sera en lvm avec reiserfs.

Les domU seront joignables soit par leur IPv4 privé à travers du port forwarding soit à travers leur IPv6.

Sommaire

Dom0

Dedian Etch

Installer une debian etch 64 (debian 4.0) avec juste un / de 2G un /boot et un petit swap, l'espace restant sera utilisé par le LVM. Ne pas oublier de changer les mots de passes.

Attention, si vous souhaitez reprendre des domU depuis une dedibox v1, il est plus simple d'installer une debian etch 32bits

Installer les paquets Xen :

 apt-get install xen-linux-system-2.6.18-6-xen-amd64 xen-tools xen-hypervisor bridge-utils

Un petit fdisk pour créer un sda2 sur tout le disque restant et voilà, il est temps de rebooter. Une fois le reboot effectif, vous pouvez vérifier que vous utilisez bien le noyau xen :

 uname -a 
 Linux dedi02 2.6.18-6-xen-amd64 #1 SMP Fri May 4 02:40:51 UTC 2007 x86_64 GNU/Linux

Pour jouer avec les lvm et reiserfs, il faut les installer :

 apt-get install lvm2 reiserfsprogs

Il est possible de créer un VG (vg00 par exemple) avec tout le disque restant.

 pvcreate /dev/sda4
 vgcreate vg00 /dev/sda4

Un routeur NAT pour l'IPv4

Une des fonctionnalités de xen c'est d'utiliser un pont réseau pour regrouper toutes les interfaces virtuelles. Comme les routeurs dedibox font du RA et du filtrage sur adresse mac il est vivement déconseiller de monter un pont réseau avec l'interface réseau physique. J'ai donc opté pour la configuration suivante : chaque domU a une IPv4 privés et une ipv6 publiques en 6to4. L'interface réseau de chaque domU va donc être intégré dans un pont privé et le dom0 va être un routeur ipv6 et faire du NAT pour le trafic ipv4

Configurons donc ce ponts réseau, on ajoute xendmz :

vi /etc/network/interfaces
auto xendmz
iface xendmz inet static
       bridge_ports dummy0
       bridge_stp off
       bridge_fd 0
       address 192.168.1.1
       netmask 255.255.255.0
/etc/init.d/network restart

Avec Xen 3.0 il faut configurer xen pour utiliser le pont réseau, avec Xen 3.2 ce n'est pas utile :

 vi /etc/xen/xend-config.sxp
 (network-script 'network-bridge bridge=xendmz netdev=dummy0')
 #(network-script network-dummy)
 /etc/init.d/xend restart

pour vérifier que tout marche bien, on affiche l'état des ponts :

 brctl show
 bridge name     bridge id               STP enabled     interfaces
 xendmz          8000.feffffffffff       no              dummy0

on ajoute un peut de nat :

 /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

on active le routage :

 vi /etc/sysctl.conf
 net.ipv4.conf.default.forwarding=1

Un routeur IPv6

Installer les bon paquets

 apt-get install iproute radvd

Trouver son préfix 6to4, la commande suivante devrait fonctionner :

 printf "2002:%x%02x:%x%02x::\n" $(ifconfig eth0 | grep "inet adr"| sed -e 's/.*adr://' -e 's/B.*//g' -e 's/\./ /g')
 2002:58bf:503b::

Pour l'instant ça ne fonctionne pas.

DomU

Reste à configurer une petite machine virtuelle :

 vi /etc/xen-tools/xen-tools.conf
 xen-create-image --hostname=test2 --ip=192.168.1.2 --gateway=192.168.1.1 --netmask=255.255.255.0 --lvm=vg00 --debootstrap --passwd

Un petit lvscan permet de voir les 2 nouveaux FS :

dedi02:/etc/xen# lvscan
  ACTIVE            '/dev/vg00/test2-disk' [4,00 GB] inherit
  ACTIVE            '/dev/vg00/test2-swap' [256,00 MB] inherit

changer le fichier de conf :

 vi /etc/xen/test2.cfg
 vif  = [ 'ip=192.168.1.2' ]

et on peut booter la nouvelle machine, et se connecter dessus :

 xm create /etc/xen/test2.cfg
 xm console test2

pour la lancer automatiquement :

 cd /etc/xen/auto
 ln -s ../test2.cfg .

Récupération de DomU

Tous les domU étaient à reprendre de l'ancienne dedibox ... j'ai donc changé les machine virtuelle de machine physique, en un mot migré d'une machine à l'autre.

On copie les lv de la machine1 vers la machine2 grace au snapshot lvm. Sur machine1 on crée le snapshot

DOMU=domu
lvcreate -s  -n ${DOMU}-disk-snapshot -L 150M /dev/vg00/${DOMU}-disk
mount /dev/vg00/${DOMU}-disk-snapshot /mnt/

Sur machine2 on crée un lv de la même taille

DOMU=domu
lvcreate -n ${DOMU}-disk -L 15G vg00
mkreiserfs /dev/vg00/${DOMU}-disk
mount /dev/vg00/${DOMU}-disk /mnt/

Et on copie les données :

rsync -a --progress machine1:/mnt /

Sur machine1 on stop le domU et on synchronise le lv

xm shutdown ${DOMU}
umount /mnt
mount /dev/vg00/{$DOMU}-disk /mnt/

Sur machine2 on crée le lv de swap et on synchronise les dernières données

lvcreate -n ${DOMU}-swap -L 256M vg00

rsync -a --progress machine1:/mnt /
umount /mnt
scp machine1:/etc/xen/${DOMU}.cfg /etc/xen/

Et voilà, on peut maintenant lancer ${DOMU} sur la nouvelle machine

Autre

Contournement d'un bug dans l'allocation mémoire du pilote réseau

Régulièrement, certains domU se retrouvais injoignable par le réseau, des ping dom0 vers domU et domU vers dom0 donnaient 100% des paquets perdu pourtant toutes les interfaces étaient là, bien présentent, et bien configuré. Seul indice, cette ligne dans /var/log/message

xen_net: Memory squeeze in netback driver.

La solution, fixer la mémoire utilisé par dom0, dans /etc/xen/xend-config.sxp

(dom0-min-mem 96)

et dans /boot/grub/menu.lst

# xenhopt=dom0_mem=96M

Mon utilisation

Depuis la mise en ligne de ces quelques notes vous êtes nombreux à me demander comment j'utilise mes xen, alors voilà , j'ai 7 domU sur ma dedibox réparties comme ceci :

  • divers, 64Mo de ram pour le ldap
  • greg, 128Mo de ram serveur web d'un amis
  • jabber, 128Mo de ram serveur jabber (ejabberd) avec les passerelles
  • lmbc, 128Mo de ram le site web de lille métropole basket club (LAMP)
  • mail, 96Mo de ram, serveur de mail exim + spamassassin + imap
  • walcky, 128Mo de ram, lamp + smtp + spamassassin + imap
  • web, 192Mo de ram front web apache + divers sites php + mysql.

Vous pouvez consulter les Statistiques de toutes ces machines.

Conclusion

1G de ram en plus c'est vraiment bien pour ne plus avoir des VM étriqués et l'architecture x86 à base de CPU intel apporte une réel stabilité avec un noyau par défaut.

Liens

Views
  • Page
  • Discussion
  • Voir le texte source
  • Historique