GitHub enthüllte ihren Load Balancer Code - wie ihre Lösung funktioniert

Letzte Woche haben Entwickler von GitHub den Quellcode ihres Load Balancers - GLB Director - hochgeladen . Das Team hat mehrere Jahre an diesem Projekt gearbeitet.

Bemerkenswert ist ihre Entscheidung, wie sie angeordnet ist und wer die Lastausgleichssysteme noch auf Open Source übertragen hat, sagen wir weiter.


/ Flickr / theilr / cc

Warum GitHub eigenen Balancer


GitHub verwendet eine Bare-Metal- Cloud-Infrastruktur, um die Produktivität zu steigern. In diesem Fall funktioniert die Software ohne zusätzliche Virtualisierungsebenen auf dem Bare Metal.

Zuvor verwendete das Unternehmen Haproxy mit einer speziellen Hardwarekonfiguration für den Lastausgleich, die Fehlertoleranz für 10-Gigabit-Ethernet-Verbindungen bot. Dieser Ansatz war jedoch nicht gut skalierbar (implizite vertikale Skalierung), und GitHub entschied sich, einen eigenen Load Balancer zu schreiben, der immer noch auf kostengünstiger Hardware funktioniert.

Was kann und wie macht GLB Director


Der GitHub-Balancer stellt unterbrechungsfreie TCP-Verbindungen sicher, verwaltet die Auslastung einzelner Dienste, ist resistent gegen DDoS-Angriffe und kann horizontal skaliert werden. Es ist für die Arbeit in Rechenzentren „ eingesperrt “, in denen eine große Anzahl von Servern eine einzige IP-Adresse über BGP ankündigt und Router die ECMP- Strategie verwenden.

Der Lastausgleich wird auf den Ebenen L4 und L7 durchgeführt. Im Gegensatz zu Lösungen wie LVS leitet GLB Director nicht alle Pakete an einen Director-Knoten, um sie zwischen anderen Knoten zu verteilen. Stattdessen wird eine Rendezvous-Hashing-Hashing-Variante ( HRW ) verwendet, um eine statische Tabelle zu erstellen, in der für jede eingehende Verbindung ein Paar von Proxyservern (primär und sekundär) ausgewählt wird. Wenn einer von ihnen fehlschlägt, wird das Paket an den zweiten gesendet. Das System merkt sich diese Auswahl und muss nicht für jedes Paket getroffen werden.

Der „Zustand“ der Server wird durch die glb-healthcheck-Lösung überwacht, die bei Problemen zwischen primären und sekundären Systemen wechselt. glb-healthcheck überwacht den korrekten Betrieb jedes GUE- Tunnels (Generic UDP Encapsulation) und eines beliebigen HTTP-Ports von Backend-Servern.

GLB verwendet auch das Netfilter- System und das Dienstprogramm iptables . Netfilter löst eine einfache Aufgabe: Es bestimmt, ob das interne TCP / IP-Paket in jedem GUE-Paket dem Linux-Kernel-TCP-Stack entspricht. Wenn nicht, wird das Paket an den sekundären Proxyserver umgeleitet, anstatt es lokal zu entkapseln.

Das Interaktionsdiagramm der Komponenten sieht folgendermaßen aus:


GitHub hofft, dass ihr Balancer für alle Unternehmen mit eigenen Rechenzentren nützlich sein wird.

Wie Sie GLB installieren und damit arbeiten, finden Sie in der von den Entwicklern erstellten Kurzanleitung .

Ähnliche Entwicklungen


Im Mai teilte Facebook auch den Quellcode für seine Katran Load Balancer-Bibliothek mit. Der IT-Riese nutzt es, um die Last effizient auf die Backend-Server zu verteilen.

Der bisherige Balancer des Unternehmens - L4LB - konnte die Aufgabe nicht bewältigen, da für die Arbeit dedizierte Server erforderlich waren, was die Belastung des Netzwerks erhöhte. Um dieses Problem zu lösen, entwickelte das Unternehmen Katran. Es wird mit dem eXpress Data Path-Framework und der virtuellen eBPF-Maschine gestartet. Die VM erweitert die allgemeine Funktionalität, indem Programme an einzelnen Stellen des Linux-Kernels ausgeführt werden.


/ Flickr / da sal / cc

Der aktualisierte Balancer verteilt die Last effizienter auf die Infrastruktur und erhöht die Geschwindigkeit der Paketverarbeitung. Quellcode-Entwickler "hochgeladen" auf GitHub.

Das Katran-System unterscheidet sich in mehreren Punkten von der in GitHub vorgeschlagenen Lösung. Facebook verwendet beispielsweise XDP- und IPIP-Tunnel, die mit dem Linux-Kernel zusammenarbeiten. Im Gegensatz dazu verwendet GLB DPDK, um Pakete aus dem Benutzerbereich zu verarbeiten.

Theo Julienne, der Entwickler von GitHub, fügte hinzu , dass Sie mit DPDK große Mengen an eingehendem Datenverkehr verarbeiten können. Dies gewährleistet eine hohe Leistung (10-Gigabit-Verbindung) auch in komplexen Arbeitsumgebungen und bietet einen gewissen Schutz vor DDoS-Angriffen.

Die Übertragung leistungsfähiger Tools wie GLB und Katran auf Open Source eröffnet anderen IT-Unternehmen neue Möglichkeiten und trägt zur schnelleren Entwicklung des IT-Ökosystems in der Welt bei.



PS Einige zusätzliche Artikel aus dem First Corporate IaaS Blog:



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


All Articles