Catégories
Technique

🐛 Perturbations durant le mois de janvier 🐛

Bonjour tout le monde. Avec un peu de retard, nous souhaitions communiquer sur des difficultés que nous avons eues durant le mois de janvier :

  • L’indisponibilité d’un espace Nextcloud
  • Du retard dans l’acheminement des mails

Où il est question d’un disque peut-être fatigué

Tout a commencé au mois de décembre 2023. Nous remarquons une alerte sur un de nos serveurs, chif.fr. Cette alerte nous indique que le disque dur principal subit des erreurs de lecture.

Ce genre d’alerte est d’habitude un signe de « pre-fail » : aucune donnée n’est perdue pour l’instant, mais cela suggère que le disque est en fin de vie. chif.fr est le premier serveur que nous avions loué lorsque nous avions lancé le Cloud Girofle, en 2018. Six ans plus tard, il n’est pas absurde qu’un disque sollicité 24h/24 donne des signes de faiblesse.

Nous tentons d’en savoir plus sur l’erreur. Sur les quelques jours d’observation, le système d’alerte nous enverra une ou deux alertes supplémentaires, mais nous ne réussirons pas à la confirmer ou la préciser avec les outils d’analyse traditionnels. Nous nous demandons si c’est un faux-positf ou non.

L’architecture du serveur chif.fr

chif.fr est le premier serveur que nous avons loué. Il a traversé notre inexpérience, nos expérimentations, et nos déboires. C’est aussi le serveur qui accumule le plus de dette technique, et qui nous demande le plus de maintenance. Nous avons également identifié depuis plus d’un an qu’il constitue un « SPOF », un single-point of failure (un élément critique du système) pour plusieurs services :

  • Pour l’édition collaborative : c’est le serveur qui héberge OnlyOffice ;
  • Pour les mails : c’est la passerelle centrale par laquelle part tous les mails envoyés par le Cloud Girofle (y compris nos alertes par mail) ;
  • Pour les documents internes à l’association : c’est là qu’ils sont stockés. Sans ceux-là, nous perdons les informations liées à qui nous hébergeons ;
  • Pour certains collectifs hébergés (les premiers à nous avoir rejoints) ;
  • Pour notre système de monitoring : le nœud central du VPN est hébergé sur cette machine ;

Ainsi, en cas de panne du disque, tous ces services se seraient retrouvés impactés. Par ailleurs, le disque n’étant pas redondé (pas de RAID), nous nous trouvons contraints de réaliser un changement de disque avec une interruption de service. Enfin, la machine étant hébergée chez notre prestataire Kimsufi, nous ne pouvons ni réaliser le changement de disque nous-même, ni un clone du disque, nous devrons repartir depuis nos sauvegardes. Kimsufi nous informe que le changement de disque peut être anticipé à une heure précise, et que l’opération prend une demi-heure environ.

Après prise en compte de tous ces éléments, du risque de pertes de données et de service, et malgré le fait que nous n’arrivons pas à isoler l’erreur du disque ou à confirmer qu’il ne s’agit pas d’un faux-positif, nous décidons de programmer le remplacement du disque.

Anticiper le remplacement du disque

Tout d’abord, nous listons les services qui seront impactés par le changement de disque, et la réinstallation qui va s’en suivre. Pour pouvoir minimiser les effets sur les utilisateur⋅ices. Nous choisissons de profiter de ce changement de disque pour réduire la concentration des services sur cette machine, ou pour les déplacer (semi)-temporairement :

  • ✅ édition collaborative OnlyOffice : nous migrons le service vers une autre machine. Il y aura un impact pour un collectif que nous avons oublié
  • ✅ documents internes à l’association : nous migrons notre dossier Nextcloud vers un autre serveur
  • ✅ Monitoring/VPN : nous prenons note que notre système de monitoring sera hors-service pendant la coupure
  • 🛈 mails : le protocole de mails est normalement résilient à des coupures de plusieurs heures (les mails ne sont pas perdus). Nous décidons d’informer les utilisateur⋅ices de la coupure. Malheureusement, il y aura des effets de bord.
  • 🛈 collectifs hébergés : nous prenons la décision de les migrer vers d’autres instances

Ensuite, nous nous assurons que nous disposons de sauvegardes intégrales du serveur (d’habitude, nous sauvegardons seulement les données, ce qui oblige à tout réinstaller si nous perdons le serveur). Nous rajoutons la sauvegarde de la racine « / » du serveur à nos backups.

Le déroulement de l’opération

L’opération démarre le samedi 13/01 au matin. Au début, tout se passe bien, Kimsufi a remplacé le disque à 1h du matin, nous attaquons la restauration à 9h. Nous pouvons accéder à la console de secours, et commencer la restauration.

Le partitionnement se déroule bien. L’objectif étant de remonter le service le plus rapidement possible, on avait décidé de garder le même partitionnement que sur le précédent disque. Les partitions sont simples, sans LVM ni RAID.

Une fois le partitionnement en place, il nous faut remonter le système. Pour cela, on se base sur une archive Borg de tout le système (toute la racine /, sauf les dossiers /sys/, /proc/, /tmp/, /dev/ et /run/ ) que nous avions lancé la veille.

Le système maintenant en place, on peut quitter la console de secours et redémarrer le serveur. C’est là que les choses se compliquent: le système ne semble pas démarrer. Sur ce serveur, il n’y a pas malheureusement pas de console IPMI, il nous est donc impossible de diagnostiquer la panne. Après plusieurs longues tentatives de redémarrage/console de secours, nous changeons le fusil d’épaule et décidons de repartir sur l’installation d’un Debian via l’installateur Kimsufi 😿

A partir de là, on arrive bien à démarrer le système et à s’y connecter, mais c’est un système vierge, sans nos services et outils. Nous retournons donc sur la console de secours, et nous tentons de remplacer les dossiers du système par ceux de l’archive Borg. Le système démarre ensuite correctement mais nous avons rapidement des messages d’alertes nous indiquant que tout n’est pas opérationnel. Certain fichiers n’ont pas été restaurés correctement (les liens symboliques n’ont pas été restaurés). Cette erreur aurait pu être évitée en testant des restaurations au préalable, chose que nous n’avions pas fait par manque de temps.

Nous avons finalement réussi à remettre en route les services « à la mano » un à un, sur plusieurs jours, jusqu’au mardi 16/01, en priorisant les services les plus critiques.

L’impact sur les services et les utilisateur⋅ices

Au final, les utilisateur⋅ices ont été impactés de la manière suivante :

  • Mail : nous n’avions pas identifié que notre serveur DNS était centralisé sur la machine, et qu’il a eu des soucis à redémarrer. Cela a causé des problèmes d’expédition des mails pendant plusieurs jours.
  • OnlyOffice : un collectif a été oublié de la migration vers le nouveau serveur, les documents collaboratifs ont été indisponibles pour eux pendant quelques jours également
  • Nextcloud : les utilisateur⋅ices qui ont été déménagés vers de nouvelles instances ont eu peu de temps pour adapter leurs usage (utiliser la nouvelle adresse).

Ce que nous en retirons

Nous sommes capables d’effectuer des interventions en cas de problème matériel, sans perte de données.

Nous avons encore des progrès à faire dans l’anticipation de toutes les étapes, et à l’avenir nous nous assurerons que deux administrateur⋅ices « racine » sont bien présents pour la migration.

Pour en savoir plus : nous essayons de rédiger un rapport technique (parfois succinct) pour chaque intervention majeure sur nos serveurs. Celle liée au changement de disque est disponible sur notre wiki technique.

Où il est question d’édition collaborative qui saute

En parallèle des soucis de disques, vous avez été nombreureuse à nous signaler une panne sur l’ouverture des documents collaboratifs. En effet, sur certaines instances Nextcloud, lors de l’ouverture d’un fichier Office (Word, Excel, etc…) il était proposé de télécharger le fichier, alors qu’il devait simplement s’ouvrir dans le navigateur.

Nous pensons que cette panne est liée à une nouvelle fonctionnalité introduite en 2023 qui vient vérifier périodiquement si le service Onlyoffice (l’outil d’édition collaborative que nous utilisons) est bien joignable depuis chaque Nextcloud. Nous avons pour l’instant désactivé cette fonctionnalité car nous disposons déjà d’outils de suivi de notre instance Onlyoffice.

Faites nous signe si vous rencontrez à nouveau ce problème 🙏

Le mot de la fin

Nos services sont gérés par des bénévoles, sur leur temps libre. Nous faisons de notre mieux pour vous fournir des services performants et disponibles mais nous ne pouvons pas garantir une présence constante de nos équipes de support. Nous vous remercions donc de votre compréhension, patience et soutient 🥰