By Philidia on mardi 18 mars 2014
Category: État des serveurs

Concernant la panne du 17 mars

 
Une nouvelle panne a eu lieu sur les serveurs EUW, et Rincewind a donné des explications, pour le moins franche, mais assez "facepalmique", comme il le signale lui même. Voici son annonce :
 
Les détails concernant la panne d’hier nous font faire un facepalm. C’est l’histoire typique que l’on peut entendre de n’importe quelle startup qui grandit à une vitesse exponentielle.
 
Comment est-ce que l’on garde trace de quels systèmes sont en production et de ceux qui ne le sont pas ? Quand vous êtes une petite entreprise, vous le faites avec une simple page web. Au fil du temps vous y ajoutez des fonctionnalités jusqu’au jour où elle vous paraît encombrante et vous la remplacez alors avec des logiciels qui garde trace de votre inventaire.
 
Nous sommes passés à un nouveau système. Il est rapide, a toutes les fonctionnalités pour représenter des systèmes visuellement à grande vitesse et fiable. Cependant il n’est fiable que si les données concernant le système d’inventaire est à jour et que l’on peut s’y fier.
 
Quand nous faisons une migration vers de nouveaux systèmes, nous mettons les anciens serveurs hors service. C’était notre but hier, de mettre de vieux serveurs hors service. Malheureusement cela s’est transformé en cauchemar qui a causé une panne à l’échelle globale.
 
Ce que nous appelons le lanceur, c’est ce petit bouton qui dit « JOUER » que les joueurs cliquent pour passer de l’écran de connexion vers le client. Nous configurons l’état du lanceur pour différentes régions depuis un ensemble de serveurs de bases de données centralisé. Ils servent également à gérer d’autre contenu comme les actualités, et les pages que vous voyez immédiatement après vous être connectés. Cette partie du système est relativement statique et ne change pas souvent.
 
Le contenu provient des bases de données, puis est mis en cache par les serveurs web. Puisque le contenu est mis en cache pour une période de temps assez longue, cela ne cause pas beaucoup de trafic vers la base de données. Hier, pendant le processus de mettre les vieux serveurs hors service, nous avons éteint quelques serveurs qui selon notre outil d’inventaire n’étaient pas en production.
 
Vous pouvez deviner la suite de l’histoire.
 
Quelques minutes plus tard, le lanceur, les actualités et les pages du client ont disparu. Le lanceur disait « undefined » au lieu de « JOUER ». Les joueurs du monde entier se sont retrouvés dans l’incapacité de se connecter.
 
Le contenu des serveurs web en charge de la mise en cache avait expiré, ils se sont donc tournés vers la base de données pour obtenir du nouveau contenu, cependant ils ne pouvaient atteindre la base de données puisqu’elle était hors ligne. Nous avons coupé des serveurs qui étaient en production par accident, car ils étaient indiqués par erreur comme n’étant pas en production.
 
Après quelques coups de fil en panique à notre équipe dans le centre de données, les serveurs de base de données furent remis en service. Un serveur de base de données fait ce qu’il est censé faire après une mise en arrêt incorrecte, il passe en mode récupération et vérifie l’intégrité des données. Selon la taille des données ce processus peut prendre assez longtemps. Dans notre cas c’est ce qui s’est passé et nous avons dû faire nos vérifications d’intégrité.
 
En parallèle nous avons commencé à implémenter un correctif qui permettrait au bouton « JOUER » de s’afficher au cas où le processus de récupération prendrait un long moment. Les bases de données ont mis un certain temps pour récupérer, c’est pourquoi nous avons utilisé le correctif pour revenir à un état de marche, bien que la récupération n’était pas terminée. 
 
FAQ :
 
WTF Rincewind c'est une erreur d'amateur, comment pouvez-vous mettre des services hors ligne sans vérification ?
 
C'est une erreur dont nous avons tiré des leçons et nous allons éduquer notre équipe sur comment utiliser ces outils de manière efficace, mais aussi s'assurer de la véracité des informations présentées. C'est un symptôme d'un environnement qui passe d'un ancien processus à un nouveau processus. Cette situation se présente souvent pour des petites entreprises qui grandissent exponentiellement en peu de temps.
 
Pourquoi ne pas vous être rabattus sur les bases de données esclaves pour tout remettre en ligne ?
 
Nous avons accidentellement mis les bases de données esclaves hors service dans le cadre de la mise hors service des vieux serveurs.
 
Euh...il semblerait que vous ayez des points d'échec singuliers
 
C'est vrai et c'est quelque chose que nous corrigeons en ce moment même. Nous allons nous assurer qu'aucune base de données ne soit responsable de stocker les informations de toutes les régions. Tous les systèmes sont en train d'être découplés afin de devenir leur propre service pour qu'ils ne causent pas un "effet domino" de se mettre hors ligne les uns les autres.
 
Comment pouvez-vous garantir que ceci ne se reproduira pas une fois le nouveau centre de données d'Amsterdam opérationnel ?
 
Nous construisons le centre de données d'Amsterdam de zéro, Nous ne serons plus affectés par de vieux outils ou des informations potentiellement obsolètes. Nous avons de meilleurs outils pour gérer ces environnements sans être affectés par une infrastructure dépassée. Nous sommes tous impatients que le nouveau centre de données soit opérationnel.
 
 
Le moins qu'on puisse dire, c'est qu'il n'y a pas qu'aux joueurs que ça donne un facepalm...
 
Leave Comments