Mit Service Extensions können Sie Erweiterungen verwenden, um unterstützte Application Load Balancer anzuweisen, Plug-ins zu verwenden oder Callouts vom Load-Balancing-Datenpfad zu senden, um Callout-Backend-Dienste oder Google-Dienste aufzurufen. Auf dieser Seite erhalten Sie einen Überblick über Cloud Load Balancing-Erweiterungen.
Sie können Application Load Balancer so konfigurieren, dass sie die folgenden Arten von Erweiterungen verwenden:
Mit Edge-Erweiterungen können Sie Anfrageheader bearbeiten, um die Auswahl des Backend-Dienstes und die Inhalte zu beeinflussen, die Cloud CDN aus dem Cache bereitstellt. Diese Erweiterungen werden so konfiguriert, dass sie früh im Lebenszyklus der Anfragenverarbeitung ausgeführt werden, um die Caching- und Routing-Entscheidungen am Edge zu beeinflussen.
Mit Routenerweiterungen können Sie die Auswahl des Backend-Dienstes beeinflussen. Diese Erweiterungen werden so konfiguriert, dass sie früh im Lebenszyklus der Anfrageverarbeitung ausgeführt werden.
Mit Autorisierungserweiterungen können Sie Autorisierungsanfragen an Ihre benutzerdefinierte Autorisierungs-Engine senden. Sie konfigurieren diese am Ende des Verarbeitungszyklus, kurz bevor der Load-Balancer Anfragen an Back-Ends sendet.
Traffic-Erweiterungen unterstützen zusätzliche benutzerdefinierte Sicherheitslogik und Funktionen zur Traffic-Verwaltung. Sie konfigurieren diese nach Autorisierungserweiterungen, aber bevor der Load Balancer Anfragen an Backends sendet oder Antworten von ihnen empfängt.
Unterstützte Application Load Balancer für nutzerverwaltete Erweiterungen
Service Extensions unterstützt nutzerverwaltete Erweiterungen für die folgenden Application Load Balancer:
| Application Load Balancer | Erweiterungen | |||||||
|---|---|---|---|---|---|---|---|---|
| Edge | Route | Autorisierung | Traffic | |||||
| Plug-ins | Plug-ins | Aufrufe | Aufrufe | Plug-ins | Aufrufe | |||
| Globaler externer Application Load Balancer | ✓ | ✓ | ✓ | ✓ | ||||
| Regionaler externer Application Load Balancer | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Regionaler interner Application Load Balancer | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Regionsübergreifender interner Application Load Balancer | ✓ | ✓ | ✓ | ✓ | ✓ | |||
Erweiterungspunkte im Load-Balancing-Datenpfad
Service Extensions unterstützt Erweiterungen in verschiedenen Phasen des Load-Balancing-Datenpfads.
Abbildung 1 zeigt, wie Service Extensions Erweiterungen in den Phasen für Anwendungssicherheit und Traffic-Verwaltung für globale externe Application Load Balancer unterstützt.
Abbildung 2 zeigt, wie Service Extensions Erweiterungen in den Phasen „Routing“, „Anwendungssicherheit“ und „Traffic-Verwaltung“ für die folgenden Arten von Load Balancern unterstützt: regionaler externer Application Load Balancer, regionaler interner Application Load Balancer und regionenübergreifender interner Application Load Balancer.
Funktionsweise von Edge-Erweiterungen
Edge-Erweiterungen werden zuerst im Anfrageverarbeitungspfad ausgeführt. Mit Anfrageheadern können Sie die Auswahl des Backend-Dienstes und die Inhalte beeinflussen, die Cloud CDN aus dem Cache bereitstellt.
Nachdem ein Load Balancer eine Edge-Erweiterung aufgerufen hat, führt er die folgenden Schritte aus:
- Wählt den Backend-Dienst durch Auswerten der URL-Zuordnung aus
- Wendet Google Cloud Armor-Richtlinien-Sicherheitsrichtlinien an
- Führt eine Cache-Suche durch und stellt Inhalte aus dem Cache bereit, wenn ein Cache-Treffer vorliegt.
- Wendet Cloud Armor-Richtlinien für den ausgewählten Backend-Dienst an
- CORS-Richtlinien anwenden
- Wendet die Richtlinie für die zustandsorientierte Sitzungsaffinität an
- Wendet Identity-Aware Proxy (IAP)-Richtlinien für den ausgewählten Backend-Dienst an.
- Ruft Autorisierungserweiterungen auf, sofern diese im Verarbeitungspfad des ausgewählten Backend-Dienstes konfiguriert sind.
- Führt Fault Injection durch
- Erweiterungen für Anruftraffic, falls vorhanden
- Führt URL-Umschreibungen durch
- Führt die Header-Manipulation gemäß der URL-Zuordnung aus und fügt benutzerdefinierte Variablen für Anfrage-Header hinzu.
- Führt Weiterleitungen oder Routing zum ausgewählten Backend-Dienst aus und wendet dabei Zeitüberschreitungen und Richtlinien für Wiederholungsversuche in der URL-Zuordnung und den Load-Balancing-Einstellungen für den Backend-Dienst an.
- Führt die Spiegelung von Anfragen durch
So funktionieren Routenerweiterungen
Routerweiterungen werden zuerst im Anfrageverarbeitungspfad ausgeführt, wenn der Load-Balancer Anfrageheader empfängt und bevor er die URL-Zuordnung auswertet.
Nachdem ein Load-Balancer eine Routenerweiterung für eine Anfrage aufgerufen hat, führt er die folgenden Schritte aus:
- Wählt den Backend-Dienst durch Auswerten der URL-Zuordnung aus
- Wendet Cloud Armor-Richtlinien für den ausgewählten Backend-Dienst an
- Wendet IAP-Richtlinien für den ausgewählten Backend-Dienst an
- Führt Fault Injection durch
- Führt Transformationen von Anfrageheadern durch und löst benutzerdefinierte Variablen für Anfrageheader auf.
- Ruft Traffic-Erweiterungen auf, sofern sie im Verarbeitungspfad des ausgewählten Backend-Dienstes vorhanden sind.
- Führt URL-Umschreibungen durch
- Führt Weiterleitungen oder das Routing zum ausgewählten Backend-Dienst aus und wendet Zeitüberschreitungen und Richtlinien für Wiederholungsversuche in der URL-Zuordnung und andere Load-Balancing-Einstellungen für den Backend-Dienst an.
Funktionsweise von Autorisierungserweiterungen
Sie können Autorisierungsrichtlinien mit Autorisierungserweiterungen konfigurieren, um Autorisierungsentscheidungen an benutzerdefinierte Autorisierungs-Engines zu delegieren. Weitere Informationen zu Autorisierungsrichtlinien finden Sie unter Autorisierungsrichtlinien – Übersicht.
Autorisierungserweiterungen werden im Anfragepfad aufgerufen, nachdem Routenerweiterungen aufgerufen und ein Backend für die Anfrage ausgewählt wurde. Diese Erweiterungen können die Auswahl des Backend-Dienstes nicht beeinflussen.
In der Vorschau werden Autorisierungsrichtlinien für regionale externe Application Load Balancer und regionale interne Application Load Balancer nach Routenerweiterungen aufgerufen. Beachten Sie beim Entwerfen von Autorisierungserweiterungen die folgenden Punkte:
Erweiterungen, die von Autorisierungsrichtlinien des Profiltyps
REQUEST_AUTHZaufgerufen werden, empfangen und werten nur HTTP-Anfrageheader mit dem Protokollext_procoderext_authzaus.Erweiterungen, die durch Autorisierungsrichtlinien des Profiltyps
CONTENT_AUTHZaufgerufen werden, erhalten Header, Text und Trailer von Anfragen und Antworten. Diese müssen imFULL_DUPLEX_STREAMED-Body-Verarbeitungsmodus desext_proc-Protokolls konfiguriert werden.
Im Datenpfad werden Autorisierungserweiterungen, die auf Autorisierungsrichtlinien für Anfragen basieren, vor denen ausgeführt, die auf Autorisierungsrichtlinien für Inhalte basieren.
Funktionsweise von Verkehrs-Erweiterungen
Load-Balancer führen Traffic-Erweiterungen zuletzt im Anfrageverarbeitungspfad und zuerst im Antwortverarbeitungspfad aus.
Mit diesen Erweiterungen können Sie die Header und Nutzlasten von Anfragen und Antworten ändern, ohne die Auswahl des Backend-Dienstes zu beeinträchtigen. Sie können Traffic-Erweiterungen auch für benutzerdefiniertes Logging verwenden, indem Sie die Informationen, das Format und den externen Anbieter angeben, die protokolliert werden sollen.
Bevor ein Load-Balancer eine Traffic-Erweiterung auf dem Anfragepfad für eine Anfrage aufruft, führt er die folgenden Schritte aus:
- Führt Fault Injection durch
- Wählt einen Backend-Dienst für die Anfrage aus
- Wendet Cloud Armor-Richtlinien für den ausgewählten Backend-Dienst an
- Wendet IAP-Richtlinien für den ausgewählten Backend-Dienst an
- Wendet Cloud CDN-Caching-Richtlinien für den ausgewählten Backend-Dienst im Fall von globalen externen Application Load Balancern an.
Nachdem ein Load Balancer eine Traffic-Erweiterung auf dem Anfragepfad für eine Anfrage aufgerufen hat, führt er folgende Schritte aus:
- Führt URL-Umschreibungen durch
- Führt die Header-Manipulation gemäß der URL-Zuordnung aus und fügt benutzerdefinierte Variablen für Anfrage-Header hinzu.
- Führt Weiterleitungen oder Routing zum ausgewählten Backend-Dienst aus und wendet dabei Zeitüberschreitungen und Richtlinien für Wiederholungsversuche in der URL-Zuordnung und den Load-Balancing-Einstellungen für den Backend-Dienst an.
- Führt die Spiegelung von Anfragen durch
Nachdem ein Load-Balancer eine Traffic-Erweiterung auf dem Antwortpfad für eine Anfrage aufgerufen hat, führt er die folgenden Schritte aus:
- Führt Transformationen von Antwortheadern durch und löst benutzerdefinierte Antwortheadervariablen auf.
- Logging mit Cloud Logging
- Führt Cloud CDN-Caching bei globalen externen Application Load Balancern aus
Benutzerdefinierte Header
Im Traffic-Pfad werden Edge- und Routenerweiterungen an Erweiterungspunkten ausgeführt, bevor der Load-Balancer benutzerdefinierte Header hinzufügt. Daher enthalten die Header, die die Edge- und Routenerweiterungen empfangen, nicht die benutzerdefinierten Header, die der Load-Balancer hinzufügt.
Wenn Sie Informationen, die Sie normalerweise in benutzerdefinierte Header einfügen, für Edge- und Routenerweiterungen verfügbar machen möchten, sollten Sie stattdessen ein unterstütztes Attribut verwenden.
Einschränkungen von Erweiterungen
- Eine Weiterleitungsregel kann nur eine
LbEdgeExtension-Ressource, eineLbTrafficExtension-Ressource und eineLbRouteExtension-Ressource haben. - Für Callouts muss sich der Callout-Backend-Dienst im selben Projekt wie die Weiterleitungsregel befinden.
- Projektübergreifende Verweise zwischen Erweiterungen und Weiterleitungsregeln werden nicht unterstützt.