Monter un cluster Proxmox 2 nœuds avec réplication ZFS

Monter un cluster Proxmox 2 nœuds avec réplication ZFS

Configurez un cluster Proxmox VE en haute disponibilité sur deux serveurs dédiés VeryCloud avec réplication ZFS quasi-temps réel. Migration live, failover automatique et continuité de service inclus.

Introduction

Un cluster Proxmox permet :

  • Migration live : déplacer une VM d'un nœud à l'autre sans coupure
  • Réplication ZFS : synchroniser les disques entre nœuds toutes les minutes
  • Haute disponibilité (HA) : redémarrer automatiquement les VMs sur l'autre nœud en cas de panne

Ce guide couvre une architecture à 2 nœuds + un QDevice (qui agit comme arbitre pour éviter le split-brain).

Prérequis

  • 2 serveurs dédiés VeryCloud avec Proxmox VE 8.x installé et identique
  • Disques ZFS sur chaque nœud (RAIDZ ou mirror recommandé)
  • Réseau privé entre les deux nœuds (vRack ou VLAN)
  • Un VPS Debian/Ubuntu tiers comme QDevice (peut être très petit, 1 vCPU / 1 GB RAM)
  • Synchronisation NTP active sur tous les nœuds

Étape 1 : Préparation des nœuds

Sur chaque nœud Proxmox, configurez les hostnames et le /etc/hosts :

Nœud 1 (pve01) :

hostnamectl set-hostname pve01

Nœud 2 (pve02) :

hostnamectl set-hostname pve02

Sur les deux nœuds, éditez /etc/hosts :

nano /etc/hosts

Ajoutez :

10.10.10.1   pve01.local pve01
10.10.10.2   pve02.local pve02

Utilisez les IPs du réseau privé (vRack) pour la communication interne du cluster.

Étape 2 : Synchronisation NTP

apt install -y chrony
systemctl enable --now chrony
timedatectl set-timezone Europe/Paris

Vérifiez la dérive :

chronyc tracking

L'écart entre nœuds doit être inférieur à 1 seconde.

Étape 3 : Créer le cluster sur le nœud 1

Sur pve01 uniquement :

pvecm create production-cluster --link0 10.10.10.1

--link0 spécifie l'IP utilisée par Corosync (la couche de communication du cluster).

Vérifiez :

pvecm status

Vous voyez un cluster avec 1 nœud (pve01).

Étape 4 : Joindre le nœud 2 au cluster

Sur pve02 :

pvecm add pve01 --link0 10.10.10.2

Entrez le mot de passe root de pve01. La synchronisation prend ~30 secondes.

Vérifiez sur l'un des deux nœuds :

pvecm status

Doit afficher 2 nœuds, status Quorate.

Étape 5 : Configurer un QDevice (arbitre)

Avec seulement 2 nœuds, en cas de coupure réseau, chaque nœud pense être seul et risque de démarrer les mêmes VMs simultanément (split-brain). Le QDevice résout ce problème.

Sur votre VPS tiers (Debian/Ubuntu) :

apt update
apt install -y corosync-qnetd

Sur les deux nœuds Proxmox :

apt install -y corosync-qdevice

Sur pve01 :

pvecm qdevice setup IP_DU_VPS_QDEVICE

Entrez le mot de passe root du VPS QDevice. Le script configure tout automatiquement.

Vérifiez :

pvecm status

Doit afficher 3 votes au total : 2 nœuds + 1 QDevice.

Étape 6 : Créer les pools ZFS pour la réplication

Sur chaque nœud, créez un pool ZFS identique. Exemple avec un mirror sur 2 disques :

zpool create -f data mirror /dev/sda /dev/sdb
zfs set compression=lz4 data
zfs set atime=off data

Ajoutez le pool dans Proxmox :

Datacenter → Storage → Add → ZFS

  • ID : data
  • ZFS Pool : data
  • Content : Disk image, Container
  • Nodes : tous

Faites la même chose sur l'autre nœud, avec le même ID data.

Étape 7 : Créer une VM et la répliquer

Créez une VM sur pve01 en utilisant le pool data pour le disque (voir le tuto précédent pour Windows).

Une fois la VM créée :

VM → Replication → Add :

  • Target : pve02
  • Schedule : */15 (toutes les 15 minutes — ajustable)
  • Comment : Replication vers pve02

Cliquez sur Create. Proxmox fait une snapshot ZFS et la transmet à l'autre nœud.

Vérifiez :

zfs list -t snapshot data

Vous voyez des snapshots __replicate_* sur les deux nœuds.

Étape 8 : Migration live

Migrer une VM d'un nœud à l'autre sans interruption :

VM → Migrate

  • Target node : pve02
  • Online : coché (migration à chaud)

La migration prend quelques secondes à quelques minutes selon la RAM de la VM. La VM ne s'arrête pas.

Étape 9 : Configurer la haute disponibilité (HA)

Datacenter → HA → Resources → Add :

  • VM : sélectionnez l'ID (ex: 100)
  • Max. restart : 1
  • Max. relocate : 1
  • Group : laissez vide ou créez un groupe
  • State : started

Si pve01 tombe, la VM 100 sera automatiquement démarrée sur pve02 (en utilisant la dernière réplication ZFS, donc avec une perte de données potentielle de quelques minutes).

Étape 10 : Test de failover

Simulez une panne de pve01 :

# Sur pve01
shutdown -h now

Sur pve02, surveillez :

ha-manager status

Au bout de 1-2 minutes, vous devez voir la VM 100 redémarrer automatiquement sur pve02.

Une fois pve01 rebooté, la VM peut être ramenée dessus via une migration live.

Dépannage

"no quorum" après la perte d'un nœud

Le QDevice n'est pas configuré ou ne répond pas. Vérifiez sur le QDevice :

systemctl status corosync-qnetd

Et sur les nœuds Proxmox :

systemctl status corosync-qdevice

Réplication ZFS en échec

Erreur la plus courante : pool ZFS avec un nom différent entre les deux nœuds. Tous les noms doivent être identiques (ex: data partout).

Inspectez les logs :

cat /var/log/replicate/100-0.log

Migration live échoue

Vérifiez que la version de Proxmox VE et le kernel sont identiques sur les deux nœuds :

pveversion
uname -r

Mettez à jour si nécessaire :

apt update && apt full-upgrade -y

Cluster "two nodes, no quorum" malgré QDevice

Redémarrez les services :

systemctl restart corosync corosync-qdevice

Commandes utiles

# Statut du cluster
pvecm status

# Lister les nœuds
pvecm nodes

# Status HA
ha-manager status

# Forcer une réplication immédiate
pvesr run --id 100-0

# Lister les snapshots ZFS de réplication
zfs list -t snapshot | grep __replicate

# Quitter un cluster (sur le nœud à retirer)
pvecm delnode pve02

# Vérifier la consommation Corosync
journalctl -u corosync -n 50

Conclusion

Vous disposez maintenant d'un cluster Proxmox robuste, capable de supporter la panne d'un nœud complet sans perte de service significative. C'est une infrastructure de production professionnelle.

Pour aller plus loin :

  • Combinez avec Proxmox Backup Server pour des sauvegardes incrémentales déduplicquées (voir le tuto suivant)
  • Ajoutez un 3e nœud pour atteindre une véritable HA (sans QDevice)
  • Utilisez Ceph au lieu de ZFS pour du stockage distribué synchrone

Ressources

Rejoignez notre serveur communautaire Discord

Pour toute question, suggestion ou simplement pour discuter avec la communauté, rejoignez-nous sur Discord !

900+Membres