Aller au contenu

Exercice 1 — Former le cluster d'Aria Airlines

Durée : ~30 min · En équipe · Théorie associée : Le cluster Proxmox et le stockage partagé

Le mandat

Votre équipe devient le service informatique d'Aria Airlines, une petite compagnie aérienne montréalaise qui dessert Paris, Reykjavik, Oslo et Copenhague. Deux de ses logiciels ne doivent jamais s'arrêter : le site de vente de billets en ligne, et le poste des commis qui enregistrent les passagers à l'aéroport.

Aujourd'hui, ces logiciels tourneraient chacun sur un seul serveur. Le premier serveur qui tombe arrête la vente ou bloque l'embarquement. Vous allez donc réunir les serveurs de l'équipe en un seul cluster, première étape vers une infrastructure qui survit à une panne.

Objectif

Les trois serveurs de l'équipe forment un cluster nommé aria, avec le quorum, et se gèrent depuis une seule interface web.

Prérequis

  • Les serveurs de l'équipe ont été réinitialisés : Proxmox répond sur https://10.70.44.#:8006 et aucun nœud ne contient de VM.
  • Le numéro de chaque serveur de l'équipe, noté #. Dans ce document, serveur 1, serveur 2 et serveur 3 désignent les serveurs de l'équipe, dans l'ordre de leur numéro.
  • Le mot de passe root du serveur 1.

Note

Si votre équipe n'a que deux serveurs, avisez l'enseignant avant de commencer. Un cluster de deux nœuds se forme sans problème, mais il perd le quorum dès qu'un nœud tombe : l'exercice 6 serait impossible.

Étape 1 — Vérifier que les nœuds sont vides

Ouvrez le Shell du serveur 2 et listez ses VM.

Bash
qm list

La commande ne renvoie aucune ligne

La commande ne doit rien afficher. Faites la même vérification sur le serveur 3.

Un nœud qui contient une VM ne peut pas joindre un cluster : son identifiant pourrait entrer en conflit avec une VM du cluster. Le serveur 1, lui, a le droit d'en contenir, puisque c'est lui qui crée le cluster.

Étape 2 — Vérifier l'heure des nœuds

Dans le Shell de chaque serveur :

Bash
timedatectl

La ligne System clock synchronized affiche yes

La ligne System clock synchronized doit afficher yes sur les trois serveurs. Corosync compare l'heure des messages entre les nœuds, et un nœud qui dérive de quelques minutes est rejeté.

Étape 3 — Vérifier que les nœuds se joignent

Depuis le Shell du serveur 1, envoyez un ping au serveur 2, puis au serveur 3. Remplacez # par leur numéro.

Bash
ping -c 3 10.70.44.#

Trois réponses, aucune perte

Les trois réponses doivent arriver, en général en moins d'une milliseconde ; la première peut prendre quelques millisecondes de plus. Corosync passera par ce réseau, et il exige une latence sous 5 ms.

Étape 4 — Créer le cluster sur le serveur 1

Dans l'interface web du serveur 1, sélectionnez Datacenter, puis Cluster, et cliquez sur Create Cluster.

Champ Valeur
Cluster Name aria
Cluster Network, Link 0 l'adresse 10.70.44.# du serveur 1

La fenêtre Create Cluster avec le nom aria et l'adresse du serveur 1 en Link 0

Cliquez sur Create. La fenêtre de tâche se termine sur TASK OK.

Le journal de création se termine sur TASK OK

Le nom du cluster ne pourra plus jamais changer. Le serveur 1 forme maintenant un cluster d'un seul nœud.

Étape 5 — Copier les informations de jonction

Toujours sur le serveur 1, dans Datacenter > Cluster, cliquez sur Join Information, puis sur Copy Information.

La fenêtre Join Information avec l'adresse, l'empreinte et le bloc d'information

Le bloc copié contient l'adresse du serveur 1 et l'empreinte de son certificat. L'empreinte permet au nouveau nœud de vérifier qu'il parle bien au serveur 1, et non à une machine qui se ferait passer pour lui.

Étape 6 — Joindre le serveur 2

Ouvrez l'interface web du serveur 2. Dans Datacenter > Cluster, cliquez sur Join Cluster.

Champ Valeur
Information le bloc copié à l'étape 5
Password le mot de passe root du serveur 1
Link 0 l'adresse 10.70.44.# du serveur 2

La fenêtre Join Cluster remplie, avec l'adresse du serveur 2 en Link 0

Cliquez sur Join 'aria'. Au bout de quelques secondes, la page affiche une erreur de connexion.

Cette erreur est normale. Le serveur 2 vient de recevoir les certificats du cluster, et votre navigateur ne reconnaît plus sa connexion. Rechargez la page et reconnectez-vous.

Étape 7 — Joindre le serveur 3

Recommencez l'étape 6 depuis l'interface web du serveur 3, avec le même bloc d'information et le même mot de passe. Seule la ligne Link 0 change : l'adresse du serveur 3.

Étape 8 — Voir les trois nœuds

Rechargez l'interface web du serveur 1.

L'arborescence Datacenter (aria) contient les trois nœuds, chacun avec une coche verte

L'arborescence affiche maintenant Datacenter (aria) et les trois nœuds. Ouvrez l'interface du serveur 3 : elle affiche exactement la même chose. Peu importe l'adresse que vous tapez dans le navigateur, vous gérez désormais les trois serveurs.

Étape 9 — Lire l'état du quorum

Dans le Shell de n'importe quel nœud :

Bash
pvecm status

Quorate Yes, Expected votes 3, Total votes 3, Quorum 2

Lisez quatre lignes. Quorate: Yes : ce nœud fait partie de la majorité. Expected votes: 3 : le cluster connaît trois nœuds. Total votes: 3 : les trois sont présents. Quorum: 2 : il faut deux nœuds pour décider, et le cluster survivra donc à la perte d'un seul.

Étape 10 — Voir la configuration partagée

Dans le Shell du serveur 3 :

Bash
ls /etc/pve/nodes

Trois dossiers, un par nœud

Il y a un dossier par nœud du cluster, y compris les deux autres. C'est dans ces dossiers que seront rangés les fichiers de configuration des VM.

Étape 11 — Lire la liste des nœuds de corosync

Toujours dans le Shell du serveur 3 :

Bash
cat /etc/pve/corosync.conf

La section nodelist liste les trois nœuds avec leur adresse ring0_addr

La section nodelist énumère les trois nœuds et leur adresse. Ce fichier est identique sur les trois serveurs : pmxcfs le recopie à chaque modification.

Vérification finale

  • L'arborescence affiche Datacenter (aria) et trois nœuds avec une coche verte
  • L'interface du serveur 2 et celle du serveur 3 affichent la même arborescence
  • pvecm status affiche Quorate: Yes et Total votes: 3
  • /etc/pve/nodes contient un dossier par nœud

Question 1

Un coéquipier a cliqué sur Create Cluster sur le serveur 2 au lieu de Join Cluster. Que faut-il en conclure ?

  • a) Rien de grave : le serveur 2 rejoindra automatiquement le cluster du serveur 1, puisqu'il porte le même nom.
  • b) Le serveur 2 forme son propre cluster d'un nœud. Il ne peut plus joindre aria tant qu'il n'a pas été retiré de ce cluster, ce qui demande en pratique une réinstallation.
  • c) Le serveur 2 devient le maître du cluster aria.
Voir la réponse **b) Le serveur 2 forme son propre cluster d'un nœud.** Un cluster est identifié par sa configuration corosync et ses clés, pas par son nom. Deux clusters nommés `aria` sont deux clusters différents qui s'ignorent. Un nœud déjà membre d'un cluster ne peut pas en joindre un autre. Le choix a) est tentant parce que le nom est le même, mais Proxmox ne s'en sert jamais pour regrouper des nœuds. Seule la procédure de jonction, avec l'empreinte du certificat et le mot de passe, fait entrer un nœud dans un cluster.

En cas de problème

Symptôme Cause probable Correction
this host already contains virtual guests Une VM ou un conteneur existe encore sur le nœud qui joint Supprimer la VM, ou demander à l'enseignant de réinitialiser le nœud
cluster not ready - no quorum? à la jonction Jonction lancée quelques secondes après la création du cluster, avant qu'il soit prêt Attendre une minute, puis cliquer de nouveau sur Join 'aria'
authentication failure à la jonction Mot de passe du nœud qui joint, au lieu de celui du serveur 1 Reprendre l'étape 6 avec le mot de passe root du serveur 1
La page du serveur 2 reste en erreur après la jonction Ancien certificat en cache dans le navigateur Fermer l'onglet, en ouvrir un nouveau sur https://10.70.44.#:8006
Un nœud apparaît avec un point d'interrogation gris Corosync ne le joint pas, ou son heure dérive Étapes 2 et 3 sur ce nœud, puis systemctl status corosync
Quorate: No Moins de deux nœuds présents Vérifier que les trois serveurs sont allumés et joignables