Créer un cluster sur Proxmox VE

Comment créer et détruire un cluster sur Proxmox VE

Créer un cluster sur Proxmox VE
pve proxmox proxmoxve cluster

Au sommaire :

  • 1-Créer un cluster
  • 2-Ajouter un nœud
  • 3-Supprimer un nœud

1-Créer un cluster

Nous allons voir comment créer un cluster et ajouter/supprimer un nœud (nom d'un serveur dans un cluster, node en anglais).

Les avantages sont multiples mais s'il fallait en retenir 3 avantages :

  • Gestion centralisée des nœuds via l'interface web,
  • Migration simplifié des machines virtuelles et des conteneurs,
  • Et surtout la haute disponibilité (HA) avec des systèmes de fichiers comme ZFS ou Ceph,

Pour créer un cluster, rien de plus simple. Il suffit de taper la commande suivante avec le nom que vous souhaiter.

pvecm create <clustername>

Nommez le par exemple "pmx-cluster"

root@pmx01:~# pvecm create pmx-cluster
Corosync Cluster Engine Authentication key generator.
Gathering 2048 bits for key from /dev/urandom.
Writing corosync key to /etc/corosync/authkey.
Writing corosync config to /etc/pve/corosync.conf
Restart corosync and cluster filesystem
root@pmx01:~#

Ensuite, vérifiez qu'il a bien était créer avec la commande "status"

root@pmx01:~# pvecm status
Cluster information
-------------------
Name:             pmx-cluster
Config Version:   1
Transport:        knet
Secure auth:      on

Quorum information
------------------
Date:             Fri Jun 10 16:43:39 2022
Quorum provider:  corosync_votequorum
Nodes:            1
Node ID:          0x00000001
Ring ID:          1.5
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   1
Highest expected: 1
Total votes:      1
Quorum:           1  
Flags:            Quorate 

Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.0.71 (local)
root@pmx01:~#

Félicitation! Le cluster est actif.

2-Ajouter un nœud

Tapez la commande suivante avec l'adresse IP du serveur qui a initié le cluster (qu'on nommera nœud) et que vous souhaitez ajouter au cluster avec l'option "-force"

root@pmx02:~# pvecm add <pmx01-ip> -force
Please enter superuser (root) password for '192.168.0.71': **************
Establishing API connection with host '192.168.0.71'
The authenticity of host '192.168.0.71' can't be established.
X509 SHA256 key fingerprint is 65:96:72:29:08:45:3F:06:94:60:D4:73:B9:E5:8D:8B:B6:33:D1:79:3E:6F:C3:CB:16:E5:90:64:FC:84:03:B0.
Are you sure you want to continue connecting (yes/no)? yes
Login succeeded.
check cluster join API version
No cluster network links passed explicitly, fallback to local node IP '192.168.0.72'
Request addition of this node
Join request OK, finishing setup locally
stopping pve-cluster service
backup old database to '/var/lib/pve-cluster/backup/config-1654872430.sql.gz'
waiting for quorum...OK
(re)generate node files
generate new node certificate
merge authorized SSH keys and known hosts
generated new node certificate, restart pveproxy and pvedaemon services
successfully added node 'pmx02' to cluster.
root@pmx02:~# 

Ajoutez-en un deuxième tant qu'on y est.

root@pmx03:~# pvecm add <pmx01-ip> -force
Please enter superuser (root) password for '192.168.0.71': **************
Establishing API connection with host '192.168.0.71'
The authenticity of host '192.168.0.71' can't be established.
X509 SHA256 key fingerprint is 65:96:72:29:08:45:3F:06:94:60:D4:73:B9:E5:8D:8B:B6:33:D1:79:3E:6F:C3:CB:16:E5:90:64:FC:84:03:B0.
Are you sure you want to continue connecting (yes/no)? yes
Login succeeded.
check cluster join API version
No cluster network links passed explicitly, fallback to local node IP '192.168.0.73'
Request addition of this node
Join request OK, finishing setup locally
stopping pve-cluster service
backup old database to '/var/lib/pve-cluster/backup/config-1654872627.sql.gz'
waiting for quorum...OK
(re)generate node files
generate new node certificate
merge authorized SSH keys and known hosts
generated new node certificate, restart pveproxy and pvedaemon services
successfully added node 'pmx03' to cluster.
root@pmx03:~#

Vérifiez si les nœuds ont bien été ajoutés.

root@pmx03:~# pvecm nodes

Membership information
----------------------
    Nodeid      Votes Name
         1          1 pmx01
         2          1 pmx02
         3          1 pmx03 (local)
root@pmx03:~# 

Bravo! Les nœuds ont été ajoutés et visible dans l'interface web.

3-Supprimer un nœud

Enfin, on va voir comment le supprimer si besoin. D'après la documentation Proxmox, il faut taper la commande suivante sur un des nœuds. Si à partir du serveur "pmx03", vous souhaitez supprimer le serveur pmx01.

pvecm delnode <pmx01-ip>

Mais il y a un hic. Dans certains cas, cette commande sera insuffisante pour supprimer un nœud proprement.

En effectuant des recherches, j'ai trouver ce script sur un fil Reddit qui permet de supprimer correctement un nœud sans incidence.

Voici un exemple. Disons que vous avez un cluster de 3 nœuds comme celui-ci et que vous souhaitez dissocier "pmx01".

Vous allez dans le shell de "pmx01" et exécutez les commandes suivantes.

!/bin/bash

# Arrêt des services du cluster et de la synchronisation

systemctl stop pve-cluster corosync

# Forcer le mode local (ignore corosync.conf, force quorum) du Proxmox Cluster File System

pmxcfs -l

# Ensuite, suppression des données du dossier corosync

rm -r /etc/corosync/*

# Suppression du fichier corosync.conf contenant la configuration du cluster

rm /etc/pve/corosync.conf

# Stopper le processus pmxcfs

killall pmxcfs

# Démarrage du service "pve-cluster"

systemctl start pve-cluster

"pmx02" et "pmx03" n’apparaîtront plus dans le nœud "pmx01".

Allez dans /etc/pve/nodes et supprimez les dossiers "pmx02" et "pmx03" pour finir le nettoyage.

"pmx01" est désormais de nouveau indépendant du cluster.

Mais par contre, "pmx01" apparaît encore dans le cluster composé de "pmx02" et "pmx03" avec une croix rouge qui indique qu'il est indisponible.

Donc pour le supprimer définitivement. Il faudra taper ces deux commandes sur n'importe quel nœud du cluster car le tout est synchronisé.

pvecm delnode pmx01

Puis enfin.

rm -rf /etc/pve/nodes/pmx01

Et voilà!

Retenez que le plus complexe est de supprimer proprement un nœud, le reste est très facile d'accès.