Création d'un cluster Proxmox
Un article général sur Proxmox,
https://chrtophe.developpez.com/tutoriels/proxmox/
Quelques astuces,
https://hoper.dnsalias.net/atdc/index.php/2020/10/02/astuces-proxmox
Intérêt du cluster : mutualiser l'administration et la gestion de plusieurs installations Proxmox.
Cette vidéo illustre la mise en oeuvre d'un cluster,
https://youtu.be/UDqetfm6T0A
Considérons que Proxmox 2 (PVE2) doit se joindre à Proxmox (PVE) ; le cluster a été créé dans PVE.
Il faut copier cette chaine de caractères, trouvée dans PVE, dans le proxmox PVE2
eyJpcEFkZHJlc3MiOiIxOTIuMTY4LjEuMjU0IiwiZmluZ2VycHJpbnQiOiI0MDo3QToxRTo3RToyNjpDQzoxRTowNTpFNDpBMzo4MDozNDo0ODo0MTo2QTo3NTpDRTowQTpCRDowMTo5OToyODowRDpGODpCNDpGRTo2RDowODpCQzo5RDo5NDpBMCIsInBlZXJMaW5rcyI6eyIwIjoiMTkyLjE2OC4xLjI1NCJ9LCJyaW5nX2FkZHIiOlsiMTkyLjE2OC4xLjI1NCJdLCJ0b3RlbSI6eyJjb25maWdfdmVyc2lvbiI6IjEiLCJpcF92ZXJzaW9uIjoiaXB2NC02IiwiY2x1c3Rlcl9uYW1lIjoibXYiLCJpbnRlcmZhY2UiOnsiMCI6eyJsaW5rbnVtYmVyIjoiMCJ9fSwibGlua19tb2RlIjoicGFzc2l2ZSIsInZlcnNpb24iOiIyIiwic2VjYXV0aCI6Im9uIn19
Mais, au moment du Join, on obtient un message d'erreur,
This host already contains virtual guests
car les VM existantes posent problème.
En regardant cette autre vidéo,
https://youtu.be/4Z3wS6nMUtQ
Il y une solution qui consiste à :
1) retirer (downloader) provisoirement les fichiers de conf se trouvant dans ce répertoire,
/etc/pve/nodes/pvexx/qemu-server/
Faire ceci dans la machine devant rejoindre le cluster.
2) effectuer l'opération de Join
On obtient ceci,
Establishing API connection with host '192.168.1.254' Login succeeded. check cluster join API version No cluster network links passed explicitly, fallback to local node IP '192.168.1.252' Request addition of this node Join request OK, finishing setup locally stopping pve-cluster service
3) restaurer les fichiers de conf au même endroit (sur PVE2)
Là ça peut coincer. Si des VM de la tête du cluster ont le même id que dans l'autre noeud, il ne sera pas possible de les récupérer directement.
De plus, si des VM étaient installées sur un autre disque que celui de Proxmox, ce disque n'est pas repris et la VM ne redémarre pas. Il faut alors rajouter le disque en question au niveau du datacenter, avec le même nom que celui qui avait été donné à l'origine.
Faire un cluster en ajoutant des noeuds dans lesquels se trouvent déjà des VMs reste possible mais il faut un peu chercher.
En substance, il faut identifier les volumes concernés (1 par VM) avec
lvs vm-100-disk-0 pve Vwi-a-tz-- 32.00g data 12.79 vm-101-disk-0 pve Vwi-a-tz-- 32.00g data 9.23 vm-102-disk-0 pve Vwi-a-tz-- 32.00g data 8.03
puis renommer le volume avec un n° adéquat, c'est à dire n'existant pas dans un autre noeud du cluster. Par exemple, si on avait des VM avec id 100 et 101 on peut les renommer en 210 et 211
lvrename pve/vm-100-disk-0 vm-210-disk-0 lvrename pve/vm-101-disk-0 vm-211-disk-0
pve correspond au nom du groupe logique, obtenu avec la commande lvs
puis éditer le fichier 100.conf et modifier la ligne scsi0 avec le bon volume logique (vm-210-disk-0 au lieu de vm-100-disk-0)
#192.168.0.32 boot: order=scsi0;ide2;net0 cores: 1 ide2: local:iso/debian-11.6.0-amd64-netinst.iso,media=cdrom memory: 2048 meta: creation-qemu=6.1.0,ctime=1673712268 name: ReverseProxy net0: virtio=5E:B4:D5:14:E5:98,bridge=vmbr0,firewall=1 numa: 0 ostype: l26 scsi0: local-lvm:vm-210-disk-0,size=16G scsihw: virtio-scsi-pci smbios1: uuid=9cf37d87-34ba-44af-967f-823059313185 sockets: 1 vmgenid: cbf3eb05-805d-4c82-a645-041fb502fbc6
puis renommer ce fichier pour qu'il ait un nom correspondant au n° de VM
mv 100.conf 210.conf
On fait la même chose pour les autres VM, en replaçant les fichiers sur le répertoire /etc/pve/nodes/pvexx/qemu-server/
Ainsi les VMs réapparaissent sur l'interface PVE et là on est content.
4) autres considérations
Un nœud peut être arrêté, l'autre continue à fonctionner. Mais si la tête du cluster s'arrête dans une configuration qui ne contient que 2 machines, il ne va plus être possible de se reconnecter sur un autre nœud, les différents accès sont liés.
Voir ceci,
https://blog.zwindler.fr/2019/10/11/un-cluster-proxmox-ve-avec-seulement-2-machines/
En définitive, la mise en oeuvre d'un cluster semble appropriée sur une configuration assez stable, mais pas trop pour un système à géométrie variable avec des ajouts et des retraits fréquents de noeuds
5) déplacement d'une VM
A partir de 2 noeuds, on peut déplacer des VM
Utiliser fonction Migrate pour cela
Voici un exemple, de pve vers pve2
2023-02-24 18:46:38 starting migration of VM 127 to node 'pve2' (192.168.1.252) 2023-02-24 18:46:38 found local disk 'local-lvm:vm-127-disk-0' (in current VM config) 2023-02-24 18:46:38 copying local disk images 2023-02-24 18:46:43 WARNING: You have not turned on protection against thin pools running out of space. 2023-02-24 18:46:43 WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full. 2023-02-24 18:46:43 Logical volume "vm-127-disk-0" created. 2023-02-24 18:46:43 WARNING: Sum of all thin volume sizes (49.00 GiB) exceeds the size of thin pool pve/data and the amount of free space in volume group (6.87 GiB). 2023-02-24 18:48:14 16384+0 records in 2023-02-24 18:48:14 16384+0 records out 2023-02-24 18:48:14 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 92.5756 s, 11.6 MB/s 2023-02-24 18:48:14 successfully imported 'local-lvm:vm-127-disk-0' 2023-02-24 18:48:14 69+32645 records in 2023-02-24 18:48:14 69+32645 records out 2023-02-24 18:48:14 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 91.2449 s, 11.8 MB/s 2023-02-24 18:48:14 volume 'local-lvm:vm-127-disk-0' is 'local-lvm:vm-127-disk-0' on the target Logical volume "vm-127-disk-0" successfully removed 2023-02-24 18:48:17 migration finished successfully (duration 00:01:39) TASK OK
Pour réaliser ce type d'opération il peut être judicieux de réduire la taille de la VM
6) réduction de la taille du volume logique d'une VM (périlleux, faire une sauvegarde avant)
Se connecter en ssh sur le noeud proxmox concerné
regarder la taille utilisée sur le disque de la VM avec
lvdisplay
puis taper la commande avec la réduction de volume souhaitée (exemple = réduction de 5Go sur la VM 106)
lv resize --size -5G /dev/pve/vm-106-disk-0
Cela génère une IO error sur la VM (io error)
résolu en faisant un,
qm stop 106
puis redémarage standard
Il faut éditer le fichier 106.conf pour ajuster la taille du volume logique à ce qui a été obtenu
ATTENTION
La VM qu'on souhaite migrer doit être accessible via une interface réseau présente sur les 2 noeuds
2023-02-24 21:40:13 starting migration of VM 106 to node 'pve2' (192.168.1.252) 2023-02-24 21:40:13 found local disk 'local-lvm:vm-106-disk-0' (in current VM config) 2023-02-24 21:40:13 starting VM 106 on remote node 'pve2' 2023-02-24 21:40:19 [pve2] bridge 'vmbr100' does not exist 2023-02-24 21:40:19 [pve2] kvm: -netdev type=tap,id=net0,ifname=tap106i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on: network script /var/lib/qemu-server/pve-bridge failed with status 512 2023-02-24 21:40:19 [pve2] start failed: QEMU exited with code 1 2023-02-24 21:40:19 ERROR: online migrate failure - remote command failed with exit code 255 2023-02-24 21:40:19 aborting phase 2 - cleanup resources 2023-02-24 21:40:19 migrate_cancel 2023-02-24 21:40:22 ERROR: migration finished with problems (duration 00:00:09) TASK ERROR: migration problems
Ceci devrait résoudre le problème de migration
Mais la réduction de taille a endommagé les partitions, redémarrage ko
7) démarrage d'une VM sans quorum
On peut vouloir souhaiter démarrer des VM même si le quorum n'est pas atteint, à condition de bien savoir ce qu'on fait (aucune modification impactant globalement le cluster).
Dans ce cas il faut modifier le quorum, pour le ramener à 1 dans un cluster de 2 machines par exemple,
pvecm expected 1
Cluster information ------------------- Name: cluster00 Config Version: 6 Transport: knet Secure auth: on
Quorum information ------------------ Date: Sat Mar 4 10:28:27 2023 Quorum provider: corosync_votequorum Nodes: 1 Node ID: 0x00000002 Ring ID: 2.12a Quorate: Yes
Votequorum information ---------------------- Expected votes: 1 Highest expected: 1 Total votes: 1 Quorum: 1 Flags: Quorate
Membership information ---------------------- Nodeid Votes Name 0x00000002 1 192.168.0.40 (local)
Ainsi, les VM pourront redémarrer sans devoir démarrer un autre nœud même ponctuellement