{"id":1017,"date":"2012-11-06T12:45:56","date_gmt":"2012-11-06T11:45:56","guid":{"rendered":"http:\/\/blogdev.alwaysdata.com\/2012\/11\/06\/retour-sur-la-panne-http4-du-21-octobre\/"},"modified":"2018-02-19T11:00:33","modified_gmt":"2018-02-19T10:00:33","slug":"retour-sur-la-panne-http4-du-21-octobre","status":"publish","type":"post","link":"https:\/\/blog.alwaysdata.com\/fr\/2012\/11\/06\/retour-sur-la-panne-http4-du-21-octobre\/","title":{"rendered":"Retour sur la panne http4 du 21 octobre"},"content":{"rendered":"<p>Le dimanche 21 octobre, le serveur http4 a&nbsp;\u00e9t\u00e9 indisponible de 1h02 \u00e0&nbsp;10h17 (UTC+2). Cet article revient sur cette panne anormalement longue&nbsp;: ce qui s\u2019est pass\u00e9 en d\u00e9tails, ce que nous allons faire pour que cela ne se reproduise plus, et une mise au point sur la redondance.<\/p>\n<h2>Ce qui s\u2019est&nbsp;pass\u00e9<\/h2>\n<p>Samedi, \u00e0&nbsp;16h51, le serveur http4 a&nbsp;\u00e9t\u00e9 retrouv\u00e9 totalement freez\u00e9. Nous l\u2019avons red\u00e9marr\u00e9, puis surveill\u00e9 la situation\u200a\u2014\u200ales logs n\u2019apportaient aucune indication. Un freeze peut \u00eatre caus\u00e9 par un probl\u00e8me mat\u00e9riel ou logiciel&nbsp;; impossible \u00e0&nbsp;ce moment d\u2019\u00eatre certain de l\u2019origine.<\/p>\n<p>\u00c0 22h01, le probl\u00e8me s\u2019est manifest\u00e9 \u00e0&nbsp;nouveau. Les logs nous ont cette fois-ci permis d\u2019identifier \u00e0&nbsp;coup s\u00fbr l\u2019origine mat\u00e9rielle (carte m\u00e8re en fin de vie). Nous avons donc programm\u00e9 avec notre fournisseur le remplacement de la carte pour le d\u00e9but de la nuit, \u00e0&nbsp;1h00.<\/p>\n<p>\u00c0 1h02, le serveur est mis hors service pour proc\u00e9der au remplacement de la carte m\u00e8re. En temps normal, ce genre d\u2019op\u00e9ration dure moins de 30 minutes.<\/p>\n<p>Apr\u00e8s le changement de la carte m\u00e8re, le serveur refusait de d\u00e9marrer. L\u2019int\u00e9gralit\u00e9 de la RAM a&nbsp;\u00e9t\u00e9 chang\u00e9e, ce qui a&nbsp;r\u00e9solu ce probl\u00e8me. Seconde anomalie, la carte r\u00e9seau (Intel 10Gb) affichait en boucle&nbsp;:<\/p>\n<pre>ixgbe 0000:04:00.0: eth0: Reset adapter\nixgbe 0000:04:00.0: eth0: detected SFP+: 0<\/pre>\n<p>Le reste du syst\u00e8me fonctionnait bien, le noyau se comportait normalement. Le technicien a&nbsp;donc essay\u00e9 d\u2019identifier la cause du probl\u00e8me et a&nbsp;notamment&nbsp;:<\/p>\n<ul>\n<li>v\u00e9rifi\u00e9 le c\u00e2blage&nbsp;;<\/li>\n<li>v\u00e9rifi\u00e9 la configuration du switch&nbsp;;<\/li>\n<li>chang\u00e9 la carte r\u00e9seau pour un mod\u00e8le identique&nbsp;;<\/li>\n<li>remis l\u2019ancienne carte r\u00e9seau&nbsp;;<\/li>\n<li>remis l\u2019ancienne carte&nbsp;m\u00e8re&nbsp;;<\/li>\n<li>remis la nouvelle carte&nbsp;m\u00e8re&nbsp;;<\/li>\n<li>mis \u00e0&nbsp;jour le BIOS de la carte&nbsp;m\u00e8re&nbsp;;<\/li>\n<li>mis \u00e0&nbsp;jour le firmware de la carte r\u00e9seau.<\/li>\n<\/ul>\n<p>Sans succ\u00e8s. Le technicien a&nbsp;ensuite d\u00e9cid\u00e9 de monter en urgence un serveur neuf, \u00e0&nbsp;la configuration identique, et d\u2019y ins\u00e9rer les disques de notre serveur. Sans que cela ne r\u00e9solve le probl\u00e8me.<\/p>\n<p>Il faut ajouter une pr\u00e9cision importante&nbsp;: seul notre propre noyau Linux (celui que nous compilons et maintenons, avec notre propre configuration) pr\u00e9sentait le bug. Le noyau standard de notre fournisseur, lui, fonctionnait correctement, ce qui semble exclure un probl\u00e8me mat\u00e9riel\/c\u00e2blage. N\u00e9anmoins, notre noyau fonctionnait parfaitement jusqu\u2019\u00e0 pr\u00e9sent sur ce serveur\u2026 ce qui rend la panne d\u2019autant plus myst\u00e9rieuse.<\/p>\n<p>Enfin, un technicien senior a, peu avant 10h, pu r\u00e9cup\u00e9rer un mod\u00e8le de carte r\u00e9seau tr\u00e8s l\u00e9g\u00e8rement diff\u00e9rent (toujours une Intel 10Gb) : cela a&nbsp;finalement r\u00e9solu le probl\u00e8me.<\/p>\n<h2>Diminuer les risques \u00e0&nbsp;l\u2019avenir<\/h2>\n<p>Le probl\u00e8me d\u2019origine\u200a\u2014\u200ala carte r\u00e9seau qui subitement refuse de fonctionner\u200a\u2014\u200areste myst\u00e9rieux et non \u00e9lucid\u00e9. Ce peut \u00eatre d\u00fb \u00e0&nbsp;un bug particuli\u00e8rement capricieux du driver noyau, par exemple. Il est impossible de se pr\u00e9munir contre ce genre d\u2019anomalie, heureusement exceptionnellement rare.<\/p>\n<p>C\u2019est n\u00e9anmoins la premi\u00e8re fois, en 6&nbsp;ans, que nous sommes confront\u00e9s \u00e0&nbsp;une panne sur un serveur d\u2019une telle ampleur. Nous pouvons en tirer plusieurs conclusions.<\/p>\n<h3>Privil\u00e9gier les serveurs des gammes les plus courantes<\/h3>\n<p>Notre fournisseur (OVH, en l\u2019occurrence), propose des serveurs de diff\u00e9rentes gammes. Le serveur http4, datant de d\u00e9but 2010, fait partie de la plus haute gamme, avec davantage encore de protections que les serveurs plus classiques (par exemple, ils disposent d\u2019une double alimentation ou de connexions r\u00e9seau 10 Gb\/s).<\/p>\n<p>D\u2019exp\u00e9rience (nous avons des serveurs de toutes les gammes), nous constatons que&nbsp;:<\/p>\n<ul>\n<li>la fiabilit\u00e9 mat\u00e9rielle th\u00e9oriquement sup\u00e9rieure des serveurs haut de gamme n\u2019est pas significativement diff\u00e9rente de celles des autres gammes&nbsp;;<\/li>\n<li>le parc de serveurs haut de gamme de notre fournisseur est bien plus limit\u00e9 que celui des autres serveurs. En cons\u00e9quence, et d\u2019apr\u00e8s notre exp\u00e9rience subjective et limit\u00e9e&nbsp;:&nbsp;<ul>\n<li>ces serveurs semblent davantage susceptibles d\u2019\u00eatre victimes de certains types de bugs \u00ab&nbsp;rares&nbsp;\u00bb (mat\u00e9riel, routage) : plus il y&nbsp;a d\u2019utilisateurs d\u2019un \u00e9quipement X, plus vite les \u00e9ventuels bugs seront d\u00e9tect\u00e9s et corrig\u00e9s&nbsp;;<\/li>\n<li>les techniciens (de niveau 1) \u00e9tant moins fr\u00e9quemment confront\u00e9s \u00e0&nbsp;ces serveurs, ils ont globalement moins d\u2019exp\u00e9rience dessus. Exp\u00e9rience pr\u00e9cieuse en cas de probl\u00e8me urgent&nbsp;;<\/li>\n<li>les chances d\u2019avoir un serveur de remplacement d\u00e9j\u00e0 pr\u00eat \u00e0&nbsp;l\u2019emploi sont plus faibles.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>En faisant le bilan, nous constatons que la fiabilit\u00e9 des serveurs haut de gamme aura plut\u00f4t tendance \u00e0&nbsp;\u00eatre inf\u00e9rieure \u00e0&nbsp;celle des autres gammes, paradoxalement. Nous allons donc cesser progressivement d\u2019utiliser ces serveurs (en mutualis\u00e9, http4 et http6 sont concern\u00e9s).<\/p>\n<p><em>Si http4 avait \u00e9t\u00e9 sur un serveur de gamme standard, il est possible que le bug mystique de la carte r\u00e9seau aurait d\u00e9j\u00e0 \u00e9t\u00e9 d\u00e9couvert et r\u00e9solu avant qu\u2019il ne nous impacte. Par ailleurs, des serveurs de secours auraient probablement \u00e9t\u00e9 disponibles plus rapidement.<\/em><\/p>\n<h3>S\u2019assurer que nos serveurs peuvent d\u00e9marrer avec le noyau de notre fournisseur<\/h3>\n<p>Notre fournisseur permet d\u2019utiliser leur propre noyau Linux pr\u00e9compil\u00e9. Nous ne les utilisons pas pour de nombreuses raisons, notamment l\u2019impossibilit\u00e9 d\u2019en choisir la version, d\u2019appliquer des patches ou de modifier la configuration.<\/p>\n<p>S\u2019il n\u2019est donc pas question de nous mettre \u00e0&nbsp;utiliser les noyaux standards de notre fournisseur (\u00e0 cause des limitations indiqu\u00e9es), il serait souhaitable qu\u2019en cas d\u2019urgence, il soit au moins possible de booter nos serveurs avec. Ne serait-ce que pour aider au d\u00e9bogage.<\/p>\n<p>Concr\u00e8tement, les modifications \u00e0&nbsp;apporter \u00e0&nbsp;la configuration de nos serveurs est minime.<\/p>\n<p><em>Si nous avions pu d\u00e9marrer http4 sur le noyau de notre fournisseur, le serveur aurait \u00e9t\u00e9 \u00e0&nbsp;nouveau accessible bien plus rapidement. Quitte \u00e0&nbsp;ce que certaines fonctionnalit\u00e9s non essentielles soient d\u00e9sactiv\u00e9es.<\/em><\/p>\n<h3>Permettre d\u2019acc\u00e9der rapidement aux donn\u00e9es en mode rescue<\/h3>\n<p>En cas de probl\u00e8me, il est possible de d\u00e9marrer les serveurs dans un mode rescue (boot via TFTP\/NFS). Les disques durs ne sont alors pas du tout utilis\u00e9s par le syst\u00e8me, ce qui garantit th\u00e9oriquement que ce mode rescue est accessible m\u00eame en cas de probl\u00e8me de configuration.<\/p>\n<p>Nous allons d\u00e9sormais disposer de notre propre serveur de secours (<em>spare<\/em>). En cas de probl\u00e8me mat\u00e9riel ou logiciel grave qui ne peut \u00eatre r\u00e9solu rapidement, nous aurons alors la possibilit\u00e9 de d\u00e9marrer le serveur en question en rescue, puis d\u2019exporter sa partition de donn\u00e9es vers le serveur de secours. Ce dernier prendra alors le relai du serveur en panne, lequel pourra \u00eatre d\u00e9bogu\u00e9 calmement ensuite. Nous avons simul\u00e9 cette bascule ces derniers jours, avec succ\u00e8s.<\/p>\n<h3>Des techniciens de niveau 2, 24h\/24<\/h3>\n<p>\u00c0 l\u2019heure actuelle, des techniciens de niveau 2&nbsp;ne sont pas syst\u00e9matiquement pr\u00e9sents chaque nuit. En l\u2019occurrence, la panne est arriv\u00e9e un dimanche, les techniciens de niveau 2&nbsp;n\u2019arrivaient pas avant 10h. Notre fournisseur nous a&nbsp;indiqu\u00e9 travailler sur ce point et proc\u00e9der actuellement \u00e0&nbsp;de nombreux recrutements pour atteindre l\u2019objectif d\u2019avoir des techniciens de niveau 2, 24h\/24.<\/p>\n<h2>Et la redondance&nbsp;?<\/h2>\n<p>Nos serveurs \u00e9taient jusqu\u2019\u00e0 peu redond\u00e9s en Irlande, utilisant la technologie <a href=\"http:\/\/www.drbd.org\/\">DRBD<\/a>. Cette redondance en temps r\u00e9el, mise en place d\u00e8s le d\u00e9but d\u2019alwaysdata, avait pour but de pallier les pannes graves (mat\u00e9rielles, r\u00e9seau) qui pourraient s\u2019\u00e9terniser en basculant vers le datacenter de secours. Pourquoi ce basculement n\u2019a pas \u00e9t\u00e9&nbsp;fait&nbsp;?<\/p>\n<p>Apr\u00e8s plusieurs ann\u00e9es \u00e9quip\u00e9s de cette redondance, nous avons progressivement&nbsp;commenc\u00e9 \u00e0&nbsp;la d\u00e9sactiver sur certains serveurs. Les raisons sont les suivantes&nbsp;:<\/p>\n<ul>\n<li>la stabilit\u00e9 n\u2019est pas suffisante. DRBD a&nbsp;trop souvent \u00e9t\u00e9 la source de blocages\/plantages sur le serveur primaire, et ce malgr\u00e9 les mises \u00e0&nbsp;jour fr\u00e9quentes. Il suffit de regarder le <a href=\"http:\/\/git.drbd.org\/?p=drbd-8.4.git;a=blob;f=ChangeLog;hb=HEAD\">changelog<\/a> pour constater que chaque nouvelle version corrige des bugs assez graves. Nous utilisons DRBD dans un mode WAN qui n\u2019est pas le plus fr\u00e9quent, ce qui pourrait expliquer la relative instabilit\u00e9&nbsp;;<\/li>\n<li>nous n\u2019avions jamais eu, en 6&nbsp;ans, de panne exceptionnelle justifiant de basculer vers le datacenter de secours (la panne de http4 est la toute premi\u00e8re). C\u2019est une bonne nouvelle&nbsp;: cela signifie que la stabilit\u00e9 de notre fournisseur principal est tr\u00e8s&nbsp;bonne&nbsp;;<\/li>\n<li>la redondance a&nbsp;un co\u00fbt&nbsp;:&nbsp;<ul>\n<li>(assez faible) sur les performances IO des serveurs,<\/li>\n<li>(non n\u00e9gligeable) sur la complexit\u00e9 de notre architecture,<\/li>\n<li>(faible) financier&nbsp;;<\/li>\n<\/ul>\n<\/li>\n<li>moins on a&nbsp;l\u2019occasion d\u2019effectuer en situations r\u00e9elles la bascule vers le datacenter secondaire, plus on court de risques que tout ne se passe pas parfaitement le jour o\u00f9 on doit le faire \u2013 malgr\u00e9 les simulations.<\/li>\n<\/ul>\n<p>Le bilan est donc sans appel&nbsp;: la redondance ne nous a&nbsp;jamais servi, mais a&nbsp;caus\u00e9 \u00e0&nbsp;plusieurs reprises des pannes. C\u2019est indiscutablement un paradoxe&nbsp;: la redondance a&nbsp;diminu\u00e9 la disponibilit\u00e9 moyenne.<\/p>\n<p>On peut toutefois se demander pourquoi ne pas avoir activ\u00e9 la redondance lors de pannes de plus petite ampleur (&gt;= 30 minutes)&nbsp;:<\/p>\n<ul>\n<li>les pannes de petite ampleur d\u2019origine mat\u00e9rielle ou r\u00e9seau (les seules susceptibles d\u2019\u00eatre \u00e9limin\u00e9es par un basculement) sont tout d\u2019abord tr\u00e8s rares. Sur les 64 pannes r\u00e9f\u00e9renc\u00e9es depuis que nous avons notre <a href=\"http:\/\/status.alwaysdata.com\">page d\u2019\u00e9tat des services<\/a>, seules 3&nbsp;ont dur\u00e9 plus de 30 minutes et auraient pu \u00eatre \u00e9ligibles \u00e0&nbsp;un basculement vers le serveur secondaire&nbsp;;<\/li>\n<li>le basculement n\u2019est pas instantan\u00e9&nbsp;: le serveur secondaire doit prendre le relai, et surtout les DNS doivent \u00eatre mis \u00e0&nbsp;jour. En pratique, sur du HTTP, il faut environ 30 minutes pour que la grande majorit\u00e9 des nouvelles connexions soient effectu\u00e9es sur la nouvelle IP&nbsp;;<\/li>\n<li>cons\u00e9quence du point pr\u00e9c\u00e9dent&nbsp;: le basculement peut \u00eatre contre-productif. Si on d\u00e9cide le basculement apr\u00e8s 30 minutes de panne, mais que cette derni\u00e8re est r\u00e9solue 5&nbsp;minutes apr\u00e8s, on va devoir rebasculer vers le serveur primaire. Au final, il aurait mieux fallu ne rien faire. Or la plupart des pannes qui durent plus de 30 minutes durent moins de 60 minutes&nbsp;;<\/li>\n<li>le basculement pr\u00e9sente des risques de split-brain si on ne peut pas s\u2019assurer que la machine primaire est hors service. Cela rend la bascule assez risqu\u00e9e lors d\u2019une panne de r\u00e9seau, notamment.<\/li>\n<\/ul>\n<p>Au final, m\u00eame si&nbsp;la panne de http4 aurait justifi\u00e9 de basculer (panne longue, serveur hors service), nous ne remettons pas en cause notre d\u00e9cision d\u2019arr\u00eater la redondance.<\/p>\n<p>Une erreur toutefois&nbsp;: nous aurions d\u00fb annoncer publiquement l\u2019arr\u00eat de cette redondance, fut-elle partielle (certains serveurs ont encore la redondance d\u2019activ\u00e9e \u00e0&nbsp;l\u2019heure actuelle). C\u2019est d\u00e9sormais chose&nbsp;faite.<\/p>\n<h3>D\u2019autres formes de redondance \u00e0&nbsp;l\u2019avenir&nbsp;?<\/h3>\n<p>Si nous arr\u00eatons aujourd\u2019hui la redondance via DRBD, il est possible que nous nous dirigions \u00e0&nbsp;l\u2019avenir vers d\u2019autres formes de redondance\u200a\u2014\u200apar exemple une r\u00e9plication des bases de donn\u00e9es ou une synchronisation syst\u00e9matique des syst\u00e8mes de fichiers. Le but ne serait toutefois pas uniquement d\u2019am\u00e9liorer la disponibilit\u00e9 mais d\u2019offrir d\u2019autres avantages, par exemple en termes de performances.<\/p>\n<p>Pr\u00e9cisons que la suppression de la redondance en temps r\u00e9el n\u2019a strictement aucun lien avec les sauvegardes, toujours effectu\u00e9es quotidiennement et conserv\u00e9es pendant 30&nbsp;jours.<\/p>\n<h2>En conclusion<\/h2>\n<p>Nous pr\u00e9sentons toutes nos excuses \u00e0&nbsp;nos clients pour cette panne exceptionnelle.&nbsp;Ceux qui ont \u00e9t\u00e9 impact\u00e9s peuvent ouvrir un ticket en demandant le remboursement int\u00e9gral du mois d\u2019octobre, comme nos&nbsp;<a href=\"https:\/\/www.alwaysdata.com\/tos\/\">conditions g\u00e9n\u00e9rales de vente<\/a> le stipulent.<\/p>\n<p>Rappelons notre attachement \u00e0&nbsp;fournir le meilleur taux de disponibilit\u00e9 possible, m\u00eame sur un environnement mutualis\u00e9. C\u2019est un challenge quotidien, compte tenu de la grande souplesse que nous offrons (e.g. ouvrir un compte sans payer,&nbsp;pouvoir faire tourner n\u2019importe quel processus sur son compte).<\/p>\n<p>Promettre qu\u2019il n\u2019y aura plus jamais de grosse panne serait illusoire&nbsp;: personne ne peut garantir cela. Ce que nous promettons, c\u2019est une transparence totale, <a href=\"http:\/\/status.alwaysdata.com\/operation\/64\/\">durant l\u2019incident<\/a> et apr\u00e8s, avec des mesures concr\u00e8tes pour \u00e9viter que cela ne se reproduise. Et des r\u00e9ponses \u00e0&nbsp;vos questions, si vous en&nbsp;avez.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le dimanche 21 octobre, le serveur http4 a&nbsp;\u00e9t\u00e9 indisponible de 1h02 \u00e0&nbsp;10h17 (UTC+2). Cet article revient sur cette panne anormalement longue&nbsp;: ce qui s\u2019est pass\u00e9 \u2026 <a class=\"read-more\" href=\"https:\/\/blog.alwaysdata.com\/fr\/2012\/11\/06\/retour-sur-la-panne-http4-du-21-octobre\/\">Keep reading<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[1],"tags":[148],"class_list":["post-1017","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-panne-fr"],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts\/1017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/comments?post=1017"}],"version-history":[{"count":0,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts\/1017\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/media?parent=1017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/categories?post=1017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/tags?post=1017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}