Grundlegendes zu Back-End-Diensten

Ein Back-End-Dienst ist eine Ressource mit Feldern, die Konfigurationswerte für die folgenden Load-Balancing-Dienste der Google Cloud Platform enthalten:

  • HTTP(S)-Load-Balancing
  • SSL-Proxy-Load-Balancing
  • TCP-Proxy-Load-Balancing
  • Internes TCP/UDP-Load-Balancing
  • Internes HTTP(S)-Load-Balancing (Beta)

Ein Back-End-Dienst leitet den Traffic an Back-Ends weiter, entweder an Instanzgruppen oder an Netzwerk-Endpunktgruppen.

Der Back-End-Dienst führt verschiedene Aufgaben aus. Beispiele:

  • Weiterleitung des Traffics gemäß einem Load-Balancing-Modus. Der Load-Balancing-Modus wird im Back-End-Dienst für jedes Back-End einzeln definiert.
  • Monitoring des Back-End-Status anhand einer Systemdiagnose.
  • Aufrechterhaltung der Sitzungsaffinität.

Architektur

Die Anzahl der Back-End-Dienste pro Load-Balancer hängt vom Typ des jeweiligen Load-Balancers ab:

Load-Balancer-Typ Anzahl der Back-End-Dienste
HTTP(S)-Load-Balancing Mehrere
SSL-Load-Balancing 1
TCP-Proxy-Load-Balancing 1
Internes TCP/UDP-Load-Balancing 1
Internes HTTP(S)-Load-Balancing Mehrere

Jeder Back-End-Dienst enthält ein oder mehrere Back-Ends.

Für einen bestimmten Back-End-Dienst müssen alle Back-Ends entweder Instanzgruppen oder Netzwerk-Endpunktgruppen sein. Sie können einem Back-End-Dienst verschiedene Arten von Instanzgruppen, z. B. verwaltete und nicht verwaltete, zuordnen. Dagegen lassen sich einem Back-End-Dienst nicht Instanzgruppen und Netzwerk-Endpunktgruppen gleichzeitig zuweisen.

Einstellungen für Back-End-Dienste

Für jeden Back-End-Dienst gelten die folgenden konfigurierbaren Einstellungen:

  • Sitzungsaffinität (optional). Normalerweise verwendet das HTTP(S)-Load-Balancing einen Hash-Algorithmus zur Verteilung von Anfragen unter den verfügbaren Instanzen. Im Normalfall basiert der Hash auf der Quell-IP-Adresse, der Ziel-IP-Adresse, dem Quellport, dem Zielport und dem Protokoll (ein 5-Tupel-Hash). Die Sitzungsaffinität wird an den Inhalt des Hash angepasst und es wird versucht, alle Anfragen von einem Client an eine bestimmte Instanz der virtuellen Maschine zu senden.
  • Zeitlimit für den Back-End-Dienst. Dieser Wert wird je nach Typ des verwendeten Load-Balancers und des verwendeten Protokolls unterschiedlich interpretiert:
    • Bei einem HTTP(S)-Load-Balancer ist das Zeitlimit für den Back-End-Dienst ein Anfrage-/Antwort-Zeitlimit, außer für Verbindungen, die auf die Verwendung des WebSocket-Protokolls aktualisiert wurden.
    • Beim Senden von WebSocket-Traffic an einen HTTP(S)-Load-Balancer wird das Zeitlimit für den Back-End-Dienst als die maximale Zeit verstanden, die ein WebSocket – im Leerlauf oder aktiv – geöffnet sein kann.
    • Bei einem SSL-Proxy- oder TCP-Proxy-Load-Balancer wird das Zeitlimit des Back-End-Dienstes als Leerlaufzeitlimit für den gesamten Traffic interpretiert.
    • Bei einem internen TCP/UDP-Load-Balancer wird der Zeitlimitparameter des Back-End-Dienstes ignoriert.
  • Systemdiagnose. Die Systemdiagnose fragt Instanzen, die mit dem Back-End-Dienst verbunden sind, in festgelegten Intervallen ab. Instanzen, für die die Systemdiagnose keine Fehler ermittelt, können neue Anfragen erhalten. Fehlerhafte Instanzen erhalten bis zur Fehlerbehebung keine Anfragen.

In der API-Ressource des Back-End-Dienstes und im Nutzerhandbuch für das gcloud-Befehlszeilentool finden Sie Beschreibungen der Attribute, die für die Nutzung von Back-End-Diensten zur Verfügung stehen.

Back-Ends

Jedes Back-End ist eine Ressource, auf die ein GCP-Load-Balancer den Traffic verteilt. Es können zwei verschiedene Arten von Ressourcen als Back-Ends verwendet werden:

Für einen einzelnen Back-End-Dienst müssen alle Back-Ends entweder Instanzgruppen oder, sofern unterstützt, NEGs sein. Sie können nicht sowohl Instanzgruppen als auch NEGs als Back-Ends für einen Back-End-Dienst verwenden. Außerdem gilt:

  • Back-Ends für interne TCP/UDP-Load-Balancer unterstützen nur Instanzgruppen-Back-Ends.
  • Wenn ein HTTP(S)-Load-Balancer zwei (oder mehr) Back-End-Dienste hat, können Sie Instanzgruppen als Back-Ends für einen Back-End-Dienst und NEGs als Back-Ends für den anderen Back-End-Dienst verwenden.

Back-Ends und externe IP-Adressen

Die Back-End-VMs benötigen keine externen IP-Adressen.

  • Für HTTP-, SSL-Proxy- und TCP-Proxy-Load-Balancer: Clients kommunizieren mit einem Google-Front-End (GFE) über die externe IP-Adresse Ihres Load-Balancers. Das GFE kommuniziert mit Back-End-VMs über die internen IP-Adressen ihrer primären Netzwerkschnittstelle. Da das GFE ein Proxy ist, benötigen die Back-End-VMs selbst keine externen IP-Adressen.

  • Für Netzwerk-Load-Balancer: Netzwerk-Load-Balancer leiten Pakete mithilfe der bidirektionalen Network Address Translation (NAT) weiter. Wenn Back-End-VMs Antworten an Clients senden, verwenden sie die externe IP-Adresse der Weiterleitungsregel des Load-Balancers als Quell-IP-Adresse.

  • Für interne Load Balancer: Back-End-VMs für einen internen Load Balancer benötigen keine externen IP-Adressen.

Trafficverteilung

Die Werte der folgenden Felder in der Ressource für Back-End-Dienste beeinflussen verschiedene Aspekte des Back-End-Verhaltens:

  • Balancing-Modus. Der Modus für das Load-Balancing-System, mit dem ermittelt wird, wann das Back-End komplett ausgelastet ist. Wenn alle Back-Ends für den Back-End-Dienst in einer Region ausgelastet sind, werden neue Anfragen automatisch an die nächstgelegene Region weitergeleitet, die noch Anfragen verarbeiten kann. Der Load-Balancing-Modus kann auf der Basis von Verbindungen, CPU-Auslastung oder Anfragen pro Sekunde (Rate) definiert werden.
  • Kapazität. Die Kapazität ist ein weiterer Faktor für die Einstellung des Load-Balancing-Modus. Wenn Sie beispielsweise Ihre Instanzen im Normalfall bei einer CPU-Auslastung von maximal 80 % ausführen möchten, legen Sie für Ihren Load-Balancing-Modus die CPU-Auslastung als Kriterium und für die Kapazität 80 % fest. Wenn Sie die Instanzauslastung halbieren möchten, können Sie die Kapazität bei 80 % CPU-Auslastung belassen und für den Kapazitätsskalierer den Wert 0,5 angeben. Zum Zurücksetzen des Back-End-Dienstes geben Sie für den Kapazitätsskalierer den Wert 0 an und lassen die Kapazität unverändert. Weitere Informationen zu Kapazität und CPU-Auslastung finden Sie unter Anhand von CPU oder Load-Balancing-Bereitstellungskapazität skalieren.

Auch der Traffic Director verwendet Back-End-Dienst-Ressourcen. Insbesondere nutzt er Back-End-Dienste mit dem Load-Balancing-Schema INTERNAL_SELF_MANAGED. Bei einem internen selbstverwalteten Back-End-Dienst wird die Trafficverteilung auf der Basis einer Kombination aus Load-Balancing-Modus und Load-Balancing-Richtlinie ausgeführt. Der Back-End-Dienst leitet den Traffic gemäß dem Load-Balancing-Modus des Back-Ends an ein Back-End (Instanzgruppe oder NEG) weiter. Sobald ein Back-End ausgewählt wurde, verteilt der Traffic Director den Traffic entsprechend einer Load-Balancing-Richtlinie.

Interne selbstverwaltete Back-End-Dienste unterstützen die folgenden Balancing-Modi:

  • UTILIZATION, wenn alle Back-Ends Instanzgruppen sind
  • RATE, wenn alle Back-Ends entweder Instanzgruppen oder NEGs sind

Für den RATE-Modus müssen Sie eine maximale Rate pro Back-End, Instanz oder Endpunkt festlegen.

Protokoll für Back-Ends

Beim Erstellen eines Back-End-Dienstes müssen Sie das Protokoll angeben, das für die Kommunikation mit dessen Back-Ends verwendet werden soll. Für einen Back-End-Dienst kann immer nur ein Protokoll genutzt werden. Es ist also nicht möglich, ein sekundäres Protokoll als Fallback festzulegen.

Es sind folgende Protokolle verfügbar:

  • HTTP
  • HTTPS
  • HTTP/2
  • SSL
  • TCP
  • UDP

Welches Protokoll jeweils anwendbar ist, hängt vom Typ des von Ihnen erstellten Load-Balancers einschließlich seines Load-Balancing-Schemas ab. Weitere Informationen darüber, welche Protokolle für die Back-End-Dienste eines Load-Balancers verwendet werden können, finden Sie in der Dokumentation zu den einzelnen Load-Balancer-Typen.

Für das Load-Balancing mit Ingress steht auch HTTP/2 als Back-End-Protokoll zur Verfügung.

Back-End-Dienste und Regionen

Das HTTP(S)-Load-Balancing ist ein globaler Dienst. In einer Region können mehrere Back-End-Dienste verwendet werden und es lassen sich Back-End-Dienste auch mehreren Regionen zuweisen, für die alle der gleiche globale Load-Balancer genutzt wird. Der Traffic wird auf die Back-End-Dienste nach folgenden Regeln verteilt:

  1. Wenn eine Anfrage von einem Nutzer eingeht, bestimmt der Load-Balancing-Dienst den ungefähren Ursprung der Anfrage anhand der Quell-IP-Adresse.
  2. Der Load-Balancing-Dienst berücksichtigt die Speicherorte der Instanzen, die zum Back-End-Dienst gehören, deren Gesamtkapazität und deren aktuelle Gesamtnutzung.
  3. Wenn die für den Nutzer nächstgelegenen Instanzen genügend Kapazität haben, wird die Anfrage an diese Instanzen weitergeleitet.
  4. Eingehende Anfragen an eine bestimmte Region werden gleichmäßig über alle verfügbaren Back-End-Dienste und Instanzen in dieser Region verteilt. Bei sehr kleinen Arbeitslasten kann sich die Verteilung als ungleichmäßig darstellen.
  5. Wenn keine fehlerfreien Instanzen mit verfügbaren Kapazitäten in einer bestimmten Region vorhanden sind, sendet der Load-Balancer die Anfrage stattdessen an die nächstgelegene Region mit verfügbarer Kapazität.

Instanzgruppen

Back-End-Dienste und automatisch skalierte verwaltete Instanzgruppen

Automatisch skalierte und verwaltete Instanzgruppen sind nützlich, wenn Sie viele Maschinen benötigen, die alle auf die gleiche Weise konfiguriert sind, und Sie je nach Bedarf Instanzen automatisch hinzufügen oder entfernen möchten.

Der Prozentwert des Autoscaling hat auch Einfluss auf den Load-Balancing-Modus. Angenommen, Sie legen für den Load-Balancing-Modus eine CPU-Auslastung von 80 % fest und belassen den Wert für den Kapazitätsskalierer bei 100 %. Außerdem geben Sie für die Zielauslastung des Load-Balancing im Autoscaling den Wert 80 % an. Wenn die CPU-Auslastung der Gruppe 64 % (80 % von 80 %) überschreitet, instanziiert das Autoscaling neue Instanzen aus der Vorlage, bis die Auslastung wieder auf etwa 64 % sinkt. Nach dem Sinken der Gesamtnutzung unter 64 % entfernt das Autoscaling Instanzen, bis die Nutzung wieder auf 64 % ansteigt.

Neue Instanzen haben eine Abkühlzeit, bevor sie als Teil der Gruppe angesehen werden. Daher kann der Traffic die 80 % CPU-Auslastung des Back-End-Dienstes während dieser Zeit überschreiten, wodurch der überschüssige Traffic an den nächsten verfügbaren Back-End-Dienst weitergeleitet wird. Sobald die Instanzen verfügbar sind, wird neuer Traffic an sie geleitet. Wenn außerdem die Anzahl an Instanzen den maximal zulässigen Wert in der Autoscaling-Einstellung erreicht, fügt das Autoscaling unabhängig von der Nutzung keine weiteren Instanzen hinzu. In diesem Fall wird der zusätzliche Traffic durch den Load-Balancer an die nächste verfügbare Region verteilt.

Automatisch skalierte und verwaltete Instanzgruppen konfigurieren

Zur Konfiguration automatisch skalierter verwalteter Instanzgruppen führen Sie die folgenden Schritte aus:

  1. Erstellen Sie eine Instanzvorlage für Ihre Instanzgruppe.
  2. Erstellen Sie eine verwaltete Instanzgruppe und weisen Sie ihr die Vorlage zu.
  3. Aktivieren Sie das Autoscaling auf der Grundlage der Load-Balancing-Bereitstellungskapazität.

Einschränkungen und Richtlinien für Instanzgruppen

Da das Cloud-Load-Balancing sehr viele Möglichkeiten bei der Konfiguration des Load-Balancers bietet, kann es auch sein, dass manche Konfigurationen zu einem ungünstigen Verhalten führen. Beachten Sie deshalb die folgenden Einschränkungen und Hinweise, wenn Sie Instanzgruppen mit Load-Balancing erstellen.

  • Legen Sie eine VM-Instanz immer nur für eine Instanzgruppe fest.
  • Löschen Sie keine Instanzgruppe, wenn sie von einem Back-End verwendet wird.
  • Ihre Konfiguration wird vereinfacht, wenn Sie eine Instanzgruppe nicht zwei unterschiedlichen Back-Ends hinzufügen. Wenn Sie dennoch eine Instanzgruppe für zwei verschiedene Back-Ends verwenden, ist Folgendes zu beachten:
    • Für beide Back-Ends muss der gleiche Load-Balancing-Modus gelten, entweder UTILIZATION oder RATE.
    • Sie können maxRatePerInstance und maxRatePerGroup gemeinsam verwenden. Es ist auch möglich, für ein Back-End maxRatePerInstance und für das andere maxRatePerGroup festzulegen.
    • Wenn die Instanzgruppe zwei oder mehr Back-End-Ports bedient, müssen Sie die unterschiedlichen Portnamen in der Instanzgruppe angeben.
  • Alle Instanzen in einer verwalteten oder nicht verwalteten Instanzgruppe müssen sich im selben VPN-Netzwerk und gegebenenfalls im selben Subnetz befinden.
  • Wenn Sie eine verwaltete Instanzgruppe mit Autoscaling verwenden, sollten Sie für den Back-End-Dienst nicht den Load-Balancing-Modus maxRate nutzen. Sie können entweder den Modus maxUtilization oder den Modus maxRatePerInstance verwenden.
  • Eine automatisch skalierte verwaltete Instanzgruppe kann nicht das Ziel von zwei verschiedenen Load-Balancern sein.
  • Wenn die Größe einer verwalteten Instanzgruppe angepasst wird, sollte die maximale Größe der Gruppe nicht die des Subnetzes übersteigen.

Netzwerk-Endpunktgruppen

Ein Netzwerkendpunkt ist eine Kombination aus einer IP-Adresse und einem Port, der auf zwei Arten festgelegt werden kann:

  • Durch Angabe eines IP address:port-Paares, z. B. 10.0.1.1:80.
  • Durch Angabe nur einer IP-Adresse für den Netzwerkendpunkt. Der Standardport für die NEG wird automatisch als Port für das IP address:port-Paar verwendet.

Netzwerkendpunkte stellen Dienste gemäß ihrer IP-Adresse und ihres Ports dar und verweisen nicht auf eine bestimmte VM. Eine Netzwerk-Endpunktgruppe (NEG) ist eine logische Zusammenstellung von Netzwerkendpunkten.

Ein Back-End-Dienst, der Netzwerk-Endpunktgruppen als Back-Ends verwendet, verteilt den Traffic auf Anwendungen oder Container, die innerhalb von VM-Instanzen ausgeführt werden. Weitere Informationen dazu finden Sie unter Netzwerk-Endpunktgruppen in Load Balancing-Konzepten.

Sitzungsaffinität

Ohne Sitzungsaffinität verteilen Load Balancer neue Anfragen gemäß dem Load-Balancing-Modus der Instanzgruppe oder der NEG des Back-Ends. Für einige Anwendungen, z. B. für einen Stateful-Server, der für Ads Serving, Gaming oder Dienste mit hohem internen Caching verwendet wird, ist es aber erforderlich, dass mehrere Anfragen eines Nutzers zur selben Instanz geleitet werden.

Dies wird durch die Sitzungsaffinität ermöglicht. Dabei wird der TCP-Traffic von einem Client anhand von Parametern wie der IP-Adresse des Clients oder dem Wert eines Cookies ermittelt. Die Anfragen werden dann an eine bestimmte Back-End-Instanz weitergeleitet, wenn das Back-End fehlerfrei ist und entsprechend seines Load-Balancing-Modus genügend Kapazität aufweist.

Die Sitzungsaffinität hat nur geringe Auswirkungen auf den UDP-Traffic, da für UDP eine Sitzung eine einzelne Anfrage und Antwort darstellt.

Die Sitzungsaffinität kann aufgehoben sein, wenn die Instanz fehlerhaft oder überlastet ist. Sie sollten daher nicht von einer durchgehend wirksamen Affinität ausgehen.

Beim HTTP(S)-Load-Balancing funktioniert die Sitzungsaffinität am besten mit dem Load-Balancing-Modus RATE.

Unterschiedliche Load Balancer unterstützen unterschiedliche Optionen der Sitzungsaffinität, wie in der folgenden Tabelle zusammengefasst:

Load-Balancer Optionen der Sitzungsaffinität
Intern • Keine
• Client-IP
• Client-IP und Protokoll
• Client-IP, Protokoll und Port
TCP-Proxy
SSL-Proxy
• Keine
• Client-IP
HTTP(S) • Keine
• Client-IP
Generierte Cookies
Netzwerk Das Netzwerk-Load-Balancing verwendet keine Back-End-Dienste. Stattdessen müssen Sie die Sitzungsaffinität für das Netzwerk-Load-Balancing über Zielpools festlegen. Weitere Informationen dazu finden Sie unter Zielpools im Abschnitt zum Parameter sessionAffinity.

In den folgenden Abschnitten werden zwei gängige Arten der Sitzungsaffinität erläutert.

Client-IP-Affinität verwenden

Die Client-IP-Affinität leitet Anfragen von einer Client-IP-Adresse auf der Basis eines Hash dieser Adresse an dieselbe Back-End-Instanz weiter. Die Client-IP-Affinität ist eine Option für jeden GCP-Load-Balancer, der Back-End-Dienste nutzt.

Bei Verwendung der Client-IP-Affinität ist Folgendes zu beachten:

  • Die Client-IP-Adresse für den Load-Balancer ist möglicherweise nicht der Ursprungsclient, wenn sich die Adresse hinter NAT befindet oder die Anfragen über einen Proxy stellt. Anfragen, die über NAT oder einen Proxy gesendet werden, verwenden die IP-Adresse des NAT-Routers oder des Proxys als Client-IP-Adresse. Dies kann dazu führen, dass eingehender Traffic unnötigerweise auf dieselben Back-End-Instanzen verteilt wird.

  • Wenn ein Client von einem Netzwerk zu einem anderen verschoben wird, ändert sich seine IP-Adresse. Dies kann zur Aufhebung der Affinität führen.

Konsole


So legen Sie die Client-IP-Affinität fest:

  1. Wechseln Sie in der Google Cloud Platform Console zum Abschnitt Back-End-Konfiguration auf der Load-Balancer-Seite.
    Zur Seite "Load-Balancing"
  2. Wählen Sie das Bleistiftsymbol für Ihren Load-Balancer aus.
  3. Wählen Sie Back-End-Konfiguration aus.
  4. Wählen Sie das Bleistiftsymbol für einen Back-End-Dienst aus.
  5. Wählen Sie im Dialogfeld Back-End-Dienst bearbeiten im Drop-down-Menü Sitzungsaffinität die Option Client-IP aus.
    Diese Aktion aktiviert die Client-IP-Sitzungsaffinität. Das Feld Affinitätscookie-TTL ist ausgegraut, da es für die Client-IP-Affinität keine Bedeutung hat.
  6. Klicken Sie für den Back-End-Dienst auf die Schaltfläche Aktualisieren.
  7. Klicken Sie für den Load-Balancer auf die Schaltfläche Aktualisieren.

gcloud


Sie können den Befehl create verwenden, um die Sitzungsaffinität für einen neuen Back-End-Dienst festzulegen, oder den Befehl update, um sie für einen bestehenden Back-End-Dienst festzulegen. In diesem Beispiel wird der Befehl update verwendet.

gcloud compute backend-services update [BACKEND_SERVICE_NAME] \
    --session-affinity client_ip

API


Informationen zur API finden Sie in der API-Referenz für Back-End-Dienste.

Wenn die Cookie-Affinität festgelegt ist, gibt der Load-Balancer bei der ersten Anfrage ein Cookie mit der Bezeichnung GCLB aus und leitet dann jede nachfolgende Anfrage mit diesem Cookie an dieselbe Instanz weiter. Die cookiebasierte Affinität ermöglicht es dem Load-Balancer, mehrere Clients, die die gleiche IP-Adresse nutzen, zu unterscheiden und diese Clients so gleichmäßiger auf die Instanzen zu verteilen. Aufgrund der cookiebasierten Affinität kann der Load-Balancer die Affinität der Instanz beibehalten, auch wenn sich die IP-Adresse des Clients ändert.

Der Pfad des Cookies ist immer /. Wenn also zwei Back-End-Dienste beide einen bestimmten Hostnamen mit einer cookiebasierten Affinität nutzen, erfolgt das Load-Balancing der beiden Dienste durch das gleiche Cookie.

Die Lebensdauer der vom Load-Balancer generierten HTTP-Cookies ist konfigurierbar. Sie kann auf 0 gesetzt werden (Standard), was bedeutet, dass das Cookie nur ein Sitzungscookie ist. Das Cookie kann aber auch eine Lebensdauer zwischen 1 und 86400 Sekunden (24 Stunden) haben.

Konsole


So legen Sie die Cookie-Affinität fest:

  1. Wechseln Sie zur Änderung der Cookie-Affinität in der Google Cloud Platform Console zum Abschnitt Back-End-Konfiguration auf der HTTP(S)-Load-Balancer-Seite.
    Zur Seite "Load-Balancing"
  2. Wählen Sie das Bleistiftsymbol für Ihren Load-Balancer aus.
  3. Wählen Sie Back-End-Konfiguration aus.
  4. Wählen Sie das Bleistiftsymbol für einen Back-End-Dienst aus.
  5. Wählen Sie aus dem Drop-Down-Menü Sitzungsaffinität die Option Cookie generieren aus, um die Cookie-Affinität festzulegen.
  6. Legen Sie im Feld Affinitätscookie-TTL die Lebensdauer des Cookies in Sekunden fest.
  7. Klicken Sie für den Back-End-Dienst auf die Schaltfläche Aktualisieren.
  8. Klicken Sie für den Load-Balancer auf die Schaltfläche Aktualisieren.

gcloud


Aktivieren Sie die Cookie-Affinität. Setzen Sie dafür --session-affinity auf generated_cookie und --affinity-cookie-ttl auf die Lebensdauer des Cookies in Sekunden. Sie können den Befehl create verwenden, um die Einstellung für einen neuen Back-End-Dienst vorzunehmen, oder den Befehl update, um sie für einen bestehenden Back-End-Dienst vorzunehmen. In diesem Beispiel wird der Befehl update verwendet.

gcloud compute backend-services update [BACKEND_SERVICE_NAME] \
    --session-affinity generated_cookie \
    --affinity-cookie-ttl 86400

API


Informationen zur API finden Sie in der API-Referenz für Back-End-Dienste.

Sitzungsaffinität deaktivieren

Sie haben zwei Möglichkeiten, um die Sitzungsaffinität zu deaktivieren: Sie aktualisieren den Back-End-Dienst und setzen die Sitzungsaffinität auf Keine oder Sie bearbeiten den Back-End-Dienst und setzen die Sitzungsaffinität in einem Texteditor auf Keine. Sie können auch einen der beiden Befehle verwenden, um die Lebensdauer des Cookies zu ändern.

Konsole


So deaktivieren Sie die Sitzungsaffinität:

  1. Wechseln Sie zum Deaktivieren der Sitzungsaffinität in der Google Cloud Platform Console auf der Load-Balancer-Seite zum Abschnitt Back-End-Konfiguration.
    Zur Seite "Load-Balancing"
  2. Wählen Sie das Bleistiftsymbol für Ihren Load-Balancer aus.
  3. Wählen Sie Back-End-Konfiguration aus.
  4. Wählen Sie das Bleistiftsymbol für einen Back-End-Dienst aus.
  5. Wählen Sie im Drop-down-Menü Sitzungsaffinität die Option Keine aus, um die Sitzungsaffinität zu deaktivieren.
  6. Klicken Sie für den Back-End-Dienst auf die Schaltfläche Aktualisieren.
  7. Klicken Sie für den Load-Balancer auf die Schaltfläche Aktualisieren.

gcloud


Mit dem folgenden Befehl deaktivieren Sie die Sitzungsaffinität:

  gcloud compute backend-services update [BACKEND_SERVICE_NAME] \
  --session-affinity none


ODER

gcloud compute backend-services edit [BACKEND_SERVICE_NAME]

API


Informationen zur API finden Sie in der API-Referenz für Back-End-Dienste.

Verlust der Sitzungsaffinität

Unabhängig vom gewählten Typ der Affinität kann ein Client die Affinität mit der Instanz beispielsweise in den folgenden Fällen verlieren:

  • Die Instanzgruppe hat keine Kapazität mehr und der Traffic muss zu einer anderen Zone weitergeleitet werden. In diesem Fall wird der Traffic von bestehenden Sitzungen eventuell zur neuen Zone gesendet. Dies hebt die Affinität auf. Sie können dieser Situation vorbeugen, wenn Sie dafür sorgen, dass Ihre Instanzgruppen genügend Kapazität haben, um alle lokalen Nutzer verarbeiten zu können.
  • Durch Autoscaling werden der Instanzgruppe Instanzen hinzugefügt oder daraus entfernt. In beiden Fällen verteilt der Back-End-Dienst die Arbeitslast neu und das Ziel wird eventuell verschoben. Sie können dieser Situation vorbeugen, wenn Sie dafür sorgen, dass die Mindestanzahl an Instanzen, die durch das Autoscaling bereitgestellt wird, ausreicht, um die erwartete Last zu bewältigen, und das Autoscaling dann nur für eine unerwartete Erhöhung der Last verwendet wird.
  • Für die Zielinstanz werden bei der Systemdiagnose Fehler ermittelt. Die Affinität geht verloren, da die Sitzung dann zu einer fehlerfreien Instanz verschoben wird.
  • Der Load-Balancing-Modus ist auf CPU-Auslastung eingestellt. Dies kann dazu führen, dass sich die berechneten Kapazitäten in den Zonen ändern und Traffic an eine andere Zone in der Region gesendet wird. Dies ist bei geringem Traffic wahrscheinlicher, wenn die berechnete Kapazität weniger stabil ist.

Einstellung für Zeitlimit konfigurieren

Legen Sie für langlebigere Verbindungen vom Load-Balancer zum Back-End-Dienst ein höheres Zeitlimit als die 30-Sekunden-Standardeinstellung fest.

Konsole


So konfigurieren Sie die Einstellung für das Zeitlimit:

  1. Wechseln Sie zur Änderung der Zeitlimiteinstellung in der Google Cloud Platform Console zum Abschnitt Back-End-Konfiguration auf der HTTP(S)-Load-Balancer-Seite.
    Zur Seite "Load-Balancing"
  2. Wählen Sie das Bleistiftsymbol für Ihren Load-Balancer aus.
  3. Wählen Sie Back-End-Konfiguration aus.
  4. Wählen Sie das Bleistiftsymbol für den Back-End-Dienst aus.
  5. Wählen Sie in der Zeile für die Einstellungen zu Protokoll, Port und Zeitlimit das Bleistiftsymbol aus, um die Einstellungen zu bearbeiten.
  6. Geben Sie für Einstellung für das Zeitlimit einen Wert in Sekunden ein.
  7. Klicken Sie für den Back-End-Dienst auf die Schaltfläche Aktualisieren.
  8. Klicken Sie für den Load-Balancer auf die Schaltfläche Aktualisieren.

gcloud


Zum Ändern der Zeitlimiteinstellung mit dem gcloud-Befehlszeilentool verwenden Sie den Befehl "gcloud compute Back-End-Dienste update". Hängen Sie an den Befehl --help an, um ausführliche Informationen zu erhalten.

gcloud compute backend-services update [BACKEND_SERVICE] [--timeout=TIMEOUT]

API


Informationen zur API finden Sie in der API-Referenz für Back-End-Dienste.

Benannte Ports

Für interne HTTP(S)-, externen HTTP(S)-, SSL-Proxy- und TCP-Proxy-Load-Balancer muss Back-End-Diensten ein benannter Port zugeordnet sein, wenn es sich bei den Back-Ends um Instanzgruppen handelt. Durch Benennung eines Ports wird festgelegt, dass der Load Balancer diesen konfigurierten benannten Port in der Back-End-Instanzgruppe verwenden soll. Dafür wird dann eine Portnummer übergeben. Diese steht für den Port, über den der Load Balancer eine Verbindung zu den Back-End-VMs herstellt. Dieser Port kann sich von dem Port unterscheiden, über den Clients den Load Balancer selbst kontaktieren.

Benannte Ports sind Schlüssel/Wert-Paare mit einem Dienstnamen und einer Nummer des Ports, auf denen ein Dienst ausgeführt wird. Das Schlüssel/Wert-Paar wird jeweils für eine Instanzgruppe definiert. Wenn ein Back-End-Dienst diese Instanzgruppe als Back-End verwendet, kann er den benannten Port "abonnieren":

  • Für jede Instanzgruppe können bis zu fünf benannte Ports (Schlüssel/Wert-Paare) definiert werden.
  • Jeder Back-End-Dienst für einen HTTP(S)-, SSL-Proxy- oder TCP-Proxy-Load-Balancer, der Instanzgruppen-Back-Ends verwendet, kann nur einen einzigen benannten Port "abonnieren".
  • Wenn Sie einen benannten Port für einen Back-End-Dienst festlegen, muss für alle Back-End-Instanzgruppen mindestens ein benannter Port mit dem gleichen Namen definiert sein.

Benannte Ports können in folgenden Fällen nicht verwendet werden:

  • Für NEG-Back-Ends: NEGs definieren Ports pro Endpunkt. Einer NEG ist kein Schlüssel/Wert-Paar für einen benannten Port zugeordnet.
  • Für interne TCP/UDP-Load-Balancer: Da es sich bei internen TCP/UDP-Load-Balancern um Passthrough-Load-Balancer (keine Proxys) handelt, unterstützen ihre Back-End-Dienste keine Festlegung eines benannten Ports.

Systemdiagnosen

Jeder Back-End-Dienst muss mit einer Systemdiagnose verknüpft sein. Eine Systemdiagnose wird fortlaufend ausgeführt und die Ergebnisse helfen bei der Entscheidung, welche Instanzen neue Anfragen erhalten sollen.

Fehlerhafte Instanzen erhalten keine neuen Anfragen und werden weiterhin abgefragt. Wenn eine fehlerhafte Instanz eine Systemdiagnose besteht, dann wird sie als fehlerfrei erachtet und erhält wieder neue Verbindungen.

Best Practices für Systemdiagnosen

Als Best Practice beim Konfigurieren einer Systemdiagnose sollten die Überprüfung des Systemzustands und die Bereitstellung des Traffics auf demselben Port erfolgen. Allerdings ist es möglich, dass Systemdiagnosen an einem bestimmten Port ausgeführt werden, während der Traffic über einen anderen Port geleitet wird. Wenn Sie zwei verschiedene Ports verwenden, müssen Sie dafür sorgen, dass die Firewallregeln und -dienste, die auf Instanzen ausgeführt werden, ordnungsgemäß konfiguriert sind. Wenn Sie auf ein und demselben Port Systemdiagnosen ausführen sowie Traffic bereitstellen und dann Ports an einem bestimmten Punkt wechseln, müssen Sie sowohl den Back-End-Dienst als auch die Systemdiagnose aktualisieren.

Back-End-Dienste, für die keine gültige Weiterleitungsregel angewendet wird, werden nicht überprüft und haben keinen Systemstatus.

Systemdiagnosen erstellen

Sie müssen zunächst eine Systemdiagnose erstellen, bevor Sie einen Back-End-Dienst erstellen. Wir empfehlen, eine Systemdiagnose für das gleiche Protokoll zu erstellen wie für den Traffic, für den Sie ein Load-Balancing ausführen.

Konsole

In der Konsole können Sie eine Systemdiagnose beim Erstellen Ihres Back-End-Dienstes festlegen.

gcloud

Informationen zum Erstellen einer Systemdiagnose mit gcloud-Befehlen finden Sie auf der Seite Systemdiagnose.

API

Informationen zu API-Befehlen erhalten Sie auf der Seite Systemdiagnosen.

Back-End-Dienste erstellen

Konsole


So erstellen Sie einen neuen Back-End-Dienst:

  1. Wechseln Sie zum Erstellen eines Back-End-Dienstes in der Google Cloud Platform Console zum Abschnitt Back-End-Konfiguration auf der HTTP(S)-Load-Balancer-Seite.
    Zur Seite "Load-Balancing"
  2. Wählen Sie das Bleistiftsymbol für Ihren Load-Balancer aus.
  3. Wählen Sie Back-End-Konfiguration aus.
  4. Wählen Sie im Drop-down-Menü Back-End-Dienste und Back-End-Buckets erstellen oder auswählen die Option Back-End-Dienste > Back-End-Dienst erstellen aus.
  5. Geben Sie im Feld Name eine Bezeichnung für den Back-End-Dienst ein.
  6. Geben Sie optional unter Beschreibung eine Beschreibung ein.
  7. Wählen Sie in der Zeile für die Einstellungen zu Protokoll, Port und Zeitlimit das Bleistiftsymbol aus.
    • Wählen Sie für Protokoll http, https oder http2 aus.
    • Geben Sie unter Benannter Port einen Portnamen ein.
    • Optional können Sie die Standardeinstellung für Zeitlimit ändern.
  8. Wählen Sie unter Back-End-Typ das Optionsfeld Instanzgruppe aus.
  9. Erstellen Sie im Dialogfeld Back-Ends einen oder mehrere Back-Ends.
    1. Wählen Sie im Dialogfeld Neues Back-End eine vorhandene Instanzgruppe aus dem Drop-down-Menü aus.
    2. Geben Sie unter Portnummern eine oder mehrere Portnummern, getrennt durch Kommas, ein, über die das Back-End Anfragen empfängt.
      • Für ein Protokoll des Typs http ist für dieses Feld 80 festgelegt.
      • Für ein Protokoll des Typs https ist für dieses Feld 443 festgelegt.
      • Für ein Protokoll des Typs http2 ist für dieses Feld 443 ebenfalls festgelegt.
    3. Legen Sie den Prozentwert für Maximale CPU-Auslastung fest.
    4. Optional: Legen Sie für Maximale Anzahl der Anfragen pro Sekunde einen Wert fest und lassen Sie das Feld für Unbegrenzt leer. Legen Sie für Anfragen pro Sekunde pro Instanz oder Anfragen pro Sekunde pro Gruppe einen Wert fest.
    5. Legen Sie den Prozentsatz für Kapazität fest.
    6. Klicken Sie auf die Schaltfläche Fertig.
  10. Klicken Sie auf das Kästchen Cloud-CDN aktivieren oder entfernen Sie das Häkchen.
  11. Wählen Sie im Drop-down-Menü Systemdiagnose eine vorhandene Systemdiagnose aus oder legen Sie mit Weitere Systemdiagnose erstellen und den folgenden Schritten eine neue Systemdiagnose an:
    1. Geben Sie unter Name einen Namen an.
    2. Legen Sie optional unter Beschreibung eine Beschreibung fest.
    3. Geben Sie für Protokoll und Port die jeweilige Einstellung an. Die Best Practices dazu finden Sie im Abschnitt "Systemdiagnose".
    4. Legen Sie unter Proxy-Protokoll ein Protokoll fest.
    5. Geben Sie optional Werte für Anfrage und Antwort an.
    6. Legen Sie unter Diagnosekriterien die folgenden Elemente fest:
      1. Legen Sie das Überprüfungsintervall in Sekunden fest.
      2. Legen Sie die Zeitüberschreitung in Sekunden fest.
      3. Legen Sie unter Schwellenwert für Intaktheit den Wert number of consecutive successes fest.
      4. Legen Sie unter Fehlerschwellenwert den Wert number of consecutive failures fest.
      5. Klicken Sie auf Speichern und fortfahren.
    7. Klicken Sie auf Erweiterte Konfigurationen, um die Werte für Sitzungsaffinität, Zeitlimit für Verbindungsausgleich, Benutzerdefinierter Anfrage-Header oder Sicherheitsrichtlinien zu ändern.
      1. Wählen Sie zur Festlegung von Sitzungsaffinität die Einstellung Client-IP oder Cookie generieren aus. Wenn Sie *Cookie generieren auswählen, müssen Sie für Affinitätscookie-TTL die Anzahl der Sekunden angeben.
      2. Geben Sie für Zeitlimit für Verbindungsausgleich die Anzahl der Sekunden ein, die die Instanz warten soll, bis In-Flight-Verbindungen hergestellt sind.
      3. Klicken Sie zum Erstellen benutzerdefinierter Anfrage-Header auf Header hinzufügen und legen Sie dann Werte für Name des Headers und Header-Wert für den Header fest.
      4. Aktivieren Sie eine Sicherheitsrichtlinie durch Auswahl aus dem Drop-down-Menü Sicherheitsrichtlinie.
    8. Klicken Sie für den Back-End-Dienst auf die Schaltfläche Aktualisieren.
    9. Klicken Sie für den Load-Balancer auf die Schaltfläche Aktualisieren.

gcloud


Informationen zum Erstellen eines Back-End-Dienstes mit dem gcloud-Befehlszeilentool finden Sie in der Cloud SDK-Dokumentation.

API


Informationen zu API-Befehlen für das Erstellen eines Back-End-Dienstes finden Sie auf der Seite Back-End-Dienste.

Back-End-Dienst ändern

Änderungen an Ihren Back-End-Diensten werden nicht sofort wirksam. Es kann einige Minuten dauern, bis die Änderungen im gesamten Netzwerk umgesetzt sind.

Konsole


So ändern Sie einen vorhandenen Back-End-Dienst:

  1. Wechseln Sie zur Bearbeitung eines Back-End-Dienstes in der Google Cloud Platform Console zum Abschnitt Back-End-Konfiguration auf der HTTP(S)-Load-Balancer-Seite.
    Zur Seite "Load-Balancing"
  2. Wählen Sie das Bleistiftsymbol für Ihren Load-Balancer aus.
  3. Wählen Sie Back-End-Konfiguration aus.
  4. Wählen Sie unter Back-End-Dienste das Bleistiftsymbol für einen Back-End-Dienst aus. Sie können die folgenden Felder ändern:
    1. Fügen Sie unter Back-Ends ein neues Back-End hinzu oder wählen Sie das Bleistiftsymbol aus, um ein bestehendes Back-End zu bearbeiten.
    2. Wählen Sie in der Zeile für die Einstellungen zu Protokoll, Port und Zeitlimit das Bleistiftsymbol aus.
    3. Wählen Sie unter Systemdiagnose eine vorhandene Systemdiagnose aus oder erstellen Sie eine neue. Führen Sie dazu die vorherigen Schritte zur Erstellung einer Systemdiagnose aus.
    4. Ändern Sie die Einstellung für Sitzungsaffinität und bei Bedarf für Affinitätscookie-TTL.
    5. Klicken Sie auf Erweiterte Konfigurationen, um den Wert für Zeitlimit für Verbindungsausgleich zu ändern.
    6. Klicken Sie auf das Kästchen Cloud-CDN aktivieren oder entfernen Sie das Häkchen.
  5. Klicken Sie auf Erweiterte Konfigurationen, um die Werte für Sitzungsaffinität, Zeitlimit für Verbindungsausgleich, Benutzerdefinierter Anfrage-Header oder Sicherheitsrichtlinien zu ändern.
    1. Wählen Sie zur Festlegung von Sitzungsaffinität die Einstellung Client-IP oder Cookie generieren aus. Wenn Sie *Cookie generieren auswählen, müssen Sie für Affinitätscookie-TTL die Anzahl der Sekunden angeben.
    2. Geben Sie für Zeitlimit für Verbindungsausgleich die Anzahl der Sekunden ein, die die Instanz warten soll, bis In-Flight-Verbindungen hergestellt sind.
    3. Klicken Sie zum Erstellen benutzerdefinierter Anfrage-Header auf Header hinzufügen und legen Sie dann Werte für Name des Headers und Header-Wert für den Header fest.
    4. Aktivieren Sie eine Sicherheitsrichtlinie durch Auswahl aus dem Drop-down-Menü Sicherheitsrichtlinie.
    5. Klicken Sie für den Back-End-Dienst auf die Schaltfläche Aktualisieren.
    6. Klicken Sie für den Load-Balancer auf die Schaltfläche Aktualisieren.

gcloud


Informationen zum Ändern eines Back-End-Dienstes mit dem gcloud-Befehlszeilentool finden Sie in der Cloud SDK-Dokumentation.

API


Informationen zum Ändern eines Back-End-Dienstes mit der API erhalten Sie in der API-Dokumentation.

Instanzgruppen zu einem Back-End-Dienst hinzufügen

Um die Instanzen zu definieren, die in einem Back-End-Dienst enthalten sind, müssen Sie ein Back-End hinzufügen und ihm eine Instanzgruppe zuweisen. Sie müssen die Instanzgruppe erstellen, bevor Sie sie dem Back-End hinzuzufügen können.

Wenn Sie dem Back-End eine Instanzgruppe hinzufügen, müssen Sie auch bestimmte Parameter definieren.

Konsole


So fügen Sie einem Back-End-Dienst eine Instanzgruppe hinzu:

  1. Wechseln Sie zum Hinzufügen einer Instanzgruppe zu einem Back-End in der Google Cloud Platform Console zum Abschnitt Back-End-Konfiguration auf der HTTP(S)-Load-Balancer-Seite.
    Zur Seite "Load-Balancing"
  2. Wählen Sie das Bleistiftsymbol für Ihren Load-Balancer aus.
  3. Wählen Sie Back-End-Konfiguration aus.
  4. Wählen Sie das Bleistiftsymbol für Back-End-Konfiguration aus.
  5. Wählen Sie das Bleistiftsymbol für Back-End aus.
  6. Wählen Sie im Dialogfeld Back-End bearbeiten im Drop-down-Menü Instanzgruppe eine Instanzgruppe aus.
  7. Klicken Sie für Back-End bearbeiten auf die Schaltfläche Fertig.
  8. Klicken Sie für den Back-End-Dienst auf die Schaltfläche Aktualisieren.
  9. Klicken Sie für den Load-Balancer auf die Schaltfläche Aktualisieren.

gcloud


Informationen zum Hinzufügen einer Instanzgruppe zu einem Back-End-Dienst mit dem gcloud-Befehlszeilentool finden Sie in der Cloud SDK-Dokumentation.

API


Informationen zum Hinzufügen einer Instanzgruppe zu einem Back-End-Dienst mit der API erhalten Sie in der API-Dokumentation.

Netzwerk-Endpunktgruppen zu einem Back-End-Dienst hinzufügen

Informationen zum Hinzufügen einer Netzwerk-Endpunktgruppe zu einem Back-End-Dienst finden Sie unter Netzwerk-Endpunktgruppe zu einem Back-End-Dienst hinzufügen.

Ergebnisse einer Systemdiagnose für Back-End-Dienste aufrufen

Nachdem Sie Systemdiagnosen und den Back-End-Dienst erstellt haben, können Sie die Ergebnisse der Systemdiagnose anzeigen.

Konsole


So zeigen Sie das Ergebnis einer Systemdiagnose für einen Back-End-Dienst an:

  1. Wechseln Sie zur Seite der Load-Balancing-Zusammenfassung.
    Zur Seite "Load-Balancing"
  2. Klicken Sie auf den Namen eines Load Balancers.
  3. Rufen Sie unter Back-End für einen Back-End-Dienst die Spalte Fehlerfrei in der Tabelle Instanzgruppe auf.

gcloud


Zum Aufrufen der Ergebnisse der letzten Systemdiagnose mit dem gcloud-Befehlszeilentool verwenden Sie den Befehl backend-services get-health.

gcloud compute backend-services get-health [BACKEND_SERVICE]

Der Befehl liefert einen healthState-Wert für alle Instanzen im festgelegten Back-End-Dienst mit einem Wert von entweder HEALTHY oder UNHEALTHY:

  healthStatus:
    - healthState: UNHEALTHY
      instance: us-central1-b/instances/www-video1
    - healthState: HEALTHY
      instance: us-central1-b/instances/www-video2
  kind: compute#backendServiceGroupHealth
  

API


Informationen zu API-Befehlen finden Sie auf der Seite Systemdiagnosen.

Sonstige Hinweise

Die folgenden Traffic Director-Features werden von GCP-Load-Balancern nicht unterstützt:

  • Schutzschaltung
  • Ausreißererkennung
  • Load-Balancing-Richtlinien
  • Cookiebasierte HTTP-Sitzungsaffinität
  • Header-basierte HTTP-Sitzungsaffinität

Weitere Informationen

Eine Dokumentation und Informationen zur Verwendung von Back-End-Diensten beim Load-Balancing finden Sie in den folgenden Abschnitten:

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Load-Balancing