Auf dieser Seite erhalten Sie eine Übersicht über die erweiterten Traffic-Verwaltungsfunktionen, die für globale externe Application Load Balancer verfügbar sind. Diese Seite bezieht sich nur auf den globalen externen Application Load Balancer. Diese Load-Balancer sind immer global und immer in der Premium-Stufe. Wenn Sie einen Load-Balancer in einem anderen Modus verwenden, finden Sie weitere Informationen auf den folgenden Seiten:
Globale externe Application Load Balancer unterstützen erweiterte Features zur Trafficverwaltung, mit denen Sie folgende Funktionen verwenden können:- Trafficsteuerung: Intelligente Weiterleitung von Traffic auf Basis von HTTP(S)-Parametern, z. B. Host, Pfad, Header und andere Anfrageparameter
- Trafficaktionen: Ausführen anfrage- und antwortbasierter Aktionen, z. B. Weiterleitungen und Headertransformationen
- Trafficrichtlinien: Optimieren des Load-Balancing-Verhaltens, z. B. erweiterte Load-Balancing-Algorithmen
Sie können diese Funktionen mithilfe von URL-Zuordnungen und Back-End-Diensten einrichten. Weitere Informationen finden Sie unter folgenden Links:
Fallbeispiele
Die Trafficverwaltung deckt viele Anwendungsfälle ab. Dieser Abschnitt enthält einige allgemeine Beispiele.
Trafficsteuerung: Routing auf Basis von Headern
Mithilfe der Trafficsteuerung können Sie Traffic anhand von HTTP-Parametern wie Anfrageheadern zu Dienstinstanzen leiten. Wenn das Gerät eines Nutzers beispielsweise ein Mobilgerät mit user-agent:Mobile
im Anfrageheader ist, kann die Trafficsteuerung diesen Traffic an Dienstinstanzen senden, die zur Verarbeitung von mobilem Traffic bestimmt sind. Traffic ohne user-agent:Mobile
wird wiederum an Instanzen zur Verarbeitung von Traffic anderer Geräte gesendet.
Trafficaktionen: Gewichtete Trafficaufteilung
Die Bereitstellung einer neuen Version eines bestehenden Produktionsdienstes birgt in der Regel ein gewisses Risiko. Selbst wenn die Tests in der Staging-Phase positiv ausfallen, möchten Sie wahrscheinlich nicht sofort 100 % Ihrer Nutzer die neue Version verwenden lassen. Mit der Trafficverwaltung können Sie prozentuale Trafficaufteilungen für mehrere Backend-Dienste definieren.
Sie können beispielsweise 95 % des Traffics an die vorherige Version Ihres Dienstes und 5 % an die neue Version Ihres Dienstes senden. Nachdem Sie sich vergewissert haben, dass die neue Produktionsversion wie erwartet funktioniert, können Sie die Prozentsätze schrittweise ändern, bis 100 % des Traffics die neue Version Ihres Dienstes erreichen. Die Trafficaufteilung wird gewöhnlich zur Bereitstellung neuer Versionen, für A/B-Tests, Dienstmigration und ähnliche Prozesse verwendet.
Konfigurieren Sie die Sitzungsaffinität nicht, wenn Sie die gewichtete Trafficaufteilung verwenden. In diesem Fall hat die Konfiguration der gewichteten Trafficaufteilung Vorrang.Trafficrichtlinien: Anfragespiegelung
Ihre Organisation hat möglicherweise bestimmte Compliance-Anforderungen, die festlegen, dass der gesamte Traffic auf einen zusätzlichen Dienst gespiegelt wird, der z. B. die Anfragedetails zur späteren erneuten Verwendung in einer Datenbank erfasst.
Erweiterbarkeit mit Diensterweiterungen
Mit Diensterweiterungs-Callouts können Sie benutzerdefinierte Logik in den Load Balancing-Datenpfad einfügen. Mit diesen Erweiterungen können Sie unterstützte Application Load Balancer anweisen, während der Datenverarbeitung gRPC-Aufrufe an nutzerverwaltete Anwendungen oder Dienste zu senden.
Weitere Informationen finden Sie unter Übersicht über Diensterweiterungen.
Trafficverwaltung – Komponenten
Im Allgemeinen bieten Load-Balancer Trafficverwaltung über die Ressourcen für globale URL-Zuordnungen und globale Backend-Dienste.Sie können die Trafficsteuerung und Trafficaktionen mithilfe regionaler URL-Zuordnungen einrichten. Google Cloud-Ressourcen, die mit URL-Zuordnungen verknüpft sind, umfassen Folgendes:
- Routingregel
- Regelübereinstimmung
- Regelaktion
Sie können Trafficrichtlinien mithilfe von Backend-Diensten einrichten. Google Cloud-Ressourcen, die mit Backend-Diensten verknüpft sind, umfassen Folgendes:
- Load-Balancer-Richtlinie für Standorte
- Konsistente Einstellungen für den Hash-Load-Balancer
- Ausreißererkennung
Im folgenden Diagramm sind die Ressourcen dargestellt, die zur Implementierung der einzelnen Features verwendet werden.
Routinganfragen an Back-Ends
Bei globalen externen Application Load Balancer wird das Backend für Ihren Traffic anhand eines zweiphasigen Ansatzes ermittelt:- Der Load-Balancer wählt einen Backend-Dienst oder Backend-Bucket anhand von Regeln aus, die in einer globalen URL-Zuordnung definiert sind.
- Der Backend-Dienst wählt eine Backend-Instanz anhand von Richtlinien aus, die in einem globalen Backend-Dienst definiert sind.
Beim Konfigurieren des Routings können Sie zwischen den folgenden Modi wählen:
- Einfache Host- und Pfadregeln
- Erweiterte Host-, Pfad- und Routingregel
Die beiden Modi schließen sich gegenseitig aus. Jede URL-Zuordnung kann jeweils nur einen der Modi enthalten.
Einfache Host- und Pfadregeln
In einer einfachen Host- und Pfadregel funktionieren URL-Zuordnungen wie unter Übersicht über URL-Zuordnungen beschrieben.
Das folgende Diagramm zeigt den logischen Ablauf einer einfachen Host- und Pfadregel.
Eine Anfrage wird erst einmal mithilfe von Hostregeln ausgewertet. Ein Host ist die in der Anfrage angegebene Domain. Wenn die Anfrage host
mit einem der Einträge im Feld hosts
übereinstimmt, wird der zugehörige Pfad-Matcher verwendet.
Als Nächstes wird der Pfad-Matcher ausgewertet. Pfadregeln werden nach dem Prinzip "längster Pfad zuerst" abgeglichen. Sie können Pfadregeln in beliebiger Reihenfolge angeben. Nachdem die genaueste Übereinstimmung gefunden wurde, wird die Anfrage an den entsprechenden Back-End-Dienst weitergeleitet. Wenn die Anfrage nicht übereinstimmt, wird der Standard-Back-End-Dienst verwendet.
Eine typische einfache Host- und Pfadregel sieht in etwa so aus, wobei der Videotraffic auf video-backend-service
und der gesamte andere Traffic auf web-backend-service
übertragen wird.
defaultService
und service
können auf einen Backend-Dienst oder einen Backend-Bucket verweisen. Dieses Beispiel zeigt Backend-Dienste.
gcloud compute url-maps describe lb-map
defaultService: global/backendServices/web-backend-service
hostRules:
- hosts:
- '*'
pathMatcher: pathmap
name: lb-map
pathMatchers:
- defaultService: global/backendServices/web-backend-service
name: pathmap
pathRules:
- paths:
- /video
- /video/*
service: global/backendServices/video-backend-service
Erweiterte Host-, Pfad- und Routingregel
Erweiterte Host-, Pfad- und Routingregeln bieten im Vergleich zu einfachen Host- und Pfadregeln zusätzliche Konfigurationsoptionen. Diese Optionen ermöglichen erweiterte Trafficverwaltungsmuster und ändern auch einen Teil der Semantik. Routingregeln wird z. B. ein Prioritätswert zugewiesen und sie werden in Prioritätsreihenfolge interpretiert (statt anhand des Prinzips "längster Pfad zuerst").
Wie im vorherigen Beispiel für einfache Host- und Pfadregeln können Sie die erweiterte Trafficverwaltung mithilfe einer URL-Zuordnung konfigurieren. Die folgende URL-Zuordnung konfiguriert z. B. ein Routing, bei dem 95 % des Traffics an einen Backend-Dienst und 5 % des Traffics an einen anderen Backend-Dienst weitergeleitet werden.
defaultService
und service
können auf einen Backend-Dienst oder einen Backend-Bucket verweisen. Dieses Beispiel zeigt Backend-Dienste.
gcloud compute url-maps describe lb-map
defaultService: global/backendServices/service-a
hostRules:
- hosts:
- '*'
pathMatcher: matcher1
name: lb-map
pathMatchers:
- defaultService: global/backendServices/service-a
name: matcher1
routeRules:
- matchRules:
- prefixMatch: ''
routeAction:
weightedBackendServices:
- backendService: global/backendServices/service-a
weight: 95
- backendService: global/backendServices/service-b
weight: 5
Hostregeln
Wenn eine Anfrage beim Load-Balancer eingeht, wird das Feld host
der Anfrage mit dem in der URL-Zuordnung definierten Wert hostRules
abgeglichen. Jede Hostregel besteht aus einer Liste mit einem oder mehreren Hosts und einem einzelnen Pfad-Matcher (pathMatcher
). Wenn keine hostRules
definiert sind, wird die Anfrage an defaultService
weitergeleitet.
hostRules[]
und defaultService
in der Dokumentation zur globalen URL Map API.
Pfad-Matcher
Wenn eine Anfrage mit einer Hostregel übereinstimmt, wertet der Load-Balancer den Pfad-Matcher aus, der dem Host entspricht.
Ein Pfad-Matcher besteht aus Folgendem:
- Einer oder mehrerer Pfadregeln (
pathRules
) oder Routingregeln (routeRules
). - Einem Standarddienst (
defaultService
), der standardmäßig als Backend-Dienst oder Backend-Bucket verwendet wird, wenn keine anderen Backend-Dienste oder Backend-Buckets übereinstimmen.
pathMatchers[]
, pathMatchers[].pathRules[]
und
pathMatchers[].routeRules[]
in der Dokumentation zur globalen URL Map API.
Pfadregeln
Pfadregeln (pathRules
) geben einen oder mehrere URL-Pfade an, z. B. /
oder /video
.
Pfadregeln sind im Allgemeinen für das zuvor beschriebene host- und pfadbasierte Routing vorgesehen.
pathRules[]
in der Dokumentation zur globalen URL Map API.
Routingregeln
Eine Routingregel (routeRules
) gleicht Informationen in einer eingehenden Anfrage ab und trifft anhand der Übereinstimmung eine Routingentscheidung.
Routingregeln können eine Vielzahl verschiedener Übereinstimmungsregeln (matchRules
) und eine Vielzahl verschiedener Routingaktionen (routeAction
) enthalten.
Eine Übereinstimmungsregel wertet die eingehende Anfrage anhand des Pfades, der Header und der Abfrageparameter der HTTP(S)-Anfrage aus. Übereinstimmungsregeln unterstützen verschiedene Arten von Übereinstimmungen (z. B. Präfixübereinstimmung) sowie Modifikatoren (z. B. Groß- und Kleinschreibung). So können Sie beispielsweise HTTP(S)-Anfragen an eine Reihe von Back-Ends senden, je nachdem, ob ein benutzerdefinierter HTTP-Header vorhanden ist.
Hinweis: Übereinstimmungsoptionen und Semantik unterscheiden sich je nach abgeglichenem Anfrageabschnitt. Weitere Informationen finden Sie untermatchRules[]
in der Dokumentation zur globalen URL Map API.
Wenn Sie mehrere Routingregeln haben, führt der Load-Balancer diese in Prioritätsreihenfolge aus (basierend auf dem Feld priority
). Dies ermöglicht Ihnen, benutzerdefinierte Logiken für den Abgleich, das Routing und andere Aktionen anzugeben.
In einer Routingregel beendet der Load-Balancer nach der ersten Übereinstimmung die Auswertung der Übereinstimmungsregeln. Alle verbleibenden Übereinstimmungsregeln werden ignoriert.
Google Cloud führt die folgenden Aktionen aus:
- Sucht nach der ersten Übereinstimmungsregel, die der Anfrage entspricht
- Beendet die Suche nach anderen Übereinstimmungsregeln
- Wendet die Aktionen in den entsprechenden Routingaktionen an
Routingregeln bestehen aus mehreren Komponenten, die in der folgenden Tabelle beschrieben werden.
Komponente der Routingregel (API field name ) |
Beschreibung |
---|---|
Priorität (priority ) |
Eine Zahl von 0 bis 2.147.483.647 (also (2^31)-1), die einer Routingregel innerhalb eines angegebenen Pfad-Matchers zugewiesen ist. Die Priorität bestimmt die Reihenfolge der Routingregelauswertung. Die Priorität einer Regel nimmt mit zunehmender Anzahl ab, sodass eine Regel mit der Priorität 4 vor einer Regel mit der Priorität 25 ausgewertet wird. Die erste Regel, die der Anfrage entspricht, wird angewendet.
Prioritätsnummern müssen nicht aufeinanderfolgen. Sie können nicht mehr als eine Regel mit derselben Priorität erstellen. |
Beschreibung (description ) |
Eine optionale Beschreibung von bis zu 1.024 Zeichen. |
Dienst (service ) |
Die vollständige oder Teil-URL der Back-End-Dienstressource, an die der Traffic weitergeleitet wird, wenn diese Regel übereinstimmt. |
Übereinstimmungsregeln (matchRules ) |
Eine oder mehrere Regeln, die anhand der Anfrage ausgewertet werden. Diese matchRules können mit allen oder einem Teil der HTTP-Attribute der Anfrage übereinstimmen, z. B. mit den Parametern "Pfad", "HTTP-Header" und "Abfrage (GET)".Innerhalb einer matchRule müssen alle Übereinstimmungskriterien erfüllt sein, damit die routeActions der routeRule wirksam werden. Besitzt eine routeRule mehrere matchRules , werden die routeActions der routeRule wirksam, wenn eine Anfrage mit einer der matchRules der routeRule übereinstimmt.
|
Routingaktion (routeAction ) |
Lässt Sie angeben, welche Aktionen ausgeführt werden sollen, wenn die Kriterien der Übereinstimmungsregel erfüllt sind. Zu diesen Aktionen gehören Trafficaufteilung, URL-Überschreibungen, Wiederholungsversuche und Spiegelung, Fehlerinjektion und CORS-Richtlinien. |
Weiterleitungsaktion (urlRedirect ) |
Sie können eine Aktion so konfigurieren, dass sie mit einer HTTP-Weiterleitung antwortet, wenn die Kriterien der Übereinstimmungsregel erfüllt sind. Dieses Feld kann nicht in Verbindung mit einer Routingaktion verwendet werden. |
Headeraktion (headerAction ) |
Sie können Headertransformationsregeln für Anfragen und Antworten konfigurieren, wenn die Kriterien innerhalb der matchRules erfüllt sind. |
routeRules[]
routeRules[].priority
routeRules[].description
routeRules[].service
routeRules[].matchRules[]
routeRules[].routeAction
routeRules[].urlRedirect
routeRules[].headerAction
Übereinstimmungsregeln
Übereinstimmungsregeln (matchRules
) stimmen mit einem oder mehreren Attributen einer Anfrage überein und führen die in der Routingregel festgelegten Aktionen aus. Die folgende Liste enthält einige Beispiele für Anfrageattribute, die mithilfe von Übereinstimmungsregeln abgeglichen werden können:
Host: Der Hostname ist der Domainnamen-Teil einer URL. Der Hostname der URL
http://example.net/video/hd
ist beispielsweiseexample.net
. In der Anfrage stammt der Hostname aus dem HeaderHost
, wie in diesem curl-Beispielbefehl gezeigt, wobei10.1.2.9
die Load-Balancing-IP-Adresse ist:curl -v http://10.1.2.9/video/hd --header 'Host: example.com'
Die Pfade folgen dem Hostnamen, z. B.
/images
. Die Regel kann angeben, ob der gesamte Pfad oder nur der führende Teil des Pfads übereinstimmen muss.Andere HTTP-Anfrageparameter wie HTTP-Header, die einen Cookie-Abgleich ermöglichen, sowie Abgleiche, die auf Abfrageparametern beruhen (GET-Variablen).
pathMatchers[].routeRules[].matchRules[]
in der Dokumentation zur globalen URL Map API.
Routingaktionen
Routingaktionen sind spezifische Aktionen, die ausgeführt werden sollen, wenn eine Routingregel mit den Attributen einer Anfrage übereinstimmt.
Routingaktion (API field name ) |
Beschreibung |
---|---|
Weiterleitungen (urlRedirect ) |
Ein konfigurierbarer 3xx-Antwortcode wird zurückgegeben. Außerdem wird der Antwortheader Location mit dem entsprechenden URI festgelegt, wobei der Host und der Pfad wie in der Weiterleitungsaktion angegeben ersetzt werden.
|
URL-Umschreibungen (urlRewrite ) |
Der Hostnamen-Teil der URL, der Pfad oder beide werden umgeschrieben, bevor eine Anfrage an den ausgewählten Backend-Dienst gesendet wird.
Für die Umschreibung des Pfadteils können Sie Platzhalter in pathTemplateRewrite verwenden.
|
Headertransformationen (headerAction ) |
Fügt Anfrageheader hinzu oder entfernt diese, bevor eine Anfrage an den Back-End-Dienst gesendet wird. Außerdem können Antwortheader nach Empfang einer Antwort des Back-End-Diensts hinzugefügt oder entfernt werden. |
Trafficspiegelung (requestMirrorPolicy ) |
Zusätzlich zur Weiterleitung der Anfrage an den ausgewählten Back-End-Dienst auf Fire-and-Forget-Basis wird hierbei eine identische Anfrage an den konfigurierten Spiegelungs-Back-End-Dienst gesendet. Der Load-Balancer wartet nicht auf eine Antwort des Back-End-Diensts, an den die gespiegelte Anfrage gesendet wird. Die Trafficspiegelung wird nur in folgenden Fällen unterstützt:
|
Gewichtete Trafficaufteilung (weightedBackendServices ) |
Lässt zu, dass Traffic für eine übereinstimmende Regel an mehrere Back-End-Dienste verteilt wird, proportional zu einer benutzerdefinierten Gewichtung, die dem jeweiligen Back-End-Dienst zugewiesen ist. Diese Funktion eignet sich zum Konfigurieren abgestufter Bereitstellungen oder von A/B-Tests. Die Routingaktion könnte beispielsweise so konfiguriert werden, dass 99 % des Traffics an einen Dienst gesendet werden, der eine stabile Version einer Anwendung ausführt, während 1 % des Traffics an einen separaten Dienst mit einer neueren Version dieser Anwendung gesendet wird. |
Wiederholungsversuche (retryPolicy ) |
Dient zum Konfigurieren von Bedingungen, unter denen der Load-Balancer fehlgeschlagene Anfragen wiederholt, der Wartezeit des Load-Balancers bis zum erneuten Versuch sowie der maximal zulässigen Anzahl an Wiederholungsversuchen. Wiederholungsrichtlinien werden für Internet-NEG-Backends nicht unterstützt. |
Zeitlimit (timeout ) |
Gibt das Zeitlimit für die ausgewählte Route an. Das Zeitlimit wird vom Zeitpunkt der vollständigen Verarbeitung der Anfrage bis zur vollständigen Verarbeitung der Antwort berechnet. Das Zeitlimit umfasst alle Wiederholungen. |
Fehlerinjektion (faultInjectionPolicy ) |
Kann Fehler bei der Bearbeitung von Anfragen einbringen, um Störungen zu simulieren, einschließlich hoher Latenz, Dienstüberlastung, Dienstfehlern und Netzwerkpartitionierung. Diese Funktion ist hilfreich, um die Ausfallsicherheit eines Diensts gegenüber simulierten Störungen zu testen. |
Verzögerungsinjektion (faultInjectionPolicy ) |
Bringt Verzögerungen für einen benutzerdefinierten Teil von Anfragen ein, bevor die Anfrage an den ausgewählten Back-End-Dienst gesendet wird. |
Abbruchinjektion faultInjectionPolicy |
Reagiert direkt auf einen Teil der Anfragen mit benutzerdefinierten HTTP-Statuscodes, anstatt diese Anfragen an den Back-End-Dienst weiterzuleiten. |
Sicherheitsrichtlinien (corsPolicy ) |
Richtlinien für Cross-Origin Resource Sharing (CORS) verarbeiten die Einstellungen für die Erzwingung von CORS-Anfragen. |
Sie können eine der folgenden Routingaktionen angeben:
- Traffic an einen einzelnen Dienst weiterleiten (
service
) - Traffic zwischen mehreren Diensten aufteilen (
weightedBackendServices weight:x
, wobei x zwischen 0 und 1.000 liegen muss) - Weiterleitungs-URLs (
urlRedirect
)
Darüber hinaus können Sie eine der zuvor genannten Routingaktionen mit einer oder mehreren der folgenden Routingaktionen kombinieren:
- Trafficspiegelung (
requestMirrorPolicy
) - URL-Host und -Pfad umschreiben (
urlRewrite
) - Fehlgeschlagene Anfragen wiederholen (
retryPolicy
) - Zeitlimit festlegen (
timeout
) - Fehler in einem Prozentsatz des Traffics einführen (
faultInjectionPolicy
) - CORS-Richtlinie hinzufügen (
corsPolicy
) - Anfrage- oder Antwortheader bearbeiten (
headerAction
)
urlRedirect
urlRewrite
headerAction
requestMirrorPolicy
weightedBackendServices
retryPolicy
timeout
faultInjectionPolicy
corsPolicy
HTTP-zu-HTTPS-Weiterleitungen
Wenn Sie HTTP-Traffic an HTTPS weiterleiten müssen, können Sie zwei Weiterleitungsregeln mit einer gemeinsamen IP-Adresse erstellen.
Ein vollständiges Beispiel finden Sie unter HTTP-zu-HTTPS-Weiterleitung für globale externe Application Load Balancer einrichten.Trafficrichtlinien
Durch die Verwendung von Backend-Dienstressourcen können Sie Trafficrichtlinien so konfigurieren, dass das Load-Balancing innerhalb einer Instanzgruppe oder Netzwerk-Endpunktgruppe (NEG) optimiert wird. Diese Richtlinien werden erst wirksam, nachdem ein Backend-Dienst mithilfe der URL-Zuordnung ausgewählt wurde (wie zuvor beschrieben).
Mit Trafficrichtlinien können Sie:
- Den Load-Balancing-Algorithmus zwischen Instanzen innerhalb des Back-End-Dienstes steuern.
- Die Anzahl der Verbindungen zu einem vorgelagerten Dienst steuern.
- Die Bereinigung fehlerhafter Hosts über einen Backend-Dienst steuern.
Trafficrichtlinie (API field name ) |
Beschreibung |
---|---|
Load-Balancing-Richtlinie für den Ort (LocalityLbPolicy ) |
Bei einem Backend-Dienst oder -Bucket basiert die Trafficverteilung auf dem Load-Balancing-Modus und einer Load-Balancing-Richtlinie für den Ort. Der Balancing-Modus bestimmt den Anteil des Traffics, der an jedes Backend (Bucket, Instanzgruppe oder Informationen zu den unterstützten Balancing-Modi finden Sie unter Balancing-Modus. Informationen zu den unterstützten Load-Balancing-Richtlinienalgorithmen finden Sie unter |
Sitzungsaffinität (consistentHash ) |
Umfasst Cookie-basierte HTTP-Affinität, Header-basierte HTTP-Affinität, Client-IP-Adressen-Affinität und Cookie-Affinität. Die Sitzungsaffinität versucht, Anfragen von einem bestimmten Client an dasselbe Backend zu senden, solange das Backend intakt ist und Kapazität hat. Einstellungen für die Sitzungsaffinität werden nur erfüllt, wenn die Load-Balancing-Richtlinie für den Ort auf Weitere Informationen zur Sitzungsaffinität finden Sie unter |
Ausreißererkennung (outlierDetection ) |
Eine Reihe von Richtlinien, die die Kriterien für das Entfernen fehlerhafter Backend-VMs oder Endpunkte in NEGs festlegen sowie die Kriterien dafür, wann ein Backend oder Endpunkt als stabil genug gilt, um wieder Traffic zu empfangen. Weitere Informationen zur Ausreißererkennung finden Sie unter |
Nächste Schritte
- Informationen zum Konfigurieren der Trafficverwaltung für globale externe Application Load Balancer finden Sie unter Trafficverwaltung für globale externe Anwendungs-Load-Balancer einrichten.