Changer l'IP d'un nœud de cluster sans casser Corosync¶
Changer l'adresse d'un nœud déjà membre d'un cluster demande de modifier, dans le bon ordre, trois fichiers : /etc/network/interfaces, /etc/hosts et /etc/pve/corosync.conf (en incrémentant config_version). Une erreur d'ordre ou de syntaxe fait perdre le quorum au nœud, voire au cluster, et peut déclencher le fencing HA. Cette opération est à confier au MSP quel que soit le contrat. Ce runbook vous permet de la comprendre, de la préparer et de la vérifier avec lui.
Exemple : le nœud pve02 passe sur le lien Corosync link0 de 10.10.20.12 à 10.10.21.12. Le cluster a deux liens : link0 dédié et link1 sur le management (10.10.10.12, inchangé).
Avant de toucher la prod
- Ticket iTop ouvert, intervention planifiée avec le MSP, accès console hors bande (IPMI, iDRAC, iLO) à
pve02testé. - Cluster quorate et tous les liens Corosync connectés :
pvecm status,corosync-cfgtool -s. - Au moins deux liens Corosync : on ne modifie qu'un lien à la fois, l'autre garde le nœud dans le cluster. Avec un seul lien, la procédure est plus risquée et réalisée exclusivement par le MSP.
- Toutes les VM et conteneurs migrés hors de
pve02, nœud en maintenance HA. - L'adresse modifiée n'est pas une adresse Ceph (moniteur, réseau public ou cluster) : ce cas suit une procédure Ceph distincte, MSP uniquement.
- Sauvegardes PBS récentes des VM critiques, et copies des fichiers modifiés.
Étapes¶
1. Vider le nœud et sauvegarder la configuration¶
ha-manager crm-command node-maintenance enable pve02 # les ressources HA quittent pve02
qm list ; pct list # sur pve02 : plus rien en cours
cp /etc/pve/corosync.conf /root/corosync.conf.$(date +%F)
cp /etc/network/interfaces /root/interfaces.$(date +%F)
cp /etc/hosts /root/hosts.$(date +%F)
2. Modifier corosync.conf (une seule fois, depuis un nœud quorate)¶
/etc/pve/corosync.conf est répliqué : le modifier sur pve01 suffit. Ne l'éditez jamais en place, travaillez sur une copie.
Dans la section nodelist, changez seulement ring0_addr de pve02, puis incrémentez config_version dans la section totem :
node {
name: pve02
nodeid: 2
quorum_votes: 1
ring0_addr: 10.10.21.12 # était 10.10.20.12
ring1_addr: 10.10.10.12
}
...
totem {
cluster_name: cluster-client
config_version: 5 # était 4
mv /etc/pve/corosync.conf.new /etc/pve/corosync.conf
corosync-cfgtool -s # link0 vers pve02 : déconnecté ; link1 : connecté
pvecm status # Quorate: Yes, 3 nœuds
3. Changer l'adresse sur pve02¶
pve02→ System → Network → sélectionnez l'interface de link0 (par exempleeno3) → Edit → IPv4/CIDR10.10.21.12/24→ OK.- Vérifiez le diff affiché, puis Apply Configuration.
pve02→ System → Hosts : mettez à jour les lignes concernées si elles référencent l'ancienne adresse.
Si c'est l'adresse de management qui change, /etc/hosts de pve02 doit résoudre son propre nom vers la nouvelle adresse (10.10.10.x pve02.client.local pve02), et les autres nœuds doivent être mis à jour aussi.
4. Vérifier la reprise du lien et finaliser¶
corosync-cfgtool -s
journalctl -b -u corosync --since "-10min"
# si le lien ne remonte pas après la modification : systemctl restart corosync (sur pve02)
pvecm updatecerts # met à jour certificats et known_hosts SSH du cluster
ha-manager crm-command node-maintenance disable pve02
Mettez ensuite à jour les références à l'ancienne adresse : réseau de migration (/etc/pve/datacenter.cfg), IPSet et règles du pare-feu (/etc/pve/firewall/cluster.fw), ACL des exports NFS ou des cibles iSCSI, QDevice, supervision, DNS, pare-feu externe vers pbs-local.
Vérifications
# corosync-cfgtool -s
LINK ID 0 udp
addr = 10.10.20.11
status:
nodeid: 1: localhost
nodeid: 2: connected
nodeid: 3: connected
# pvecm status | grep -E "Quorate|Total votes"
Quorate: Yes
Total votes: 3
config_version apparaît dans /etc/corosync/corosync.conf sur les trois nœuds. Les trois nœuds sont verts dans la GUI. Une migration à chaud de test vers pve02 aboutit.
Rollback
Tant que link1 est actif : restaurez l'ancienne adresse sur pve02 (cp /root/interfaces.<date> /etc/network/interfaces && ifreload -a), puis réécrivez corosync.conf avec l'ancienne ring0_addr et un config_version encore incrémenté (6, jamais revenir à 4). Si pve02 a perdu le quorum, /etc/pve y est en lecture seule : la correction passe par /etc/corosync/corosync.conf local, intervention MSP.
Pièges vus en support
config_versionnon incrémenté : la modification n'est pas prise en compte, ou les nœuds divergent.- Édition directe de
/etc/pve/corosync.confavec un éditeur qui écrit des fichiers temporaires : une version incomplète est propagée à tout le cluster. - Les deux liens modifiés en même temps : le nœud sort du cluster, le fencing HA redémarre le nœud s'il portait des ressources HA.
- Un nom d'hôte à la place d'une IP dans
ring0_addr: la résolution peut changer sans prévenir. Proxmox recommande des adresses IP. - Nœud avec un seul lien Corosync sans maintenance HA : redémarrage par le watchdog au moment du changement.
- Adresse Ceph modifiée par cette procédure : moniteurs injoignables. Procédure distincte, MSP.
Quand ouvrir un ticket iTop
Toujours, avant l'intervention : demande P4 de planification, avec le plan d'adressage cible et la sortie de pvecm status et corosync-cfgtool -s. Pendant l'intervention, perte de quorum ou nœud gris : P1, suivez RB-09 en parallèle. Joindre /etc/pve/corosync.conf, journalctl -u corosync -u pve-cluster --since "-1h".