ReLoad

Thierry Jaouen ~ WikiBlog
"Rien à foutre d'être lu, tant que je peux me relire."

Outils pour utilisateurs

Outils du site


blog:2014:06:24:xen_migration_de_domu

Xen: Migration de DomU

On va migrer, sans interruption, une machine virtuelle d'un serveur Xen à un autre.

~~READMORE~~

Pré-requis

Pour qu'une migration d'une machine virtuelle Xen (DomU) puisse se réaliser sans interruption de service, il faut remplir les conditions suivantes:

  • Même réseau entre les Dom0
  • Même processeur (Intel ou AMD)
  • Configuration des DomU prêtes ( dans /etc/xen/… )
  • Les disks doivent être partageables !

On va utiliser “iSCSI” pour partager les disks, mais ça peut marcher avec “NFS” (que je n'ai pas essayé).

Configurer

Dans un premier temps, on va faire simple:

Dans /etc/xen/xend-config.sxp, faire en sorte d'avoir:

(xend-relocation-server yes)
(xend-relocation-hosts-allow '')

C'est fini, on peut redemarrer:

# /etc/init.d/xen restart

Par défaut, le port 8002 est ouvert pour recevoir des requêtes, sans aucune sécurité.

Cas pratique avec un DomU

Donc, on a 2 Dom0 respectant les pré-requis vu plus haut.

Les 2 ont une configuration d'un DomU quasi identique… Pour la démonstration, je le nomme “my-vm

Donc, par exemple, dans /etc/xen/my-vm.cfg :

bootloader = 'pygrub'
vcpus       = '2'
memory      = '2048'
root        = '/dev/xvda2 ro'
disk        = [
                'iscsimple:lun0@iqn.2014-06.fr.thierry-jaouen:my-vm-disk-sn-00000001,xvda2,w',
                'iscsimple:lun1@iqn.2014-06.fr.thierry-jaouen:my-vm-swap-sn-00000001,xvda1,w',
            ]
name        = 'my-vm'
vif         = [ 'ip=192.168.1.7 ,mac=00:16:3E:33:22:11, bridge=brlan' ]
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

( Pour importer les disk iSCSI, j'utilise le scripte iscsimple … )

Sur l'un des Dom0, on démarre la machine virtuelle:

# xm create my-vm.cfg

Après quelques secondes, on peut migrer cette machine sur l'autre Dom0:

# xm migrate --live my-vm <IP_DU_DOM0>

Où “<IP_DU_DOM0>” est l'adresse IP (ou le nom) de l'autre Dom0.

L'opération dure quelques secondes, tout dépendant de la taille de la mémoire vive, de la vitesse du réseau, etc…

Il y a une autre méthode, avec une mise en pause temporaire pendant la migration, il suffit de ne pas ajouter l'option “--live”.

# xm migrate my-vm <IP_DU_DOM0>

Sécurité

Minimum

Dixit la doc, il n'y a que 2 manières de sécuriser la migration entre Dom0:

  • Contrôler l'IP
  • Contrôler le nom d'hote

En dehors d'installer un “firewall”, on peut jouer avec les options suivantes:

xend-relocation-hosts-allow liste en “regex” des hôtes acceptés
xend-relocation-address interface réseau utilisée

Exemple:

(xend-relocation-hosts-allow '^xen-[^.]+\\.local\\.thierry-jaouen\\.fr$')
(xend-relocation-address 192.168.1.9)

Toutes IP enregistrés dans le DNS avec le nom “xen-*.local.thierry-jaouen.fr” (où “*” est ce qu'on veut sauf des “.”) seront acceptés, sous réserve qu'elles arrivent a atteindre l'adresse “192.168.1.9” …

Avec SSL

On peut installer SSL, mais c'est juste là pour chiffrer les échanges, et non pas, hélas, pour les authentifier… Et en plus , ça ralenti les migrations :-(
Donc, ça n'a pas grand intérêt.

Pour mémoire:


# aptitude install python-openssl

(Sinon, ça ne marchera pas avec un message comme ça dans les logs: “Error: No module named OpenSSL”)

Exemple: on créé les clés du Dom0 :

# mkdir /etc/xen/ssl
# cd /etc/xen/ssl
# chmod 0700 .

# export NAME=DOM0-relocation

# openssl req -out $NAME.csr -new -newkey rsa:2048 -nodes -keyout $NAME.key
# openssl x509 -req -in $NAME.csr -signkey $NAME.key -days 3650 -out ./$NAME.crt

On se retrouve avec 3 fichiers:

  • DOM0-relocation.key
  • DOM0-relocation.csr
  • DOM0-relocation.crt

Maintenant on change la conf en:

(xend-relocation-server no)
(xend-relocation-ssl yes)
(xend-relocation-ssl-server yes)
(xend-relocation-server-ssl-key-file /etc/xen/ssl/DOM0-relocation.key)
(xend-relocation-server-ssl-cert-file /etc/xen/ssl/DOM0-relocation.crt)
# /etc/init.d/xen restart

Par défaut, le port “8003” est ouvert en attente de requête des autres Dom0… en SSL uniquement.

Voila.

blog/2014/06/24/xen_migration_de_domu.txt · Dernière modification : 2014/06/24 17:51 de thierry