10

Proxmox 5 : cluster 2 nœuds avec un stockage répliqué

Un mémo sur comment mettre en place le nouveau mode de réplication de stockage, disponible depuis la version 5.0 de Proxmox.

Ce mode de réplication permet de synchroniser deux stockages locaux via le réseau de manière asynchrone, sans investir dans des solutions de stockage externe comme le NAS ou le SAN. Cette solution de réplication est judicieuses pour des petites structures ne nécessitant pas de gros moyens, comme un cluster de haute disponibilité avec du Ceph.
La mise en place de la réplication est entièrement configurable via l’interface web d’administration de Proxmox. La réplication permet aussi d’accélérer la migration des VM.

La seule contrainte afin de mettre en place la réplication de stockage, il faut que le système de fichier du stockage local de chaque nœud Proxmox soit en ZFS.

nb : j’ai pour habitude de mettre en cluster les serveurs Proxmox sur un réseau privé, cette façon de faire n’est pas obligatoire.

Ma configuration réseau du cluster :

  • pve-z1 :
    • vmbr0 : 10.75.100.10/21 (LAN entreprise)
    • vmbr1 : 192.168.1.1/24 (LAN privé)
  • pve-z1 :
    • vmbr0 : 10.75.100.11/21 (LAN entreprise)
    • vmbr1 : 192.168.1.2/24 (LAN privé)

Installation de Proxmox2

Voir cet article : https://memo-linux.com/proxmox-5-installation/

Attention : Contrairement à une installation classique de Proxmox où généralement le système de fichier est en EXT4, pour de la réplication il faut un système de fichier ZFS.
Lors du choix de la cible de l’installation du système, choisir ZFS puis choisir le type de RAID suivant votre cas. Pour ce tuto, je choisi de faire un RAID1 sur les premiers disques de disponible :

Préparation des 2 nœuds Proxmox

Pour préparer et configurer les deux serveurs Proxmox, j’utilise mon script de post-installation : https://gitlab.com/freddl/postinstall_pve

Configuration du réseau privé

Afin de mettre en place le cluster et de faire communiquer les nœuds Proxmox sur un réseau privé, ajouter les interfaces vmbr1 :

  • Pour pve-z1 :
  • Pour pve-z2 :

Proxmox : Mise en cluster 2 nœuds

  • Sur tous les nœuds, ajouter ces informations dans /etc/hosts :
    • 192.168.1.1 cluster-z1
    • 192.168.1.2 cluster-z2
  • Sur pve-z1 créer cluster sur le réseau privé :
  • pvecm create kluster -bindnet0_addr 192.168.1.0 -ring0_addr cluster-z1
  • Sur pve-z2, rejoindre le cluster :
  • pvecm add cluster-z1 -ring0_addr cluster-z2

Ajout du stockage ZFS pour le cluster Proxmox

  • Menu Datacenter -> Stockage -> Ajouter -> ZFS :
  • Donner un nom d’ID, indiquer le pool puis cliquer sur Ajouter :
  • Le nouveau stockage ZVF est disponible pour les deux nœuds Proxmox :

Création d’une machine virtuelle sur le stockage ZFS

Lors de la création de la machine virtuelle, bien choisir le stockage ZFS pour le disque dur :

Mettre en place la réplication de la VM

  • Se placer au niveau de la VM, cliquer sur Replication puis Ajouter :
  • Créer le job de réplication :
  • La tâche de réplication est opérationnelle :

Migrer une machive virtuelle d’un nœud Proxmox à l’autre

Malheureusement, il n’est pas encore possible de faire la migration en ligne d’une machine virtuelle d’un nœud à l’autre via l’interface web. Il faut passer par la ligne de commande :

qm migrate ID_VM node --online --with-local-disks

Ce qui donne dans mon cas :

qm migrate 100 pve-z2 --online --with-local-disks

Partager l'article :





fred

"Dire que l'on s'en fiche du droit à la vie privée sous prétexte qu'on a rien à cacher, c'est comme déclarer que l'on se fiche du droit à la liberté d'expression sous prétexte qu'on a rien à dire." Edward Snowden

10 commentaires

  1. Ok, j’ai le même problème pour la migration en ligne d’une machine à l’autre, je me demandais si c’était moi ou pas…

  2. je trouve ça dommage d’être obliger de passer par la ligne de commande, peut être que ça sera corrigé dans une maj ?
    et je n’ai rien trouvé dans la doc/wiki de proxmox (ou alors mal cherché…)

  3. Salut,
    Je suis étudiant et j’ai utilisé proxmox dans mon projet d’étude. Tes articles viennent bien compléter les zones d’ombres que je peux avoir après la lecture de la doc officielle. Merci à toi!

    Dans ton script de configuration, il me semble que tes requêtes read de la forme :
    read -r variable
    variable=$variable

    pourraient se résumer à :
    read -r variable

    Bonne continuation et encore merci pour ton travail!

  4. Bonjour,
    J’ai essayer de mettre en place la réplication tous semble bien configurer. par contre il m’est impossible de migrer la vm.
    voilà le message d’erreur.
    root@pve:~# qm migrate 100 pve2 –online –with-local-disks
    2018-07-02 16:52:26 starting migration of VM 100 to node ‘pve2’ (192.168.3.48)
    2018-07-02 16:52:26 found local disk ‘local-zfs:vm-100-disk-1’ (in current VM config)
    2018-07-02 16:52:26 found local disk ‘local:iso/Windows10.iso’ (in current VM config)
    2018-07-02 16:52:26 can’t migrate local disk ‘local:iso/Windows10.iso’: local cdrom image
    2018-07-02 16:52:26 ERROR: Failed to sync data – can’t migrate VM – check log
    2018-07-02 16:52:26 aborting phase 1 – cleanup resources
    2018-07-02 16:52:26 ERROR: migration aborted (duration 00:00:01): Failed to sync data – can’t migrate VM – check log
    migration aborted

  5. Bonjour Sophie,
    la réponse est là : can’t migrate local disk ‘local:iso/Windows10.iso’: local cdrom image
    retire le lecteur de CDROM de la VM dans le menu matériel…

  6. Bonjour,
    En faite ma vm était mal configuré, et je pense avoir un souci avec mes serveur (serveur de test un peu ancien qui crash à chaque fois que je veux installer une vm windows).
    j’apporterai une petite information supplémentaire (sur ton tuto déjà très bien fait, mais parce que étant nocive sur Proxmox j’ai un peu galéré à comprendre) pour les conteneur (vu que j’ai testé qu’avec çà) pour une migration sur 2 nœuds qui sont démarrés et opérationnel, on peut le faire classiquement avec clique droit migration.
    Par contre pour retrouver son conteneur suite à un crash du serveur hôte d’origine,on passe en ligne de commande et c’est simple à comprendre.
    il faut recopier le fichier de conf du conteneur (qui est présent sur les 2 noeuds) au bon endroit puis le redémarrer.
    Exemple : conteneurs : 100, 2 serveurs un nommé pve1 l’autre pve2, pve2 tombe il faut redémarre le conteneur 100
    se placer sur le shell du nœuds pve1, je copie le fichier de conf du répertoire lxc pve2 vers le répertoire lxc de pve1
    mv /etc/pve/nodes/pve2/lxc/100.conf /etc/pve/nodes/pve1/lxc/100.conf
    et de redémarre
    pct start 100
    Apparemment pour une vm on peut faire :
    mv /etc/pve/nodes/pve2/qemu-server/100.conf /etc/pve/nodes/pve1/qemu-server/100.conf
    qm start 100

    si pb avec le quorum faire avant
    pvecm expected 1

  7. Bonjour,
    Toujours en voulant faire de la réplication
    j’ai un de mes noeuds qui ne peut pas mettre en route les vm, ni par l’interface graphique ni en ligne de commande
    il me renvoie.
    J’ai cherché sur internet mais je n’ai aps compris comment on pouvait résoudre ce problème.
    root@pve:~# qm start 100
    Could not access KVM kernel module: No such file or directory
    kvm: failed to initialize KVM: No such file or directory
    start failed: command ‘/usr/bin/kvm -id 100 -name debian -chardev ‘socket,id=qmp,path=/var/run/qemu-server/100.qmp,server,nowait’ -mon ‘chardev=qmp,mode=control’ -pidfile /var/run/qemu-server/100.pid -daemonize -smbios ‘type=1,uuid=64bbe75c-0d3e-4075-94a6-d0c059235850’ -smp ‘1,sockets=1,cores=1,maxcpus=1’ -nodefaults -boot ‘menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg’ -vga std -vnc unix:/var/run/qemu-server/100.vnc,x509,password -cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce -m 512 -device ‘pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f’ -device ‘pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e’ -device ‘piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2’ -device ‘usb-tablet,id=tablet,bus=uhci.0,port=1’ -device ‘virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3’ -iscsi ‘initiator-name=iqn.1993-08.org.debian:01:d2c081b627a8’ -drive ‘file=/var/lib/vz/template/iso/debian-9.4.0-amd64-netinst.iso,if=none,id=drive-ide2,media=cdrom,aio=threads’ -device ‘ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200’ -device ‘virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5’ -drive ‘file=/dev/zvol/rpool/data/vm-100-disk-1,if=none,id=drive-scsi0,format=raw,cache=none,aio=native,detect-zeroes=on’ -device ‘scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100’ -netdev ‘type=tap,id=net0,ifname=tap100i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on’ -device ‘virtio-net-pci,mac=BA:47:23:48:9E:83,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300 » failed: exit code 1

    J’ai configurer du zraid 1 logiciel,

    merci d’avance

  8. Hello,
    Bon à savoir… avec Proxmox 5.2, la création de cluster est possible avec le GUI.
    Inconvénient, je n’ai pas trouvé comment le faire via le LAN privé, il ne me propose qu’avec les interfaces publiques. Si quelqu’un a la solution ?
    Autre inconvénient, j’ai créé un container LXC avec Debian sur mon proxmox1, il ping et il est répliqué sur proxmox2.
    Je sais migrer le container de proxmox1 vers proxmox2 et vice-versa en 20 secondes. Jusque là c’est bien, mais..
    je coupe proxmox 1 voulant simuler une panne de serveur, et impossible de trouver comment lancer le container sur proxmox2…
    Donc niveau résolution de panne ça ne résous rien..
    Migrer

Laisser un commentaire

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