TCP-Proxy-Load-Balancing – Überblick

TCP-Proxy-Load-Balancing ist ein Reverse-Proxy-Load-Balancer, der TCP-Traffic aus dem Internet auf VM-Instanzen in Ihrem Google Cloud VPC-Netzwerk verteilt. Bei Verwendung des TCP-Proxy-Load-Balancings wird Traffic über eine TCP-Verbindung auf der Load-Balancing-Ebene beendet und dann über TCP oder SSL zum nächstgelegenen verfügbaren Back-End weitergeleitet.

Mit TCP-Proxy-Load-Balancing können Sie eine einzelne IP-Adresse für alle Nutzer auf der ganzen Welt verwenden. Der TCP-Proxy-Load-Balancer leitet den Traffic automatisch an die Back-Ends weiter, die dem Nutzer am nächsten sind.

Auf der Premium-Stufe kann das TCP-Proxy-Load-Balancing als globaler Load-Balancing-Dienst konfiguriert werden. Bei der Standardstufe führt der TCP-Proxy-Load-Balancer das Load-Balancing regional aus. Weitere Informationen finden Sie unter Verhalten des Load-Balancers in Netzwerkdienststufen.

In diesem Beispiel werden die Verbindungen für den Traffic von Nutzern in Seoul und Boston auf der Load-Balancing-Ebene beendet. Diese Verbindungen sind mit 1a und 2a gekennzeichnet. Vom Load-Balancer werden separate Verbindungen zu den ausgewählten Back-End-Instanzen aufgebaut. Diese Verbindungen sind mit 1b und 2b gekennzeichnet.

Cloud Load Balancing mit TCP-Beendigung (zum Vergrößern klicken)
Cloud Load Balancing mit TCP-Beendigung (zum Vergrößern klicken)

TCP-Proxy-Load-Balancing ist für TCP-Traffic an bestimmten gängigen Ports vorgesehen, z. B. Port 25 für Simple Mail Transfer Protocol (SMTP). Weitere Informationen finden Sie unter Angabe von Ports. Verwenden Sie für Client-Traffic, der an diesen Ports verschlüsselt wird, SSL-Proxy-Load-Balancing.

Informationen über die unterschiedlichen Google Cloud-Load-Balancer finden Sie in den folgenden Dokumenten:

Vorteile

Zu den Vorteilen des TCP-Proxy-Load-Balancers gehören:

  • IPv6-Beendigung. TCP-Proxy-Load-Balancing unterstützt Client-Traffic sowohl von IPv4- als auch von IPv6-Adressen. IPv6-Anfragen von Clients werden auf der Ebene des Load-Balancings beendet und dann über IPv4 an die Back-Ends weitergeleitet.
  • Intelligentes Routing Der Load-Balancer kann Anfragen an Back-End-Speicherorte mit freien Kapazitäten weiterleiten. Im Gegensatz dazu muss ein L3/L4-Load-Balancer ohne Berücksichtigung der Kapazitäten eine Weiterleitung zu regionalen Back-Ends vornehmen. Intelligentes Routing ermöglicht die Bereitstellung mit N+1 oder N+2 anstelle von x*N.
  • Sicherheitspatches: Wenn im TCP-Paket Sicherheitslücken auftreten, stellt Cloud Load Balancing für den Load-Balancer automatisch Patches bereit, um für die Sicherheit Ihrer Back-Ends zu sorgen.
  • Unterstützung für folgende bekannten TCP-Ports. 5, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 3389, 5222, 5432, 5671, 5672, 5900, 5901, 6379, 8085, 8099, 9092, 9200 und 9300.

Verhalten des Load-Balancers in Netzwerkdienststufen

Das TCP-Proxy-Load-Balancing kann als globaler Load-Balancing-Dienst mit der Premium-Stufe und als regionaler Dienst in der Standardstufe konfiguriert werden.

Premium-Stufe

Sie können nur einen Back-End-Dienst haben und der Back-End-Dienst kann Back-Ends in mehreren Regionen haben. Für globales Load-Balancing stellen Sie Ihre Back-Ends in mehreren Regionen bereit. Der Load-Balancer leitet den Traffic automatisch an die Region weiter, die dem Nutzer am nächsten ist. Ist eine Region ausgelastet, leitet der Load-Balancer neue Verbindungen automatisch zu einer anderen Region mit freien Kapazitäten um. Bestehende Nutzerverbindungen bleiben aber in der aktuellen Region.

So wird der Traffic den Back-Ends zugewiesen:

  1. Wenn ein Client eine Anfrage sendet, ermittelt der Load-Balancing-Dienst anhand der Quell-IP-Adresse den ungefähren Ursprung der Anfrage.
  2. Der Load-Balancing-Dienst bestimmt die Standorte der Back-Ends, die dem Back-End-Dienst gehören, deren Gesamtkapazität und deren aktuelle Auslastung.
  3. Wenn die Back-End-Instanzen, die dem Nutzer am nächsten sind, freie Kapazitäten haben, wird die Anfrage an die nächstgelegene Gruppe von Back-Ends weitergeleitet.
  4. Eingehende Anfragen an die angegebene Region werden gleichmäßig auf alle verfügbaren Back-End-Instanzen in dieser Region verteilt. Bei sehr kleinen Arbeitslasten kann sich die Verteilung als ungleichmäßig darstellen.
  5. Wenn es in einer bestimmten Region keine fehlerfreien Back-End-Instanzen mit verfügbarer Kapazität gibt, sendet der Load-Balancer die Anfrage stattdessen an die nächstgelegene Region mit verfügbarer Kapazität.

Standardstufe

Bei der Standardstufe ist das TCP-Proxy-Load-Balancing ein regionaler Dienst. Die Back-Ends müssen sich alle in der Region befinden, die von der externen IP-Adresse und Weiterleitungsregel des Load-Balancers verwendet wird.

Architektur

Die folgenden Komponenten gehören zu TCP-Proxy-Load-Balancern.

Weiterleitungsregeln und IP-Adressen

Weiterleitungsregeln leiten Traffic abhängig von der IP-Adresse, dem Port und dem Protokoll an eine Load-Balancing-Konfiguration weiter, die aus einem Zielproxy und einem Back-End-Dienst besteht.

Jede Weiterleitungsregel stellt eine einzelne IP-Adresse bereit, die Sie in DNS-Einträgen für Ihre Anwendung verwenden können. Ein Load-Balancing für DNS ist nicht erforderlich. Sie können entweder eine statische IP-Adresse reservieren, die Sie verwenden können, oder Cloud Load Balancing eine Adresse für Sie zuweisen lassen. Wir empfehlen, eine statische IP-Adresse zu reservieren. Andernfalls müssen Sie den DNS-Eintrag jedes Mal, wenn Sie eine Weiterleitungsregel löschen und eine neue erstellen, mit der neu zugewiesenen sitzungsspezifischen IP-Adresse aktualisieren.

Externe Weiterleitungsregeln, die in der Definition eines TCP-Proxy-Load-Balancers verwendet werden, können auf genau einen der aufgeführten Ports verweisen, die unter Portspezifikationen für Weiterleitungsregeln aufgeführt sind.

Zielproxys

Durch das TCP-Proxy-Load-Balancing werden TCP-Verbindungen des Clients beendet und neue Verbindungen zu den Back-Ends aufgebaut. Standardmäßig bleiben die ursprüngliche IP-Adresse des Clients und die Portinformationen nicht erhalten. Sie können diese Informationen jedoch mithilfe des Proxy-Protokolls aufbewahren. Die Zielproxys leiten eingehende Anfragen direkt an Back-End-Dienste weiter.

Back-End-Dienste

Back-End-Dienste leiten eingehenden Traffic an mindestens ein verknüpftes Back-End weiter. Jedes Back-End besteht aus einer Instanzgruppe oder einer Netzwerk-Endpunktgruppe und Informationen zur Bereitstellungskapazität des Back-Ends. Die Bereitstellungskapazität für das Back-End basiert auf der CPU oder auf Anfragen pro Sekunde (Requests Per Second, RPS).

TCP-Proxy-Load-Balancer haben jeweils eine einzelne Back-End-Dienstressource. Änderungen am Back-End-Dienst erfolgen nicht sofort. Es kann einige Minuten dauern, bis Änderungen an Google Front Ends (GFEs) wirksam werden.

Der Back-End-Dienst legt die Systemdiagnosen fest, die für die verfügbaren Back-Ends auszuführen sind.

Sie vermeiden Unterbrechungen für Ihre Nutzer weitgehend, wenn Sie den Verbindungsausgleich bei Back-End-Diensten aktivieren. Unterbrechungen dieser Art können auftreten, wenn ein Back-End beendet, manuell entfernt oder durch Autoscaling entfernt wird. Weitere Informationen zum Vermeiden von Dienstunterbrechungen mithilfe des Verbindungsausgleichs finden Sie unter Verbindungsausgleich aktivieren.

Protokoll für die Kommunikation mit den Back-Ends

Wenn Sie einen Back-End-Dienst für den TCP-Proxy-Load-Balancer konfigurieren, legen Sie das Protokoll fest, über das der Back-End-Dienst mit den Back-Ends kommuniziert. Zur Auswahl stehen die Protokolle SSL oder TCP. Der Load-Balancer verwendet nur das angegebene Protokoll und versucht nicht, eine Verbindung mit dem anderen Protokoll auszuhandeln.

Firewallregeln

Die Back-End-Instanzen müssen Verbindungen von den GFE- / Systemdiagnosebereichen des Load-Balancers zulassen. Dies bedeutet, dass Sie eine Firewallregel erstellen müssen, die Traffic von 130.211.0.0/22 und 35.191.0.0/16 zulässt, um Ihre Back-End-Instanzen oder Endpunkte zu erreichen. Diese IP-Adressbereiche werden als Quellen für Systemdiagnose-Pakete und für alle Pakete mit Load-Balancing verwendet, die an Ihre Back-Ends gesendet werden.

Die Ports, die Sie für diese Firewallregel konfigurieren, müssen Traffic zu Back-End-Instanzen oder -Endpunkten zulassen:

  • Sie müssen die von jeder Weiterleitungsregel verwendeten Ports zulassen.
  • Sie müssen die von jeder Systemdiagnose verwendeten Ports zulassen, die für jeden Back-End-Dienst konfiguriert sind.

Firewallregeln werden auf VM-Instanzebene und nicht auf GFE-Proxys (Google Front End) implementiert. Sie können Google Cloud-Firewallregeln nicht verwenden, um zu verhindern, dass Traffic den Load-Balancer erreicht.

Weitere Informationen zu Systemdiagnosetests und dazu, warum Traffic von 130.211.0.0/22 und 35.191.0.0/16 zugelassen werden muss, finden Sie unter Prüfungs-IP-Bereiche und Firewallregeln.

Quell-IP-Adressen

Die Quell-IP-Adressen für Pakete, die von jeder Instanz oder jedem Container des Back-Ends der virtuellen Maschine erkannt werden, sind Adressen aus folgenden Bereichen:

  • 35.191.0.0/16
  • 130.211.0.0/22

Die Quell-IP-Adresse für tatsächlichen Traffic mit Load-Balancing liegt innerhalb der Systemdiagnose-IP-Bereiche.

Die Quell-IP-Adressen für den Traffic, die von den Back-Ends erkannt werden, entsprechen nicht der externen Google Cloud-IP-Adresse des Load-Balancers. Mit anderen Worten: Es gibt zwei HTTP-, SSL- oder TCP-Sitzungen:

  • Sitzung 1 vom ursprünglichen Client zum Load-Balancer (GFE):

    • Quell-IP-Adresse: Der ursprüngliche Client (oder die externe IP-Adresse, wenn der Client hinter NAT liegt)
    • Ziel-IP-Adresse: IP-Adresse Ihres Load-Balancers
  • Sitzung 2 vom Load-Balancer (GFE) zur Back-End-VM oder zum Back-End-Container:

    • Quell-IP-Adresse: IP-Adresse aus einem der folgenden Bereiche: 35.191.0.0/16 oder 130.211.0.0/22

      Eine Vorhersage der tatsächlichen Quelladresse ist nicht möglich.

    • Ziel-IP-Adresse: Interne IP-Adresse der Back-End-VM oder des Containers im VPC-Netzwerk (Virtual Private Cloud)

Offene Ports

TCP-Proxy-Load-Balancer sind Reverse-Proxy-Load-Balancer. Der Load-Balancer beendet eingehende Verbindungen und öffnet dann neue Verbindungen vom Load-Balancer zu den Back-Ends. Die Reverse-Proxy-Funktion wird von Google Front Ends (GFEs) bereitgestellt.

GFEs haben mehrere offene Ports, mit denen andere Google Cloud-Load-Balancer und Google-Dienste unterstützt werden können. Wenn Sie einen Sicherheits- oder Portscan für die externe IP-Adresse Ihres Load-Balancers ausführen, wirkt es so, als ob weitere Ports offen wären.

Dies hat keine Auswirkungen auf TCP-Proxy-Load-Balancer. Jede externe Weiterleitungsregel, die in einem TCP-Proxy-Load-Balancer verwendet wird, kann auf genau einen der Ports verweisen, die unter Portspezifikationen für Weiterleitungsregeln aufgeführt sind. Traffic mit einem anderen TCP-Zielport wird nicht an das Back-End des Load-Balancers weitergeleitet. Sie können prüfen, ob der Traffic für zusätzliche Ports verarbeitet wurde, indem Sie versuchen, eine TCP-Sitzung für einen nicht autorisierten Port zu öffnen. Das GFE, das Ihre Anfrage verarbeitet, schließt die Verbindung mit einem TCP-Rücksetzpaket (RST).

Traffic-Verteilung

Die Art und Weise, wie ein TCP-Proxy-Load-Balancer den Traffic an seine Back-Ends verteilt, hängt vom Load-Balancing-Modus und der ausgewählten Hash-Methode ab, um ein Back-End auszuwählen (Sitzungsaffinität).

Balancing-Modus

Wenn Sie dem Back-End-Dienst ein Back-End hinzufügen, legen Sie einen Load-Balancing-Modus fest.

Beim TCP-Proxy-Load-Balancing sind die Balancing-Modi CONNECTION oder UTILIZATION möglich.

Wenn der Load-Balancing-Modus CONNECTION ist, basiert die Verteilung der Last darauf, wie viele gleichzeitige Verbindungen das Back-End verarbeiten kann. Außerdem müssen Sie einen der folgenden Parameter genau angeben: maxConnections (außer für regionale verwaltete Instanzgruppen), maxConnectionsPerInstance oder maxConnectionsPerEndpoint.

Wenn der Load-Balancing-Modus UTILIZATION ist, wird die Last anhand der Auslastung der Instanzen in einer Instanzgruppe verteilt.

Informationen zum Vergleichen der Load-Balancer-Typen und der unterstützten Balancing-Modi finden Sie unter Load-Balancing-Methoden.

Sitzungsaffinität

Mit Sitzungsaffinität werden alle Anfragen vom selben Client an dasselbe Back-End gesendet, wenn das Back-End fehlerfrei ist und Kapazität hat.

Das TCP-Proxy-Load-Balancing bietet Client-IP-Affinität, mit der alle Anfragen von derselben Client-IP-Adresse an dasselbe Back-End weitergeleitet werden.

Failover

Wenn ein Back-End fehlerhaft wird, wird der Traffic automatisch zu fehlerfreien Back-Ends in derselben Region weitergeleitet. Wenn alle Back-Ends innerhalb einer Region fehlerhaft sind, wird der Traffic an fehlerfreie Back-Ends in anderen Regionen verteilt (nur Premium-Stufe). Wenn alle Back-Ends fehlerhaft sind, löscht der Load-Balancer den Traffic.

Nächste Schritte