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
EDIT (16/06/10) : Une mise à jour d'Hardy a un peu modifié cette procédure. En effet, d'une part l'installation de grub crée maintenant un menu.lst, donc vous n'aurez plus la question ci-dessus lors de l'install du noyau XEN, d'autre part, le menu.lst utilise les UUID des disques durs. La conséquence, c'est que le serveur plantera au reboot. Pour empêcher cela, éditez /boot/grub/menu.lst et dans l'entrée correspondante à XEN, cherchez
root=UUID=5d6adfea-7032-4a8e-9e79-738466a90ecf
Evidemment, votre UUID sera différent. Remplacez pour obtenir
root=/dev/sda1
Si bien sûr vous avez précédemment installé grub sur sda1 (hd0,0)
FIN EDIT
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
EDIT (25/06/10) : refonte complète de la configuration du réseau, en accord avec http://guides.ovh.com/BridgeClient, Merci beaucoup Hefpe pour l'info !
Une fois loggué dans votre domU, nous allons brancher Internet, c'est mieux pour un serveur. Editez sudo vim /etc/network/interfaces
Tout d'abord, il faut déterminer la passerelle (gateway) de votre serveur.
Pour cela, prenez l'IP de votre dédié (donc le Dom0) et remplacez le dernier nombre par 254.
Par exemple (tiré de la page OVH)
IP de votre Serveur ( Hôte ) : 123.456.789.012
IP de la gateway de l'hôte n'est rien d'autre l'IP de votre serveur se terminant par .254
Donc: 123.456.789.254
# et faites ressembler à ça
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address IP.FAIL.OVER
netmask 255.255.255.255
broadcast IP.FAIL.OVER
post-up route add IP.DE.VOTREDEDIE.254 dev eth0
post-up route add default gw IP.DE.VOTREDEDIE.254
post-down route del IP.DE.VOTREDEDIE.254 dev eth0
post-down route del default gw IP.DE.VOTREDEDIE.254
Éditez ensuite le fichier /etc/resolv.conf pour y ajouter (s'il n'y est pas déjà) le DNS d' OVH
Votre /etc/resolv.conf doit ressembler à ceci
nameserver 127.0.0.1
nameserver 213.186.33.99
search ovh.net
Fin de l'EDIT
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
tres belle facon : clair direct et bref, c bien merci
Bonjour,
Très bon tutorial, tout fonctionne correctement depuis des semaines, mais alerte OVH : trop de requêtes ARP envoyées depuis les IP failover. En effet, avec "route add default dev eth0", le noyau considère tout Internet comme faisant partie du réseau local. Résultat, le réseau local est floodé de requêtes ARP inutiles qui renvoient systématiquement au routeur. Une idée pour résoudre ce problème ?
Merci de votre aide,
Hefpe.
Bonjour,
En fait, la configuration proposée dans le tutorial doit être corrigée sous peine de se voir bloquer par OVH :
http://forum.ovh.com/showpost.php?p...
Bonne journée,
Hefpe.
Salut,
Je viens d'installer xen sous centOS 5.5 64bit (kernel 2.6.18-194.11.1.el5xen) j'utilise le mode route, cependant j'ai certaine VM qui ne ping pas, cela dépend des template apparement,
Avez-vous rencontré ce problème ? :s