BLOG

L'art de mettre à l'échelle les conteneurs : Disjoncteurs

Miniature de Lori MacVittie
Lori MacVittie
Publié le 18 janvier 2018

La mise à l’échelle des conteneurs ne se résume pas simplement à placer un proxy devant un service et à s’en aller. La mise à l'échelle ne se limite pas à la distribution. Dans le monde en évolution rapide des conteneurs, cinq capacités distinctes sont nécessaires pour garantir la mise à l'échelle : les nouvelles tentatives , les disjoncteurs, la découverte , la distribution et la surveillance .

Dans ce deuxième article sur l’art de mettre à l’échelle les conteneurs, nous allons nous pencher sur les disjoncteurs.

Disjoncteurs

Thomas Edison, célèbre pour avoir inventé des milliers de gadgets qui ne fonctionnaient pas et quelques-uns célèbres qui fonctionnaient, nous a donné le concept de disjoncteur dans une demande de brevet de 1879. Oui, les brevets existaient déjà à cette époque. Alors que la version d’Edison utilisait des fusibles, qui doivent être remplacés (certains d’entre nous se souviennent peut-être de les avoir cherchés frénétiquement dans nos vieilles voitures), les versions plus modernes sont conçues pour « déclencher » et arrêter le flux d’électricité. Ils peuvent ensuite être réinitialisés, rétablissant ainsi le flux et le fonctionnement normaux.

Dans le contexte de l’échelle, les disjoncteurs fonctionnent sur le même principe. Ils détectent un « débordement » et le coupent délibérément pour éviter de surcharger les services à l’autre bout de la connexion. Ils peuvent également être réinitialisés, rétablissant ainsi le flux normal des demandes et des réponses.

Les disjoncteurs font partie des proxys d’équilibrage de charge depuis un certain temps. Le principe est que si – après X tentatives – vous ne parvenez toujours pas à joindre un service donné, celui-ci est hors service. Il y a des raisons de continuer à lui demander quelque chose qu’il ne peut pas vous donner, et cela ne fait que gaspiller des ressources au niveau du proxy et du réseau. Ainsi, après un nombre (généralement) configurable d’échecs, un proxy « cassera » le circuit et refusera de tenter d’autres connexions.

Ce n’est pas la même chose qu’une nouvelle tentative, même si le processus semble similaire. Les nouvelles tentatives partent du principe que la demande finira par aboutir. Un disjoncteur fonctionne sur le principe que la demande échouera, ce qui permet d'éviter de perdre du temps et des ressources.

Une fois le problème résolu, le disjoncteur peut être « réinitialisé » et le flux normal peut reprendre.

Au début, ce processus était manuel. Un opérateur a dû effectuer la réinitialisation après s’être assuré que le service cible était bel et bien de nouveau en service. Ces dernières années, ce processus a été automatisé grâce à l’utilisation de la surveillance de la santé. Cela comprend généralement des tentatives périodiques pour atteindre le service et, en cas de succès, réinitialise le disjoncteur pour permettre à nouveau un fonctionnement normal.

Les disjoncteurs sont particulièrement importants dans un environnement de microservices conteneurisés en raison du volume élevé de trafic circulant vers et depuis et entre les services. Bien que certaines défaillances puissent être reconnues rapidement, d’autres ne seront pas remarquées avant un long délai d’attente TCP dû à des problèmes dans la pile réseau. Les délais d'attente entraînent une latence indésirable, c'est pourquoi les coupures de circuit et les nouvelles tentatives doivent prendre en compte les tolérances globales de l'application (ou l'intolérance, selon le cas) en matière de latence. La configuration de ces valeurs doit prendre en compte les valeurs de délai d’expiration et les attentes de l’entreprise en matière de performances. Une faible tolérance à la latence peut nécessiter moins de tentatives et un comportement de coupure de circuit plus rapide.