Installation de XEN sur un serveur OVH
Par Wam mania le jeudi, janvier 22 2009, 15:22 - Serveur - Lien permanent
Xen
Xen est un logiciel de paravirtualisation ou hyperviseur. Ses performances proches du natif en font un système très utilisé sur des serveurs en production. Les avantages de tels systèmes sont facilement identifiables : Isolement des types de serveurs (mail, web, etc...), possibilité de sauvegarde/transfert d'un serveur complet assez simplement, accès shell possible par utilisateur par serveur.
Prérequis et précision
Tout d'abord, un peu de vocabulaire
- Dom0 : serveur sûr lequel est installé Xen et qui supporte les serveur virtuels
- DomU : les serveurs virtuels (que j'appellerais aussi desfois vservers)
Sur le Dom0, on suppose qu'une Ubuntu Hardy Heron est déjà installée et à jour. Je ne détaillerais que l'installation d'un DomU, aussi sous Ubuntu Hardy Heron.
Nous utiliserons une configuration en mode route avec une IP failover fournie par OVH.
Grub
Sur les distrib d'OVH, c'est tjs LILO qui est installé par défaut. Or il est vraiment pas pratique de booter sur le noyau Xen avec lilo. Hormis si vous voulez vraiment bidouiller, il va falloir remettre Grub. Je suppose que vous êtes déjà connecté en SSH sur votre Dom0, on peut donc commencer
sudo apt-get install grub mdadm initramfs-tools
Ensuite on cherche le nom du disk dur
sudo fdisk -l
Disque /dev/sda: 250.0 Go, 250059350016 octets
255 heads, 63 sectors/track, 30401 cylinders
Units = cylindres of 16065 * 512 = 8225280 bytes
Identifiant disque: 0x0cf1421a
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 * 1 392 3148708+ 83 Linux
/dev/sda2 393 30336 240525180 83 Linux
/dev/sda3 30337 30401 522112+ 82 Linux swap / Solaris
C'est donc /dev/sda chez moi, si vous êtes en RAID, vous aurez sûrement un /dev/sdb aussi
On installe
sudo grub-install --recheck /dev/sda
sudo grub
>root (hd0,0)
>find /boot/grub/stage2 # si pas trouvé, essayer find grub/stage2
> hd(0,0)
> hd(1,0) # vous obtenez ceci si vous êtes en RAID
# on utilise le résultat du find
>setup (hd0)
>setup (hd1) # uniquement si vous êtes en RAID
>quit
Bon, grub est installé, mais surtout, il ne faut pas rebooter, car le fichier menu.lst avec les différentes entrées de grub n'est pas créé.
Pour le créer, on va pas s'embêter
sudo apt-get install ubuntu-xen-server
# il vous demandera alors
Could not find /boot/grub/menu.lst file. Would you like /boot/grub/menu.lst generated for you? (y/N)
# Répondez alors y pour créer le menu.lst
Y a plus qu'à reboot
uname -r
Vous devriez voir votre noyau Xen.
Voilà un morceau très pénible de terminé. Ça peut vite devenir sacrément énervant si grub n'est pas ou mal installé et qu'il faut utiliser l'horrible système rescue d'OVH. Personnellement, avec cette méthode appliquée à la lettre, je n'ai jamais eu de soucis, mais j'ai vraiment galéré pour trouver l'install correcte.
Xen
Commençons par une modification préconisée par Xen
Dans /etc/modules,
[...]
loop max_loop=64
Ensuite créez le répertoire qui va contenir les images des disques durs de nos DomU
Vous pouvez bien sûr le mettre où vous voulez
sudo mkdir /home/xen
Pour le réseau, nous utiliserons le mode "route". En effet, OVH ne supporte pas le mode bridge (par défaut dans Xen) et le NAT ne permet pas d'avoir un accès SSH indépendant. Pour cela, il faut modifier
sudo vim /etc/xen/xend-config.sxp
en commentant les entrées correspondant au bridge et en décommentant les entrées route suivante :
(network-script 'network-route netdev=eth0')
(vif-script vif-route)
Il faut aussi y ajouter le netdev=eth0 tel que ci-dessus.
On redémarre ensuite xend
sudo /etc/init.d/xend restart
1er Dom U
Personnellement, je préfère mettre toutes les options directement dans la ligne de commande que dans la config de Xen, ça permet d'être sûr du DomU qu'on crée sans avoir à chaque fois à regarder comment on avait configurer.
IP failover
Dans votre interface OVH de votre dédié, vous avez dans la rubrique service un lien qui s'appelle IP failover
Suivant le serveur que vous avez, cette option sera peut-être payante.
Créez donc une IP et notez la.
Création du domU
sudo xen-create-image --debootstrap --dir=/home/xen --size=10Gb --memory=512Mb --fs=ext3 --dist=hardy --hostname=xen1.exemple.com --ip=87.98.123.123 --netmask=255.255.255.0 --swap=1024Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.24-22-xen --mirror=http://archive.ubuntu.com/ubuntu/ --passwd
Il faut bien sûr adapter
- --ip correspond à l'IP failover créée ci-dessus (j'ai mis une IP (fictive) pour la forme, mais dans la suite, je l'appelerais IP_DOMU)
- --dir correspond à notre répertoire ou sont stockées les images, à adapter si vous avez changé
- --hostname correspond au nom de notre domU, je vous conseille un nom pleinement qualifié (sous la forme host.domain.ext et pas seulement host). Par exemple, pour un mail, vous pouvez simplement mettre mail.votre-domaine.com
- --arch peut-être amd64 ou i386
- --kernel est à adapté en fonction de votre noyau (uname -r pour savoir la version installée)
Il vous demandera alors un mot de passe qui sera le futur pass root, donc lâchez vous.
Une fois votre domU créé, il va falloir éditer son fichier de config. Si le hostname était xen1.exemple.com, alors éditez
sudo vim /etc/xen/xen1.exemple.com.cfg
#remplacer file par tap:aio dans
disk = [
'file:/home/xen/domains/xen1.exemple.com/swap.img,xvda1,w',
'file:/home/xen/domains/xen1.exemple.com/disk.img,xvda2,w',
]
# Vous aurez donc
disk = [
'tap:aio:/home/xen/domains/xen1.exemple.com/swap.img,xvda1,w',
'tap:aio:/home/xen/domains/xen1.exemple.com/disk.img,xvda2,w',
]
Lancement du domU
# à adapter bien sûr
sudo xm create /etc/xen/xen1.exemple.com.cfg
# une fois lancée, on peut vérifier avec
sudo xm list
On entre alors dans notre domU par
sudo xm console xen1.exemple.com
Une fois loggué dans votre domU, nous allons brancher Internet, c'est mieux pour un serveur. Editez sudo vim /etc/network/interfaces
# et faites ressembler à ça ([source|http://forum.ovh.com/showthread.php?t=41020|fr])
auto eth0
iface eth0 inet static
address IP_DOMU
netmask 255.255.255.0
post-up /sbin/ip route add default dev eth0
Avec l'IP qui correspond à votre IP failover
Si jamais vos DomU sont lents, vous pourrez décommenter cette ligne dans le fichier interfaces. Ça supprime le checksum TCP, qui ralentit le réseau.
post-up ethtool -K eth0 tx off
#
# The commented out line above will disable TCP checksumming which
# might resolve problems for some users. It is disabled by default
#
Éditez ensuite le fichier /etc/resolv.conf
Nous devons y mettre l'adresse de serveur DNS, en effet, l'install de base n'est pas capable de résoudre de nom. J'utilise les serveurs d'OpenDNS
208.67.222.222 et 208.67.220.220
à l'heure ou j'écris
Votre /etc/resolv.conf doit ressembler à ceci
nameserver 127.0.0.1
nameserver 208.67.222.222
nameserver 208.67.220.220
search ovh.net
Redémarrez votre vserver (sudo reboot) et retournez dans la console (sudo xm console xen1.exemple.com) dès que vous en sortez. Relogguez vous en root
On commence par mettre en français
sudo apt-get update
sudo apt-get install language-pack-fr
On édite (ou crée) sudo vim /etc/default/locale
LANG="fr_FR.UTF-8"
On reboot pour avoir en Français
Puis le traditionnel :
sudo apt-get update
sudo apt-get upgrade
A ce stade, vous pouvez vous connecter directement en SSH au Vserver en utilisant l'IP failover
Un peu plus loin
L'install d'ubuntu par ce biais est vraiment très légère. Vous pouvez donc commencer par installer le minimum
sudo apt-get install ubuntu-standard
Commentaires
Bonjour et merci pour ce tuto très clair.
Je rencontre un problème, j'ai beau suivre les instructions pour installer grub sur un OVH SuperPlan Best Of mais systématiquement après le premier reboot (après la création du fichier menu.lst), je n'ai plus de réseau et je suis obligé de réinstaller mon OS (ubuntu 8.04 server 64 bits).
Les noms de mes disques et partitions sont identiques aux exemples cités et je suis en raid également.
Quelqu'un aurait une idée ?
merci,
Kaliweed
Bonjour, êtes vous sûr que le serveur démarre bien ?
Bonjour,
j'essaye désespérément de suivre à la lettre le tutorial mais ... tout comme "Kaliweed", dès le premier reboot (après la création du menu.lst), le serveur reste sur la console "initramfs" après chaque reboot ...
une idée ?
pour le test, j'ai également installé ubuntu 8.04 LST 32b
Merci d'avance si vous pouvez m'aider,
Causta