Perte d'un hyperviseur : réflexion sur la résilience de Grésille
Si vous utilisez des services de Grésille ou que vous avez une machine virtuelle hébergée dans notre salle serveur associative, vous avez peut-être remarqué des ralentissements depuis le mois dernier. Nous voulons vous partager quelques détails concernant cet incident qui a été résolu cette semaine et qui a mis à l'épreuve la résilience de Grésille.
Ça va couper, chéri⋅e !
Le lundi 23 septembre vers 19h30, nous constatons que la machine virtuelle hébergeant les nuages Nextcloud ne répond plus. Très rapidement dans la foulée, nous nous rendons compte que c'est "Miramelle", un de nos hyperviseurs, qui s'est arrêté.
L'infrastructure de Grésille est composée de plusieurs machines virtuelles (ou VM pour "virtual machines") hébergées sur des hyperviseurs (des serveurs physiques dédiés à accueillir des VMs). La panne d'un hyperviseur est donc un incident important étant donné que plusieurs machines virtuelles sont impactées et ne fonctionnent plus. Concrètement dans le cas du mois dernier, l'hyperviseur s'est arrêté d'un seul coup, entraînant avec lui l'arrêt d'une vingtaine de VMs, certaines hébergeant des services de Grésille, d'autres étant des VMs d'utilisateurices de Grésille.
Pas de chance, car notre outil de communication interne dépend justement de ce serveur ! Quelques bénévoles se rendent sur place et créent un canal sur un autre outil en urgence afin d'échanger sur la résolution de l'incident.
Notre première réaction au constat de la panne
Pauvre Miramelle...
21h30 (quelle abnégations ces bénévoles !), dans la salle serveur associative de Grésille, nous constatons que notre chère Miramelle est arrêtée. Impossible de la faire redémarrer... Pourtant l'alimentation semble fonctionner, les ventilateurs aussi... Mais rien n'apparaît sur l'écran que nous avons branché sur le serveur.
Pendant qu'une personne écrit un message pour prévenir les utilisateurices ayant une machine virtuelle dans la salle serveur, un binôme de chirurgiens se lancent dans une opération à core ouvert : chaque composant est débranché un à un pour essayer de circonscrire le problème. Verdict : il semble que ce soit la carte mère elle-même ou le processeur qui dysfonctionne. En résumé : le cœur de l'ordinateur s'est arrêté de battre. Impossible de la ré-animer ce soir.
Locuste à la rescousse
22h45 : cela fait plus de trois heures que certains services de Grésille, ainsi que les machines virtuelles des utilisateurices sont arrêtées. Nous lançons la migration de toutes ces VMs sur "Locuste", notre second hyperviseur qui est installé dans le centre de données Cogent.
Miramelle et Locuste sont deux hyperviseurs très similaires et qui ont été configurés "en cluster" avec une "réplication à chaud", c'est-à-dire qu'une VM fonctionnant sur un des deux hyperviseurs peut facilement être basculée sur l'autre, sans que l'on ne constate la moindre interruption. C'est ce qui a été fait ce soir-là : après avoir vérifié que Locuste était capable d'accueillir toutes les VMs de Miramelle (espace de stockage disponible, mémoire vive...), nous avons redémarré les machines virtuelles de Miramelle sur Locuste. Et le plus beau dans tout ça, c'est que quasiment toutes les données ont été conservées : seules quelques minutes d'écriture disque ont pu être perdues juste avant la coupure, entre 19h15 et 19h30. C'est pas beau la réplication ?
23h50 : les machines virtuelles sont en place sur Locuste, nous envoyons un mail aux utilisateurices pour les informer de la reprise des services et nous mettons à jour la note sur le site web. Nous pouvons aller nous coucher, assez de sueurs froides pour ce soir, nous verrons demain.
Embouteillage au portillon des disques durs
C'est ainsi que notre brave Locuste a supporté pendant près d'un mois l'ensemble des machines virtuelles de Grésille et de ses utilisateurices. On peut dire qu'elle a fonctionné à plein régime... et c'est justement cela qui a provoqué des lenteurs sur l'ensemble des services : les accès disques étaient saturés.
Dans un ordinateur, il existe plusieurs ressources qu'il convient d'allouer pour que les différents programmes fonctionnent correctement : de la puissance de calcul (processeur), de la mémoire vive (RAM), de l'espace de stockage (disque dur), du trafic Internet (réseau)... Dans le cas de Locuste, le facteur limitant était devenu les accès disques (également appelés I/O). A chaque fois qu'un programme souhaitait lire ou écrire quelque chose sur un disque dur, c'était l'embouteillage, il fallait attendre son tour. D'autant plus que les disques utilisés sur Miramelle (en panne) sont de meilleure qualité que les disques de Locuste. Tout était donc plus lent, non pas par manque de puissance, mais simplement car le chemin était trop étroit pour l'ensemble des logiciels qui fonctionnaient en simultané sur le serveur. Il fallait faire la queue plus longtemps !
Résilience, oui. Mais dans un fonctionnement dégradé, nous en avions conscience. Tout en restant dans les ressources théoriquement disponibles, nous avons frôlé les limites de Locuste, et c'est bien pour cela que nous avions réparti les VMs sur deux hyperviseurs. Par ailleurs, il se trouve que les disques durs de Locuste arrivaient en fin de vie car étaient fortement usés par le nombre de lectures et d'écritures. Nous avions prévu de les remplacer par des disques plus performants dédiés aux centres de données. Cet incident a accéléré le processus : nous avons remis cette question des nouveaux disques en haut de nos priorités.
Miramelle et ses pièces détachées : l'épopée d'une résurrection
Nous voici donc avec un hyperviseur surchargé et un hyperviseur à l'arrêt complet. Selon l'institut du doigt mouillé, une recherche sur Internet et l'appel à un·e ami·e, la panne viendrait à 95 % de la carte mère et à 5 % du processeur. Après avoir vérifié que la garantie avait expiré depuis trois mois (quel hasard !), après avoir contacté le fournisseur du serveur, et après sa réponse laconique qui dit en substance "ok envoyez-moi votre serveur à vos frais et je vous ferai un devis", nous nous retroussons les manches et nous mettons en quête d'une carte mère et d'un processeur de remplacement pour notre chère Miramelle.
Nous repérons donc une carte mère et un processeur de seconde main chez un fournisseur, mais nous tombons aussi sur un autre processeur en vente sur leboncoin (neuf, quelle chance !). Après une validation rapide par le collectif, nous passons la commande chez le fournisseur. Quelques jours plus tard, nous recevons la carte mère, mais pas de trace du processeur dans le bon de commande... Peu importe, nous avons la carte mère, et c'est certainement cette pièce qui est défectueuse.
Le 7 octobre nous nous rendons au chevet de Miramelle pour tenter un remplacement de sa carte mère. Je ne sais pas si vous avez déjà changé la carte mère d'un ordinateur, mais ce n'est pas de tout repos... surtout quand on réalise que notre réparation ne fonctionne pas ! Il semblerait que nous soyons là pour faire mentir les statistiques : nous tombons sur les 5 % de panne de processeur.
Opération à core ouvert : le processeur défectueux est posé sur l'alimentation, à droite de l'image
Bon. Pas de nouvelles du processeur chez le fournisseur. Et l'annonce leboncoin est toujours en ligne... Nous faisons le choix de lancer une deuxième commande pour avoir le processeur rapidement, quitte à en avoir deux. Comme disait le Petit Prince : "On ne sait jamais".
Nous recevons finalement deux processeurs quelques jours plus tard (celui du fournisseur et celui du bon coin). Le 17 octobre au matin, nous nous rendons dans la salle serveur dans laquelle gît le cadavre de Miramelle depuis bientôt un mois, nous changeons son processeur, et... roulements de tambours ... le serveur démarre ! Nous pouvons de nouveau répartir les VMs sur les deux hyperviseurs, Locuste peut respirer un peu.
Réunis le midi même pour notre repas convivial mensuel, nous contemplons le processeur défectueux en le faisant passer de main en main entre le plat et le dessert. C'est fou qu'un "cerveau électronique" si puissant tienne en si peu d'espace !
Un énigmatique écran pour la plupart des mortel⋅les, mais une bonne nouvelle pour Grésille : Miramelle a démarré !
Réflexions et suites
En informatique, aucun sujet n'est urgent jusqu'à ce qu'un incident survienne, et qu'il devienne alors critique.
Nous retenons que la mise en cluster des deux hyperviseurs, et le fait de volontairement garder des ressources disponibles sur les deux machines, sont des éléments qui ont permis à Grésille une grande résilience sur ce genre de panne. C'est d'ailleurs par anticipation de ce genre de panne que nous avions mis en place cette infrastructure. Pour information, nous utilisons le logiciel Proxmox pour la réplication et la gestion des VMs.
Nous pouvons faire le parallèle avec l'importance de faire correctement des sauvegardes de ses données, peut-être en appliquant la fameuse règle du "3-2-1" : trois copies des données, sur deux supports différents, dont une copie hors site. C'est d'ailleurs un service que nous aimerions proposer bientôt aux utilisateurices de Grésille, pour sauvegarder ses données personnelles (qui ne sont pas déjà chez Grésille évidemment !)
On pourrait évoquer la manière dont les sauvegardes sont faites chez Grésille, ou encore la résilience de notre connexion à Internet grâce à l'infrastructure de Grenode qui est connectée à deux transitaires. Mais c'est une autre histoire !
Pour l'heure, vous l'aurez compris, dans le haut de notre to-do liste il s'agit de remplacer les disques de Locuste. Nous avons aussi pour projet de mettre en place un troisième hyperviseur afin de répondre à la demande croissante de services à Grésille. Nous allons bientôt être à l'étroit en répartissant les machines sur Miramelle et Locuste. Ça tombe bien, dans notre aventure nous avons récupéré une carte mère et un processeur supplémentaires ! C'est un bon début, il nous faut encore acheter des disques et de la mémoire (et un châssis, et des câbles...). Si vous souhaitez nous aider à financer tout cela, vous pouvez contribuer à prix libre pour les services de Grésille que vous utilisez. Merci !
Enfin, un grand merci pour votre confiance ! Pour rappel, Grésille est composée uniquement de bénévoles qui sont plus ou moins disponibles et plus ou moins compétent⋅es, mais toutes et tous motivé⋅es pour construire un Internet plus humain et permettre aux personnes qui en ont besoin d'exister en ligne. Suite à l'annonce de l'incident du mois dernier, nous avons reçu plusieurs messages de soutien qui nous vont droit au cœur.
A très vite !
L'équipe de Grésille
PS : depuis l'écriture de cet article, nous avons rendu visite à Locuste pour remplacer ses disques durs. Une opération rondement menée en trois phases, sans aucune interruption de service : migration sur Miramelle, changement des disques, migration sur Locuste. Normalement, nous devrions constater une légère amélioration des performances de l'ensemble des services de Grésille.