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 finden Sie eine Übersicht ü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 Anfrageverarbeitung ausgeführt werden, um die Caching- und Routingentscheidungen am Edge zu beeinflussen.
Mit Routenerweiterungen können Sie die Auswahl des Backend-Dienstes beeinflussen. Diese Erweiterungen sind 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 Back-Ends 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 | ✓ Vorschau | ✓ | ✓ | ✓ Vorschau | ✓ | |||
| Regionaler interner Application Load Balancer | ✓ Vorschau | ✓ | ✓ | ✓ Vorschau | ✓ | |||
| 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 für 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.
So funktionieren 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 zustandsorientierte Sitzungsaffinität an
- Wendet Identity-Aware Proxy (IAP)-Richtlinien auf den ausgewählten Back-End-Dienst an.
- Erweiterungen für die Autorisierung von Aufrufen, sofern im Verarbeitungspfad des ausgewählten Backend-Dienstes konfiguriert
- 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 das 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.
- Spiegelung von Anfragen
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 folgende 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 Anfrageheadertransformationen durch und löst benutzerdefinierte Anfrageheadervariablen 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 bewerten nur HTTP-Anfrageheader mit dem Protokollext_procoderext_authz.Erweiterungen, die durch Autorisierungsrichtlinien des Profiltyps
CONTENT_AUTHZaufgerufen werden, empfangen Header, Text und Trailer von Anfragen und Antworten. Diese müssen im Body-Verarbeitungsmodus desext_proc-Protokolls inFULL_DUPLEX_STREAMEDkonfiguriert 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, die Sie protokollieren möchten, das Format und den externen Anbieter angeben.
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 Back-End-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 die folgenden 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 das 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.
- Spiegelung von Anfragen
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 Antwortheadertransformationen 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 vor der Phase ausgeführt, in der 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.