GitHub a dévoilé son code d'équilibrage de charge - Comment fonctionne leur solution

La semaine dernière, les développeurs de GitHub ont téléchargé le code source de leur équilibreur de charge - GLB Director. L'équipe a travaillé sur ce projet pendant plusieurs années.

Ce qui est remarquable, c'est leur décision, comment cela est organisé et qui d'autre a transféré les systèmes d'équilibrage de charge vers l'open source, nous dirons plus loin.


/ Flickr / theilr / cc

Pourquoi GitHub possède son propre équilibreur


GitHub utilise une infrastructure de cloud nu pour augmenter la productivité. Dans ce cas, le logiciel fonctionne sans niveaux supplémentaires de virtualisation sur le métal nu.

Auparavant, la société utilisait haproxy avec une configuration matérielle spéciale pour fournir un équilibrage de charge, qui offrait une tolérance aux pannes pour les connexions Ethernet 10 gigabits. Cependant, cette approche n'a pas bien évolué (mise à l'échelle verticale implicite), et GitHub a décidé d'écrire son propre équilibreur de charge, qui pourrait toujours fonctionner sur du matériel à faible coût.

Que peut et comment GLB Director


L'équilibreur GitHub garantit des connexions TCP ininterrompues, gère la charge des services individuels, résiste aux attaques DDoS et peut évoluer horizontalement. Il est « réglé » pour fonctionner dans les centres de données, où un grand nombre de serveurs annoncent une adresse IP via BGP , et les routeurs utilisent la stratégie ECMP .

L'équilibrage de charge est effectué aux niveaux L4 et L7. Contrairement aux solutions comme LVS , GLB Director n'achemine pas tous les paquets vers un nœud directeur, de sorte qu'ils peuvent ensuite être redistribués entre d'autres nœuds. Au lieu de cela, il utilise une variation de hachage de hachage de rendez - vous ( HRW ) pour créer une table statique pour sélectionner une paire de serveurs proxy (principal et secondaire) pour chaque connexion entrante. Si l'un d'eux échoue, le paquet est envoyé au second. Le système se souvient de ce choix et il n'est pas nécessaire de le faire pour chaque package.

La «santé» des serveurs est surveillée par la solution glb-healthcheck, qui commute les systèmes primaires et secondaires en cas de problème. glb-healthcheck surveille le bon fonctionnement de chaque tunnel GUE (encapsulation générique UDP) et d'un port HTTP arbitraire des serveurs principaux.

GLB utilise également le système Netfilter et l'utilitaire iptables . Netfilter résout une tâche simple: il détermine si le paquet TCP / IP interne dans chaque paquet GUE est conforme à la pile TCP du noyau Linux. Sinon, il redirige le paquet vers le serveur proxy secondaire, plutôt que de le décapsuler localement.

Le diagramme d'interaction des composants ressemble à ceci:


GitHub espère que leur équilibreur sera utile à toutes les entreprises qui ont leurs propres centres de données.

Comment installer GLB et commencer à travailler avec lui peut être trouvé dans le guide de démarrage rapide préparé par les développeurs .

Développements similaires


En mai, Facebook a également partagé le code source de sa bibliothèque d'équilibrage de charge Katran. Le géant informatique l' utilise pour répartir efficacement la charge entre les serveurs backend.

L'ancien équilibreur de la société - L4LB - ne pouvait pas faire face à la tâche, car il nécessitait des serveurs dédiés pour le travail, ce qui augmentait la charge sur le réseau. Pour résoudre ce problème, l'entreprise a développé Katran. Il est lancé à l'aide de l'infrastructure eXpress Data Path et de la machine virtuelle eBPF. La machine virtuelle étend les fonctionnalités générales en exécutant des programmes à des points individuels sur le noyau Linux.


/ Flickr / da sal / cc

L'équilibreur mis à jour répartit plus efficacement la charge sur l'infrastructure et augmente la vitesse de traitement des paquets. Les développeurs de code source "téléchargés" sur GitHub.

Le système Katran présente plusieurs différences par rapport à la solution proposée dans GitHub. Par exemple, Facebook utilise des tunnels XDP et IPIP qui fonctionnent avec le noyau Linux. GLB, en revanche, a eu recours à l'aide de DPDK pour traiter les paquets à partir de l'espace utilisateur.

Theo Julienne, le développeur de GitHub, a ajouté que DPDK vous permet de gérer de gros volumes de trafic entrant. Cela garantit des performances élevées (connexion 10 gigabits) même dans des environnements de travail complexes et offre une certaine protection contre les attaques DDoS.

Le transfert d'outils puissants tels que GLB et Katran vers l'open source ouvrira de nouvelles opportunités pour d'autres sociétés informatiques et contribuera au développement plus rapide de l'écosystème informatique dans le monde.



PS Quelques articles supplémentaires du premier blog IaaS d'entreprise:



Source: https://habr.com/ru/post/fr420093/


All Articles