Beim Layer-4-Load-Balancing werden Informationen aus der Transportschicht (Layer 4) des Netzwerkmodells herangezogen, um zu entscheiden, wie Clientanfragen auf eine Gruppe von Servern verteilt werden. Bei Internetdatenverkehr stützt ein Layer-4-Load-Balancer seine Entscheidung zur Lastverteilung insbesondere auf die im Paket-Header verzeichneten Quell- und Ziel-IP-Adressen sowie Ports, ohne den Inhalt des Pakets zu berücksichtigen.

Insgesamt gibt es sieben Netzwerkschichten, die im Referenzmodell für die Kommunikation offener Systeme (Open Systems Interconnection, OSI) definiert sind. Weitere Informationen finden Sie weiter unten unter Schichten im OSI- und Internetmodell.

Weitere Informationen zum Load Balancing finden Sie unter Anwendungs-Load-Balancing mit NGINX Plus.

Layer-4-Lastverteilung und NAT

Heute bezeichnet der Begriff „Layer-4-Lastverteilung“ meist eine Bereitstellung, bei der die IP-Adresse des Load Balancers den Clients als Adresse einer Website oder eines Dienstes bekannt gegeben wird (beispielsweise über DNS). Daher tragen die Clients die Adresse des Load Balancers als Ziel-IP-Adresse in ihre Anfragen ein.

Wenn der Layer-4-Load-Balancer eine Anfrage empfängt und die Entscheidung über die Lastverteilung trifft, führt er außerdem eine Netzwerkadressübersetzung (Network Address Translation, NAT) für das Anfragepaket durch. Dabei ändert er die darin eingetragene Ziel-IP-Adresse von seiner eigenen in die Adresse des Content-Servers, den er im internen Netzwerk ausgewählt hat. Ebenso ändert der Load-Balancer vor der Weiterleitung von Serverantworten an Clients die im Paket-Header eingetragene Quelladresse von der IP-Adresse des Servers in seine eigene. (Die in den Paketen eingetragenen TCP-Portnummern für Quelle und Ziel werden mitunter auf ähnliche Weise geändert.)

Layer-4-Load-Balancer treffen ihre Routing-Entscheidungen anhand von Adressinformationen, die aus den ersten Paketen des TCP-Datenstroms extrahiert werden, und untersuchen den Paketinhalt nicht. Ein Layer-4-Load-Balancer ist häufig ein dediziertes Hardwaregerät eines Anbieters, auf dem proprietäre Load-Balancing-Software ausgeführt wird. Die NAT-Vorgänge werden dabei möglicherweise nicht von Software, sondern von spezialisierten Chips durchgeführt.

Layer-4-Load-Balancing war ein beliebter Architekturansatz für die Verarbeitung von Datenverkehr, als Standardhardware noch nicht so leistungsfähig war wie heute und die Interaktion zwischen Clients und Anwendungsservern wesentlich weniger komplex war. Es erfordert weniger Rechenleistung als ausgefeiltere Load-Balancing-Methoden (wie etwa Layer 7). CPUs und Arbeitsspeicher sind inzwischen jedoch so schnell und kostengünstig, dass der Leistungsvorteil von Layer-4-Load-Balancing in den meisten Situationen vernachlässigbar oder irrelevant geworden ist.

Vergleich von Layer-4- und Layer-7-Load-Balancern

Layer-7-Load-Balancer arbeiten auf der höchsten Ebene des OSI-Modells, der Anwendungsschicht (im Internet ist HTTP das vorherrschende Protokoll auf dieser Schicht). Layer-7-Load-Balancer treffen ihre Routing-Entscheidungen anhand verschiedener Merkmale des HTTP-Headers und des tatsächlichen Nachrichteninhalts, beispielsweise der URL, des Datentyps (Text, Video, Grafiken) oder der in einem Cookie enthaltenen Informationen.

Die Berücksichtigung so vieler zusätzlicher Aspekte der übertragenen Informationen kann Layer-7-Load-Balancing im Vergleich zu Layer 4 zeit- und rechenintensiver machen, dennoch kann es insgesamt zu einer höheren Effizienz führen. Da ein Layer-7-Load-Balancer beispielsweise erkennen kann, welche Art von Daten (Video, Text usw.) ein Client anfordert, müssen nicht dieselben Daten auf allen Servern mit Lastverteilung vorgehalten werden.

Moderne universell einsetzbare Load Balancer wie NGINX Plus und die Open-Source-Software NGINX arbeiten in der Regel auf Layer 7 und fungieren als vollwertige Reverse-Proxys. Anders als Layer-4-Load-Balancer, die NAT verwenden und den Datenverkehr Paket für Paket verwalten, können Layer-7-Load-Balancing-Proxys Anfragen und Antworten vollständig lesen. Sie verwalten und steuern den Datenverkehr auf Grundlage eines umfassenden Verständnisses der Transaktion zwischen dem Client und dem Anwendungsserver.

Einige Load Balancer können je nach Art des Dienstes für den Lastenausgleich auf Layer 4 oder Layer 7 konfiguriert werden. Wie bereits erwähnt, ist moderne Standardhardware im Allgemeinen so leistungsfähig, dass die durch den Lastenausgleich auf Layer 4 erzielten Einsparungen beim Rechenaufwand nicht ausreichen, um die Vorteile der größeren Flexibilität und Effizienz des Lastenausgleichs auf Layer 7 aufzuwiegen.

Wie NGINX helfen kann

NGINX Plus und NGINX sind erstklassige Lösungen für den Lastenausgleich, die von stark frequentierten Websites wie Dropbox, Netflix und Zynga eingesetzt werden. Mehr als 350 Millionen Websites weltweit vertrauen auf NGINX Plus und NGINX Open Source, um ihre Inhalte schnell, zuverlässig und sicher bereitzustellen.

Als softwarebasierter Load Balancer ist NGINX Plus deutlich kostengünstiger als hardwarebasierte Lösungen mit vergleichbarem Funktionsumfang. Mit den umfassenden Load-Balancing-Funktionen von NGINX Plus können Sie ein hochoptimiertes Netzwerk für die Anwendungsbereitstellung aufbauen.

Wenn Sie NGINX Plus als Load Balancer vor Ihrer Serverfarm einsetzen, steigert dies die Effizienz, Leistung, Zuverlässigkeit und Skalierbarkeit Ihrer gesamten Website. NGINX Plus hilft Ihnen, sowohl die Kundenzufriedenheit als auch die Rendite Ihrer IT-Investitionen zu maximieren.

Schichten im OSI- und Internetmodell

Bei Internetdatenverkehr ist die Bezeichnung „Layer-4-“ und „Layer-7-Lastverteilung“ eine praktische Kurzform, aber streng genommen nicht ganz korrekt. Wenn Sie mehr darüber erfahren möchten, lesen Sie weiter.

Das Konzept der sieben Netzwerkschichten stammt aus dem Referenzmodell für die Kommunikation offener Systeme (Open Systems Interconnection, OSI). Das Modell unterteilt Netzwerkfunktionen in sieben abstrakte Schichten, die üblicherweise anhand ihrer Nummern bezeichnet werden (Schicht 1 bis Schicht 7). Für jede Schicht gibt es Standards, die festlegen, wie Daten verpackt und übertragen werden. Unter anderem definieren die Standards, wie der Bitstrom, aus dem eine Anfrage oder Antwort besteht, in einzelne Pakete unterteilt wird, die als Protokolldateneinheiten (PDUs) bezeichnet werden. Die Standards definieren außerdem die Metadaten, die jeder PDU in Form eines Headers hinzugefügt werden. Diese Metadaten können beispielsweise die Adressen des Ursprungs- und des Zielhosts angeben.

Die Zuordnung verschiedener Aspekte der Netzwerkfunktionalität zu unterschiedlichen Schichten vereinfacht die Verarbeitung auf jeder Schicht, da ein Protokoll nur wissen muss, wie es mit den PDUs seiner eigenen Schicht umgeht und welche Metadaten in den Header aufgenommen werden müssen, damit die Protokolle der benachbarten Schichten die PDUs entsprechend ihrer jeweiligen Datensegmentierung neu verpacken können.

Die Verteilung der Netzwerkfunktionen auf die grundlegenden Protokolle für den Datenverkehr im World Wide Web – die zusammenfassend als Internetprotokollfamilie (IP-Suite) bezeichnet werden – entspricht nicht exakt dem OSI-Modell. Das liegt daran, dass die IP-Suite bereits definiert und implementiert wurde, bevor das endgültige OSI-Modell 1984 veröffentlicht wurde. Dennoch erfüllen die verschiedenen Protokolle der IP-Suite jeweils unterschiedliche Funktionen, die in etwa den OSI-Schichten entsprechen.

Auf jeder Ebene sind mehrere Protokolle definiert. Für den Lastenausgleich des Website-Datenverkehrs sind jedoch die folgenden Protokolle und Ebenen relevant:

  • Das Internet Protocol (IP) arbeitet auf der Internetwork-Schicht (Schicht 3). Seine PDUs werden als Pakete bezeichnet. IP ist dafür verantwortlich, sie von einem Quellhost an einen Zielhost zu übertragen, in der Regel über die Grenzen der zahlreichen kleineren Netzwerke hinweg, aus denen das Internet besteht. Jedes Gerät, das direkt mit dem Internet verbunden ist, verfügt über eine eindeutige IP-Adresse, anhand derer das Gerät als Empfänger von Paketen ermittelt wird.
  • Das Transmission Control Protocol (TCP) arbeitet auf der Transportschicht (Schicht 4). TCP stellt praktisch eine virtuelle Verbindung zwischen dem Host, auf dem der Browser ausgeführt wird, und dem Host her, auf dem eine Serveranwendung ausgeführt wird. Aufgrund der Unzuverlässigkeit von Netzwerken können IP-Pakete verloren gehen, beschädigt werden oder in der falschen Reihenfolge eintreffen. TCP verfügt über Mechanismen zur Behebung dieser Fehler und wandelt den Strom von IP-Paketen in einen zuverlässigen Kommunikationskanal um. Jeder Anwendung wird eine eindeutige TCP-Portnummer zugewiesen, damit die Daten auf Hosts, auf denen viele Anwendungen ausgeführt werden, an die richtige Anwendung übermittelt werden können.
  • Das Hypertext Transfer Protocol (HTTP) arbeitet auf der Anwendungsschicht (Schicht 7). Es legt fest, wie Daten für die Kommunikation zwischen Webbrowsern und Webservern (oder anderen Anwendungen, die die HTTP-Codierung verstehen) codiert werden.

Wie diese Liste verdeutlicht, ist die Bezeichnung „Layer-4-Load-Balancing“ für Internetdatenverkehr zwar eine praktische Kurzform, genauer wäre jedoch „Layer-3/4-Load-Balancing“, da der Load Balancer seine Entscheidung sowohl anhand der IP-Adressen des Ursprungs- und des Zielservers (Layer 3) als auch anhand der TCP-Portnummer der Anwendungen (Layer 4) trifft. Die genauere Bezeichnung für „Layer-7-Load-Balancing“ wäre möglicherweise „Layer-5-bis-7-Load-Balancing“, da HTTP die Funktionen der OSI-Layer 5, 6 und 7 vereint.