Changer ou ajouter un ring Corosync sur un cluster Proxmox
Un cluster Proxmox repose sur Corosync pour son quorum. Quand le réseau qui porte le ring tombe — typiquement un lien vRack OVH qui disparaît à cause d'une panne de carte — le cluster vacille. Voici la procédure que nous avons déroulée en production pour ajouter un second ring, basculer la réplication ZFS sur l'IP publique et restaurer le service en mode dégradé, le temps de faire réparer le matériel.
Le contexte : 2 nœuds OVH, ring sur le vRack
L'architecture de départ est classique chez OVH : deux serveurs Proxmox interconnectés par un vRack (réseau privé L2 entre serveurs OVH). Corosync utilise ce vRack comme ring unique (link 0), et la réplication ZFS entre les deux nœuds passe par ces mêmes IP privées. L'interface publique, elle, ne porte aucun ring : elle sert le trafic des VM, pas le cluster.
Avant / après la panne vRack
Nominal
Carte vRack en panne
Objectif : ajouter l'interface publique comme ring et y rapatrier la réplication ZFS, pour remonter le service sans attendre la réparation de la carte vRack.
Deux fichiers, deux lecteurs : la base à comprendre
C'est le point qui fait perdre le plus de temps. Corosync sur Proxmox manipule deux fichiers distincts, lus par des composants différents :
| Fichier | Lu par | Rôle |
|---|---|---|
| /etc/corosync/corosync.conf | daemon corosync | Quorum, transport knet, rings |
| /etc/pve/corosync.conf | master pmxcfs + outils PVE | Source de vérité, propagée au cluster ; remote_node_ip, réplication, migration |
Règle d'or : tant que le cluster est quorate, on édite uniquement /etc/pve/corosync.conf (le master) et pmxcfs propage automatiquement vers le fichier local de chaque nœud. Sans quorum, /etc/pve est en lecture seule : il faut éditer le fichier local et le copier à la main (voir l'étape « mode dégradé »).
Les pièges qui font perdre 2 h
- La réplication / migration suit l'IP primaire =
ring0_addr, pas l'état runtime de corosync ni/etc/hosts. - Le reload à chaud n'applique que si
config_versionaugmente. En cas de doute : restart. - Après changement de
ring0_addr, pmxcfs garde l'ancienne nodelist en cache : il faut redémarrerpve-clusterpour rafraîchir/etc/pve/.members. - Le migration network de
datacenter.cfgne marche que si les IP cibles tiennent dans un seul CIDR. IP publiques dans des /24 disjoints → inutilisable, d'où le choix de mettre le réseau voulu enring0_addr.
Étape 1 — Éditer la configuration
On édite /etc/pve/corosync.conf si on est quorate, sinon /etc/corosync/corosync.conf localement (voir le mode dégradé plus bas). Principes :
ring0_addr= lien primaire (celui que suivra la réplication).ring1_addr= lien secours.- Déclarer un bloc
interfacepar linknumber utilisé (0 et 1). - Incrémenter
config_versionà chaque édition.
Avant de choisir la nouvelle version, vérifier celle réellement chargée par le daemon :
corosync-cmapctl -g totem.config_versionDans notre cas, on passe d'un seul ring (vRack) à deux rings en ajoutant l'IP publique. Pour basculer la réplication sur le public, on met l'IP publique en ring0_addr et le vRack (encore vivant sur l'autre nœud) en secours :
Pour mémoire, voici la configuration de départ (un seul ring sur le vRack), utile pour comparer :
Étape 2 — Redémarrer Corosync
Le reload à chaud est capricieux ; on préfère un restart complet qui recharge le fichier quelle que soit la version. À faire sur les deux nœuds :
systemctl restart corosync # sur les DEUX nœuds
corosync-cfgtool -s # LINK 0 = primaire, status: connected
pvecm status # Quorate: Yes, sans 'expected 1'Étape 3 — Rafraîchir la nodelist pmxcfs
Indispensable après un changement de ring0_addr : sinon les outils PVE gardent l'ancienne IP en cache et la réplication continue de cibler le vRack mort.
systemctl restart pve-cluster # sur les DEUX nœuds
cat /etc/pve/.members # les "ip" doivent montrer le nouveau primaireOn enchaîne avec les autres services PVE pour qu'ils rechargent la topologie :
systemctl restart pvestatd pvedaemon pveproxy
# si HA active :
systemctl restart pve-ha-lrm pve-ha-crmÉtape 4 — La réplication ZFS bascule sur l'IP publique
Pourquoi ça suffit
La réplication ZFS de Proxmox (pvesr) ouvre une session SSH vers l'IP primaire du nœud cible = son ring0_addr. En mettant l'IP publique en ring0 et en redémarrant pve-cluster, les jobs zfs send/recv repartent automatiquement sur le public — sans toucher à la définition des jobs.
Si les IP des nœuds ont changé, rafraîchir les empreintes SSH du cluster, puis forcer un job pour valider :
pvecm updatecerts # rafraîchit les ssh_known_hosts du cluster
pvesr run --id <vmid-job> --verbose # le ssh doit cibler la nouvelle IP publiqueCas dégradé : plus de quorum du tout
Si le lien primaire est mort des deux côtés (ou si la panne a déjà fait sauter le quorum avant l'intervention),/etc/pve est en lecture seule et la propagation cluster ne fonctionne plus. Il faut pousser la conf à la main :
Une fois le nouveau ring établi, le quorum revient (plus besoin de expected 1). On déroule alors les étapes 2 à 4 (restart corosync, pve-cluster et services) pour que pmxcfs reprenne la main et que la réplication reparte.
Vérification finale
Checklist de sortie
corosync-cfgtool -s: LINK 0 connected sur le bon réseau, LINK 1 listé.pvecm status: Quorate: Yes, sansexpected 1résiduel.cat /etc/pve/.members: les IP affichées sont bien les IP primaires attendues.pvesr run --id <job> --verbose: le SSH cible bien la nouvelle IP et le job réussit.
Prérequis réseau / firewall
- corosync / knet = UDP 5405 (jusqu'à 5412). L'ouvrir entre les IP des nœuds, restreint au pair (pas au monde) si on passe par du public.
- Si on a changé les IP des nœuds :
pvecm updatecertspour régénérer lesssh_known_hosts. - Faire passer du quorum sur Internet est un mode dégradé temporaire : latence variable, exposition. À réserver au temps de la réparation vRack, puis revenir au privé en ring0.
Ce scénario — un nœud OVH qui perd brutalement son lien vRack — est exactement le type d'incident que nous traitons en astreinte pour nos clients. Nous opérons des clusters Proxmox hébergés chez OVHcloud en infogérance : bascule de ring, réplication ZFS, suivi de la réparation matérielle avec le datacenter, retour en nominal.
Questions fréquentes
Documentation officielle
Articles connexes
PRA avec Proxmox : architecture multi-site
Réplication Ceph, PBS, RPO/RTO et conformité DORA/NIS2.
Notre stratégie de sauvegarde 3-2-1
PBS, déduplication, verify jobs et protection ransomware.
Migration Proxmox 8 vers 9
REX et méthodologie d'upgrade sur infra de production.
NTP public sur VM Proxmox
Clock drift, Chrony vs ntpd, VM vs bare-metal.
Un cluster Proxmox sur OVHcloud à fiabiliser ?
Nous concevons et opérons des clusters Proxmox redondants (rings multiples, réplication ZFS, HA), et intervenons en astreinte sur les pannes réseau et quorum — vRack OVH compris. Discutons de votre infrastructure.