Google verrät Details über Loadbalancer

18.03.2016

In einem Paper stellt Google die Architektur seines softwarebasierten Loadbalancers vor.

Auf dem 13. Usenix-Symposium on Networked System Design and Implementation (NSDI) in Santa Clara (USA) stellt Google zum ersten Mal die Architektur seines Loadbalancers der Öffentlichkeit vor. Bisher war über die Funktion des Loadbalancers namens Maglev, der für die meisten Google-Dienste und die Google-Cloud verwendet wird, wenig bekannt. Im zum Vortrag gehörigen Paper können Interessierte, die nicht vor Ort sind, alle Details nachlesen. 

In dem Paper "Maglev: A Fast and Reliable Software Network Load Balancer" gehen die Autoren zunächst auf die Schwierigkeiten ein, die konventionelle, auf spezieller Hardware basierende Loadbalancer mit sich bringen. Beispielsweise sind die meisten Geräte nur dafür ausgelegt, paarweise Loadbalancing und Failover zu realisieren. Google wollte dagegen eine flache Struktur mit einer beliebigen Anzahl von Loadbalancer-Knoten, die sich gut skalieren lässt. Außerdem sind die meisten kommerziellen Produkte relativ abgeschlossene Systeme, die sich nicht gut in eine hausgemachte Infrastruktur wie bei Google integrieren lassen. 

So setzt Google auf normale Server-Hardware mit 10 GBit/s schnellen Netzwerkkarten und selbstgeschriebener Software, die die Loadbalancing-Funktionen implementiert. Google umgeht dabei den Netzwerk-Stack des Linux-Kernels, da der durch seine Komplexität relativ langsam ist und Pakete zwischen Userspace und dem Kernel hin- und herkopiert werden müssen. Stattdessen nimmt der Google-Loadbalancer-Code die Pakete von der Netzwerkkarte, berechnet die nötigen Hashes für die Verwaltung, packt sie in das Tunnel-Protokoll GRE ein, um sie dann an die Backend-Server weiterzuleiten. Auf den Dual-Core-Rechnern ist ein Core für die Netzwerkverarbeitung reserviert, während der andere die restlichen Arbeiten übernimmt, beispielsweise die Betriebssystem-Tasks. 

Damit erreicht Google sehr hohe Performance, die nahezu der Bandbreite der Netzwerk-Interfaces entspricht. In Tests mit 40-Gbit/s-Karten hat sich das System ebenfalls bewährt, konnte aber die verfügbare Bandbreite nicht komplett nutzen. Dafür wollen die Google-Programmierer den Maglev-Loadbalancer künftig optimieren. 

Was die Verarbeitung von Netzwerk-Paketen im Userspace betrifft, gehen Projekte wie Seastar , mTCP und DPDK einen ähnlichen Weg wie Maglev. 

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Loadtests ohne Server

Für Loadtests der eigenen Server bietet sich die Cloud an, denn kurz getaktet lassen sich dort viele Rechnerinstanzen starten, die das eigene Budget nur wenig belasten. Noch flexibler, günstiger und besser skalierbar sind Tests mit einer Serverless-Infrastruktur wie AWS Lambda. Wir führen vor, wie Sie dort mit Serverless Artillery eigene Loadtests starten. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018

Microsite