30/09/2016

GitHub publiera sa solution d’équilibrage de charge

Originellement crée pour répondre à aux millions de connexions journalières enregistrées par la plateforme de partage de code, la solution d’équilibrage de charge développée en interne par GitHub sera bientôt disponible en open source.

La plateforme de partage de code GitHub va bientôt mettre à disposition de la communauté open source sa solution GLB (GitHub Load Balancer) capable de gérer des millions de connexions HTTP et SSH journalières. La société publiera les composants de GLB et partagera aussi ses détails de conceptions.

De l’évolutivité verticale à l’évolutivité horizontale

« historiquement, un des composants les plus complexes de notre plateforme se situe au niveau de l’équilibrage de charge », indiquent Joe Williams, ingénieur infrastructure senior chez GihHub et The Julienne, ingénieur-manager de l’ infrastructure dans un bulletin rédigé ensemble. «Auparavant nous répondions au problème avec une évolutivité verticale [...] utilisant une configuration matérielle spécifique permettant un lien 10G de basculement ».

Cependant, quand l’équilibrage de charge de la plateforme a atteint ses limites, la société a dû se résoudre à développer sa propre solution. Cette nouvelle plateforme devait atteindre des objectifs clairs, comme l’évolutivité horizontale, une haute disponibilité, le support du drainage de connexion et une grande robustesse aux attaques de type déni de service. « Pour réussir cela, nous avons du repenser la relation entre les adresses IP et les machines hôtes, les couches constituantes de notre service d’équilibrage de charge, et comment les connexions sont routées, contrôlées et closes ».

Hachage rendezvous

En concevant son équilibrage de charge, GitHub a recherché l’amélioration du motif commun pour la gestion de direction du trafic. La société a établi une variante de l’algorithme de hachage rendezvous supportant de multiples paramètres. Avec ce choix, chaque hôte de proxy est stocké et assigné à un état, qui gère le drainage de connexion. Une table de transfert de taille fixe est générée et chaque ligne est remplie avec un serveur proxy en utilisant les composants ordonnés d’un hachage rendezvous. La table et l’état du proxy sont envoyés aux serveurs de direction et maintenus synchronisés.

L’intérêt de cette approche réside dans la possibilité de retirer des nœuds de proxy ou de direction sans interruption de service. Williams et Julienne commentent : «certains utilisateurs vivent dans des pays avec une connectivité internet moins qu’idéale, et il était important pour nous de pouvoir assurer l’exécution d’opérations longues comme le clonage de répertoires de taille raisonnable sans interruption lors d’une phase de maintenance planifiée ».

Source : www.infoworld.com

Actualités