Load Balancing verteilt Anfragen auf mehrere Server. Auf der Netzwerkebene gibt es dafür eine Handvoll Verfahren, die sich in Preis, Genauigkeit und Betriebsaufwand deutlich unterscheiden. Dieser Artikel ordnet sie ein – vom einfachen Rundruf über zustandsbehaftete Vermittlung bis zu globaler Verteilung über Standorte.
DNS-basierte Verteilung
Die einfachste Form: Ein Name löst auf mehrere Adressen auf, und der Client wählt eine aus. Das kostet keine zusätzliche Infrastruktur.
; Zone example.org
app IN A 203.0.113.10
app IN A 203.0.113.11
app IN A 203.0.113.12
Vorteile: kein Verteiler nötig, wirkt auch über Standorte hinweg, sehr kostengünstig.
Nachteile:
- Kein Ausfallausgleich: Ein Server, der nicht mehr antwortet, bleibt im DNS, bis jemand den Eintrag ändert. Automatisch geht das nur mit Health Checks im DNS-Dienst (kostenpflichtig bei den meisten Anbietern).
- Zwischenspeicherung: Client und Zwischenspeicher halten die Auflösung, bis die Gültigkeitsdauer abläuft. Eine Änderung wirkt deshalb verzögert.
- Unfaire Verteilung: Die Reihenfolge wird oft nicht zufällig gewählt; manche Clients nehmen immer den ersten Eintrag. Ergebnis: ein Server bekommt mehr Last.
Sinnvoll als erste Ebene über mehrere Standorte, nicht als einzige Verteilung innerhalb eines Rechenzentrums.
Anycast
Bei Anycast hat dieselbe Adresse an mehreren Orten Gültigkeit. Das Routing-Protokoll des Netzes leitet jedes Paket zum nächstgelegenen dieser Orte. So verteilt sich der Verkehr geografisch von selbst, und fällt ein Ort aus, zieht das Routing die Pakete zum nächsten.
- Verwendet von: nahezu allen großen Namensservern (Root-Server, öffentliche Resolver), Inhaltsverteilnetzen und DDoS-Schutzdiensten.
- Vorteil: Ausfallausgleich und kurze Wege ohne einen zentralen Verteiler.
- Voraussetzung: Man muss eigene Adressbereiche ankündigen dürfen, also ein eigenes Autonomes System betreiben. Für die meisten Unternehmen nicht praktikabel – die Alternative ist der Einkauf über einen Anbieter.
- Einschränkung: Für zustandsbehaftete Verbindungen problematisch. Ändert sich die Wegewahl mitten in einer Sitzung, landen Pakete bei einem anderen Ort – die Verbindung bricht ab. Deshalb wird Anycast für zustandslose Dienste genutzt, nicht für langlebige Sitzungen.
ECMP-Routing
Equal-Cost Multi-Path ist ein Verfahren, bei dem ein Router Pakete über mehrere gleichwertige Wege verteilt. Auf der Transportschicht ist das die häufigste Art, wie große Dienste intern Anfragen auf viele Server verteilen – oft verbunden mit einer „Direktantwort“ (DSR), bei der der Server seine Antworten selbst verschickt.
# Linux: mehrere Wege mit gleicher Metrik fuer dieselbe Route
ip route add 10.0.0.0/24 \
nexthop via 192.168.1.10 weight 1 \
nexthop via 192.168.1.11 weight 1
# Fuer Anycast auf einem Server: Adresse auf dem Loopback vergeben
ip addr add 10.0.0.100/32 dev lo
sysctl -w net.ipv4.ip_nonlocal_bind=1
ECMP ist sehr schnell, weil kein Verteiler den Verkehr selbst verarbeitet. Der Nachteil: Alle Wege müssen erreichbar sein, und das Verfahren verteilt gleichmäßig, ohne die tatsächliche Last zu kennen.
Maglev und Konsistentes Hashing
Zustandslose Verteiler haben ein Speicherproblem: Sie müssen sich merken, welche Verbindung zu welchem Server gehört. Fällt ein Verteiler aus, geht dieses Wissen verloren – bestehende Verbindungen brechen ab. Lösungen setzen deshalb auf konsistentes Hashing: Der Zielserver wird aus Adresse und Port berechnet, nicht nachgeschlagen.
Googles Maglev ist ein bekanntes Verfahren dieser Art. Es erzeugt aus einer festen Servertabelle eine gleichmäßige Verteilung, die auch bei zwei unabhängigen Verteilern identisch ist – beide wählen für dieselbe Verbindung denselben Server, ohne miteinander zu sprechen.
Globale Verteilung (GSLB)
Für überregionale Dienste kommt eine weitere Ebene hinzu: Die Wahl des Standorts. Verfahren dafür sind:
- Geografisches DNS: Der Namensdienst antwortet abhängig von der Quelladresse des Fragenden mit der nächstgelegenen Adresse.
- Latenzbasierte Auswahl: Gemessene Antwortzeiten entscheiden, welcher Standort zugewiesen wird.
- Standortausfall: Fällt ein Standort aus, wird er aus den Antworten entfernt – erfordert kurze Gültigkeitsdauern (üblich: 30 bis 60 Sekunden).
Der häufigste Fehler in dieser Ebene: Die Gültigkeitsdauer des DNS ist zu lang eingestellt. Damit dauert die Umschaltung eines ausgefallenen Standorts so lange, dass die Auslagerung praktisch wirkungslos bleibt.
Vergleich
- DNS: billig, standortübergreifend, grobe Verteilung, kein echter Ausfallausgleich
- Anycast: beste geografische Verteilung, setzt eigenen Adressbereich voraus
- ECMP: schnell und transparent, blind gegenüber der tatsächlichen Last
- Maglev-Hashing: zustandslos, überlebt Verteilerausfall
- Anwendungsverteiler: inhaltliche Regeln möglich, langsamer, eigener Betriebsaufwand
In der Praxis werden diese Ebenen kombiniert: Anycast für die äußere Verteilung, DNS für die Standortwahl, ECMP oder ein Anwendungsverteiler im Inneren des Rechenzentrums. Jede Ebene löst ein anderes Problem – keine ersetzt die andere.
Verwandte Grundlagen: Load Balancing mit nginx und HAProxy, Load Balancer, Lastverteilung auf Netzebene, DNS.