Création d'un cluster Proxmox
Intérêt de la chose : mutualiser l'administration et la gestion de plusieurs installations Proxmox.
Un article général sur Proxmox,
https://chrtophe.developpez.com/tutoriels/proxmox/
Inspiré de cette vidéo,
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
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
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.
Ainsi les VMs réapparaissent sur l'interface PVE et là on est content.
4) autres considérations
Un noeud peut être arrêté, l'autre continue à fonctionner. Mais si la tête du cluster s'arrête, il ne va plus être possible de se reconnecter sur un autre noeud, les différents accès sont liés.
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)
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