KVM, acte V : Jongler avec les VMs (migrations, haute dispo)

jongle

Suite de la série d’articles sur KVM :

  1. Présentation et installation
  2. Manipulation des VMs
  3. Gestion du stockage
  4. Gestion du réseau
  5. Jongler avec ses VMs comme le manchot du logo

 

Pour faire de la haute disponibilité avec KVM, l’important est d’avoir un système de fichiers partagé, distribué et redondant.

Les systèmes existants les plus pratiques sont :

  • iSCSI, natif sur tous les SAN, mais les systèmes iSCSI distribués et redondants sont coûteux.
  • DRBD, système de fichiers répliqué libre. Les tests que j’ai fais avec ont été très mauvais, je ne l’utiliserais pas en prod !
  • GlusterFS, système de fichiers distribué moderne qui fonctionne en mode client/serveur. Les tests que j’ai fais avec ont été très satisfaisants. Avec un tuto comme celui-là, on peut facilement s’amuser.

 

Clonage

 

Le clonage sous KVM est très simple :

virsh suspend <vm-orig>
virt-clone -o <vm-orig> -n <vm-new> -f <chemin-vers-le-nouveau-volume>
virsh resume <vm-orig>

Migration

 

La migration consiste en la suspension d’une VM sur un hyperviseur et l’activation de la même VM sur un autre.
Le volume (disque dur virtuel) doit être sur un partage réseau commun auquel les deux hyperviseurs peuvent accéder (NFS, ISCSI, DRBD, GlusterFS, …).
La migration se fait par VirtManager ou virsh.

# Migration à chaud depuis hyperviseur1
virsh migrate <vm_name> qemu+ssh://root@<hyperviseur2>/system --live

 

Accès distants :

 

Accéder à distance à l’hyperviseur :

Pour se simplifier la vie, il faut copier la clé SSH de l’administrateur dans les fichiers /root/.ssh/authorized_keys des hyperviseurs.

Ensuite, on peut accéder aux hyperviseurs par Virt-Manager :

virt-manager

Et en commandes virsh :

# Directement avec virsh
virsh -c qemu+ssh://root@<hote-distant>/system
# Ou par ssh
ssh root@hyperviseur1
root@hyperviseur1# virsh

 

Accéder aux VMs par VNC :

 

Par défaut, une VM est accessible par VNC en local. La première VM utilise le port 5900, la deuxième 5901, …

Du coup, on peut voir une VM de plusieurs manières :

Tunnel SSH :

ssh -L XXXX:localhost:5900 root@hyperviseur1

Puis lancer un client VNC (comme Remmina) en local sur le port XXXX.

 

On peut aussi permettre aux VMs d’être visible sur d’autres machines que le localhost.

Pour ça, on modifie le fichier XML de la VM :

virsh edit <vm>

Ajouter à la balise <graphics type= …

listen='<ip>'

ou

listen='0.0.0.0'

 

Accéder aux VMs par Windows :

 

Deux façons de gérer les VMs sous Windows :

Installer virt-viewer.

Accéder aux VMs par VNC+SSH avec Putty :

capture-1capture

Accès distants avec Spice

 

Si vous avez déjà testé VNC, vous savez que ce protocole n’est pas le plus performant de sa catégorie. D’autres protocoles fournissent une meilleure qualité et un débit plus faible.

Spice a été créé dans cet esprit là. Il est spécialisé dans l’affichage des VMs distantes.

# Installation
apt-get install spice-client spice-client-gtk spice-client-html5
# Utilisation du client Spice
spicec --host=<host> --port=<port_number>
# Utilisation de Virt-Viewer
remote-viewer spice://<host>:<port_number>

 

Et voilà, vous savez à peu près tout ce qu’il y a à savoir sur KVM.

 

 

Sur le même sujet :