migration Xen dans un cluster Ganeti

Migration Xen dans un Cluster Ganeti

Nous vous proposons aujourd’hui un guide de migration Xen dans un cluster Ganeti basé sur notre expérience.  Ce guide ne traite que des instances Xen de type PV (paravirtualisé), et non des HVM.

Vous venez d’installer un joli cluster Ganeti basé sur l’hyperviseur Xen afin de bénéficier de ses nombreuses fonctionnalités. Seulement voilà, vous avez également des instances Xen antérieures qui tournent sur des hôtes indépendants , et vous aimeriez bien rapatrier tout cela simplement sur votre cluster tout neuf.

Création et configuration de l’instance pour une migration Xen dans un cluster Ganeti

La première étape est de créer une instance Ganeti, en spécifiant la même taille de disque que l’instance que vous souhaitez migrer. Pour une instance de 25GiB, cela donne :

# gnt-instance add --no-start --disk-template drbd --disk 0:size=25G --os-type debootsrap+default --no-install hostname.de.votre.instance.tld

Si vous souhaitez modifier l’instance après coup (par exemple ici pour rajouter de la mémoire vive et une interface), vous pouvez utiliser cette commande :

# gnt-instance modify --net add:link=xenbr0 -B maxmem=1024M,minmem=1024 hostname.de.votre.instance.tld

Une fois l’instance créée, quelques réglages sont nécessaires pour configurer correctement la manière dont l’instance démarre. On distingue deux cas :

  • L’instance utilise un kernel présent sur l’hôte :

C’est le comportement par défaut, il faut spécifier à l’hyperviseur le chemin du noyau avec les commandes suivantes :

# gnt-instance modify --hypervisor-parameters initrd_path="/$KERNDIR/initrd.img-2.6.32-5-xen-686" hostname.de.votre.instance.tld
# gnt-instance modify --hypervisor-parameters kernel_path="/$KERNDIR/vmlinuz-2.6.32-5-xen-686" hostname.de.votre.instance.tld
  • L’instance utilise son propre noyau (pvgrub, pygrub)

Lors du démarrage, pvgrub ou pygrub va lire le fichier /boot/grub/menu.lst présent sur le disque de l’instance et démarrer le noyau de l’instance. Si vous utilisez pvgrub ou pygrub afin de démarrer sur un noyau présent dans le système de fichiers de l’instance, les paramètres à modifier sont les suivants (pour pygrub) :

# gnt-instance modify --hypervisor-parameters bootloader_path=/usr/lib/xen-4.1/bin/pygrub hostname.de.votre.instance.tld
# gnt-instance modify --hypervisor-parameters use_bootloader=True hostname.de.votre.instance.tld

Une fois le noyau ou pygrub configuré, il faut spécifier où se situe le système de fichier racine. Deux configurations sont également possibles ici :

  • Si le disque de l’instance dispose d’une table de partitions, suivie d’une partition comportant le système de fichiers racine, alors il faut spécifier à Ganeti la partition contenant ce système racine :
# gnt-instance modify --hypervisor-parameters root_path=/dev/xvda1 hostname.de.votre.instance.tld
  • Si le disque de l’instance contient directement un système de fichiers, il faut faire attention à bien spécifier directement le disque sans numéro de partition :
# gnt-instance modify --hypervisor-parameters root_path=/dev/xvda hostname.de.votre.instance.tld

Copie des données pour une migration Xen dans un cluster Ganeti

Une fois notre instance configurée, nous allons pouvoir copier le disque depuis l’hôte d’origine.

Sur le cluster Ganeti, afin de rendre le volume accessible, on l’active :

# gnt-instance activate-disks hostname.de.votre.instance.tld

Sur l’ancien host, on éteint l’instance :

# xm shutdown hostname.de.votre.instance.tld

Puis, on peut utiliser netcat et pipeview pour copier les données depuis l’ancien host vers le master DRBD (attention, ce n’est pas forcément le master Ganeti) :

Sur le master DRBD, en remplaçant drbdX par le bon volume :

# nc -l -p 2000 | pv > /dev/drbdX

Sur l’ancien host :

# dd if=/chemin/vers/disque/hostname.de.votre.instance.tld-disk | pv | nc hostname.du.master.drbd.tld 2000

Démarrer l’instance

Une fois la copie terminée, on peut démarrer l’instance :

# gnt-instance start hostname.de.votre.instance.tld

Pour plus d’informations sur ce sujet, vous pouvez consulter les liens suivants :

Si vous avez besoin d’assistance technique pour des projets Xen, Ganeti, ou plus généralement Linux, nous proposons des offres de support en crédit-temps ou des formations sur ces technologies.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *