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 / ccWarum 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 / ccDer 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: