Différences entre les versions de « Création d'un cluster Proxmox »

De Wiki de Mémoire Vive
Aller à la navigation Aller à la recherche
 
(37 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
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,  
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
  https://youtu.be/UDqetfm6T0A


Considérons que Proxmox 2 (PVE2) doit se joindre à Proxmox (PVE)
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
Il faut copier cette chaine de caractères, trouvée dans PVE, dans le proxmox PVE2
Ligne 22 : Ligne 29 :
Il y une solution qui consiste à :
Il y une solution qui consiste à :


1) retirer provisoirement les fichiers de conf se trouvant dans PVE, dans ce répertoire,
'''1) retirer (downloader) provisoirement les fichiers de conf se trouvant dans ce répertoire,'''
  etc/pve/nodes/pvexx/qemu-server/
/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


2) effectuer l'opération de Join
Membership information
----------------------
    Nodeid      Votes Name
0x00000002          1 192.168.0.40 (local)


3) restaurer les fichiers de conf au même endroit sur PVE


Et là ça doit marcher.
Ainsi, les VM pourront redémarrer sans devoir démarrer un autre nœud même ponctuellement

Version actuelle datée du 4 mars 2023 à 10:35

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