Erweiterte Trafficverwaltung konfigurieren

Dieses Dokument enthält Informationen zur Konfiguration der erweiterten Trafficverwaltung für Ihre Traffic Director-Bereitstellung.

Bevor Sie die erweiterte Trafficverwaltung konfigurieren

Folgen Sie der Anleitung unter Traffic Director einrichten und konfigurieren Sie Traffic Director sowie alle erforderlichen VM-Hosts oder GKE-Cluster. Erstellen Sie die erforderlichen Google Cloud-Ressourcen.

Trafficaufteilung einrichten

Bei dieser Anleitung wird Folgendes vorausgesetzt:

  • Ihre Traffic Director-Bereitstellung verfügt über eine URL-Zuordnung namens review-url-map.
  • Die URL-Zuordnung sendet den gesamten Traffic an einen Back-End-Dienst namens review1, der auch als Standard-Back-End-Dienst dient.
  • Sie möchten 5% des Traffics an eine neue Version eines Dienstes weiterleiten. Dieser Dienst wird auf einer Back-End-VM oder einem Endpunkt in einer NEG ausgeführt, die mit dem Back-End-Dienst review2 verknüpft ist.
  • Es werden keine Hostregeln oder Pfad-Matcher verwendet.

So richten Sie die Traffic-Aufteilung ein:

Console

  1. Rufen Sie in der Cloud Console die Seite "Traffic Director" auf.

    Zur Seite "Traffic Director"

  2. Klicken Sie auf Routingregelzuordnungen erstellen.

  3. Geben Sie den Namen der Routingregelzuordnung ein.

  4. Wählen Sie im Menü Protokoll die Option HTTP aus.

  5. Wählen Sie eine vorhandene Weiterleitungsregel aus.

  6. Wählen Sie unter Routingregeln die Option Erweiterte Host-, Pfad- und Routeregel aus.

  7. Wählen Sie unter Path Matcher die Option Traffic zwischen Diensten aufteilen aus.

  8. Klicken Sie auf die Schaltfläche YAML-Ansicht.

  9. Fügen Sie dem Feld PathMatcher die folgenden Einstellungen hinzu:

        - defaultService: global/backendServices/review1
          name: matcher1
          routeRules:
          - priority: 2
            matchRules:
            - prefixMatch: ''
            routeAction:
             weightedBackendServices:
             - backendService: global/backendServices/review1
               weight: 95
             - backendService: global/backendServices/review2
               weight: 5
    
  10. Klicken Sie auf Fertig.

  11. Klicken Sie auf Erstellen.

gcloud

  1. Verwenden Sie den Befehl gcloud export, um die Konfiguration der URL-Zuordnung abzurufen:

    gcloud compute url-maps export review-url-map \
        --destination=review-url-map-config.yaml
    
  2. Fügen Sie der Datei review-url-map-config.yaml den folgenden Abschnitt hinzu:

        hostRules:
        - description: ''
         hosts:
          - '*'
        pathMatcher: matcher1
        pathMatchers:
        - defaultService: global/backendServices/review1
          name: matcher1
          routeRules:
          - priority: 2
            matchRules:
            - prefixMatch: ''
            routeAction:
             weightedBackendServices:
             - backendService: global/backendServices/review1
               weight: 95
             - backendService: global/backendServices/review2
               weight: 5
    
  3. Aktualisieren Sie die URL-Zuordnung:

     gcloud compute url-maps import review-url-map \
         --source=review-url-map-config.yaml
    

Wenn Sie mit der neuen Version zufrieden sind, können Sie die Gewichtung der beiden Dienste schrittweise anpassen und schließlich den gesamten Traffic an review2 senden.

Schutzschaltung einrichten

Mit einer Schutzschaltung können Sie Fehlerschwellenwerte festlegen, damit Clientanfragen Ihre Back-Ends nicht überlasten. Wenn Anfragen ein von Ihnen festgelegtes Limit erreichen, lässt der Client keine neuen Verbindungen mehr zu und sendet keine weiteren Anfragen, damit sich Ihre Back-Ends erholen können.

Auf diese Weise verhindern Schutzschaltungen Fehlerkaskaden, indem Fehler an den Client zurückgegeben werden, anstatt ein Back-End zu überlasten. Dadurch kann Traffic bereitgestellt werden, während Zeit zum Lösen von Überlastungsproblemen geschaffen wird, z. B. durch die Handhabung von Zugriffsspitzen durch Erhöhen der Kapazität durch Autoscaling.

Im folgenden Beispiel werden die Schutzschalter so festgelegt:

  • Maximale Anfragen pro Verbindung: 100
  • Maximale Anzahl an Verbindungen: 1.000
  • Maximale ausstehende Anfragen: 200
  • Maximum für Anfragen: 1.000
  • Maximale Wiederholungsversuche: 3

So richten Sie eine Schutzschaltung ein:

Console

  1. Rufen Sie in der Cloud Console die Seite "Traffic Director" auf.

    Zur Seite "Traffic Director"

  2. Klicken Sie auf den Namen des Back-End-Dienstes, den Sie aktualisieren möchten.
  3. Klicken Sie auf Bearbeiten.
  4. Klicken Sie auf Erweiterte Konfigurationen.
  5. Wählen Sie unter Schutzschalter das Kästchen Aktivieren aus.
  6. Klicken Sie auf Bearbeiten .
  7. Geben Sie unter Maximale Anfragen pro Verbindung den Wert 100 ein.
  8. Geben Sie unter Max. Verbindungen den Wert 1000 ein.
  9. Geben Sie unter Max. ausstehende Anfragen den Wert 200 ein.
  10. Geben Sie unter Max. Anfragen den Wert 1000 ein.
  11. Geben Sie unter Max. Neuversuche den Wert 3 ein.
  12. Klicken Sie auf Speichern.
  13. Klicken Sie auf Speichern.

gcloud

  1. Verwenden Sie den Befehl gcloud export, um die Konfiguration des Back-End-Dienstes abzurufen, wobei BACKEND_SERVICE_NAME der Name des Back-End-Dienstes ist.

    gcloud compute backend-services export BACKEND_SERVICE_NAME \
        --destination=BACKEND_SERVICE_NAME-config.yaml --global
    
  2. Aktualisieren Sie die Datei BACKEND_SERVICE_NAME.yaml so:

     affinityCookieTtlSec: 0
     backends:
     - balancingMode: UTILIZATION
       capacityScaler: 1.0
        group:https://www.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/zones/<var>ZONE</var>/instanceGroups/<var>INSTANCE_GROUP_NAME</var>
       maxUtilization: 0.8
     circuitBreakers:
       maxConnections: 1000
       maxPendingRequests: 200
       maxRequests: 1000
       maxRequestsPerConnection: 100
       maxRetries: 3
     connectionDraining:
       drainingTimeoutSec: 300
     healthChecks:
       - https://www.googleapis.com/compute/v1/projects/<var>PROJECT_ID</var>/global/healthChecks/<var>HEALTH_CHECK_NAME</var>
     loadBalancingScheme: INTERNAL_SELF_MANAGED
     localityLbPolicy: ROUND_ROBIN
     name: <var>BACKEND_SERVICE_NAME</var>
     port: 80
     portName: http
     protocol: HTTP
     sessionAffinity: NONE
     timeoutSec: 30
    ```
    
  3. Aktualisieren Sie die Back-End-Dienstkonfigurationsdatei:

    gcloud compute backend-services import BACKEND_SERVICE_NAME \
       --source=BACKEND_SERVICE_NAME-config.yaml --global
    

Das folgende Beispiel für einen Schutzschalter bezieht sich auf einen Anwendungsfall, bei dem ein Einkaufswagendienst eine Instanzgruppe als Back-End nutzt. Die Einstellungen des Schutzschalters geben die Limits für Folgendes an:

  • Maximale Anzahl paralleler Anfragen pro Verbindung
  • Maximale Anzahl paralleler Verbindungen
  • Maximale Anzahl ausstehender Anfragen
  • Maximale Anzahl paralleler Anfragen
  • Maximale Anzahl paralleler Neuversuche

Führen Sie die folgenden Schritte aus, um das Beispiel für den Schutzschalter einzurichten:

Console

  1. Rufen Sie in der Cloud Console die Seite "Traffic Director" auf.

    Zur Seite "Traffic Director"

  2. Klicken Sie auf den Namen des Back-End-Dienstes, den Sie aktualisieren möchten.
  3. Klicken Sie auf Bearbeiten.
  4. Klicken Sie auf Erweiterte Konfigurationen.
  5. Wählen Sie unter Schutzschalter das Kästchen Aktivieren aus.
  6. Klicken Sie auf Bearbeiten .
  7. Geben Sie unter Maximale Anfragen pro Verbindung den Wert 100 ein.
  8. Geben Sie unter Max. Verbindungen den Wert 1000 ein.
  9. Geben Sie unter Max. ausstehende Anfragen den Wert 200 ein.
  10. Geben Sie unter Max. Anfragen den Wert 20000 ein.
  11. Geben Sie unter Max. Neuversuche den Wert 3 ein.
  12. Klicken Sie auf Speichern.
  13. Klicken Sie auf Speichern.

gcloud

  1. Verwenden Sie den Befehl gcloud export, um die Konfiguration des Back-End-Dienstes zu exportieren, wobei BACKEND_SERVICE_NAME der Name des Back-End-Dienstes ist.

    gcloud compute backend-services export BACKEND_SERVICE_NAME \
        --destination=BACKEND_SERVICE_NAME-config.yaml --global
    
  2. Aktualisieren Sie die Datei BACKEND_SERVICE_NAME.yaml so:

    name: shopping-cart-service
    loadBalancingScheme: INTERNAL_SELF_MANAGED
    backends:
    - balancingMode: UTILIZATION
      capacityScaler: 1.0
      group: $[INSTANCE_GROUP_URL]
    healthChecks:
    - $[HEALTH_CHECK_URL]
    port: 80
    portName: http
    protocol: HTTP
    circuitBreakers:
    maxRequestsPerConnection: 100,
    maxConnections: 1000,
    maxPendingRequests: 200,
    maxRequests: 20000,
    maxRetries: 3
    
  3. Importieren Sie die Konfigurationsdatei für den Back-End-Dienst:

    gcloud compute backend-services import BACKEND_SERVICE_NAME \
       --source=BACKEND_SERVICE_NAME-config.yaml --global
    

Mit der erweiterten Trafficverwaltung können Sie die Sitzungsaffinität basierend auf einem bereitgestellten Cookie konfigurieren. Um eine auf HTTP_COOKIE basierende Sitzungsaffinität zu konfigurieren, folgen Sie dieser Anleitung.

So richten Sie die Sitzungsaffinität mit HTTP_COOKIE ein:

Console

  1. Rufen Sie in der Cloud Console die Seite "Traffic Director" auf.

    Zur Seite "Traffic Director"

  2. Klicken Sie auf den Namen des Back-End-Dienstes, den Sie aktualisieren möchten.

  3. Klicken Sie auf Bearbeiten .

  4. Klicken Sie auf Erweiterte Konfigurationen.

  5. Wählen Sie unter Sitzungsaffinität die Option HTTP-Cookie aus.

  6. Wählen Sie unter Richtlinie für das Load-Balancing die Option Ring-Hash aus.

  7. Geben Sie im Feld HTTP-Cookie-Name den Wert http_cookie ein.

  8. Geben Sie im Feld HTTP Cookie-Pfad (HTTP-Cookie-Pfad) /cookie_path ein.

  9. Geben Sie im Feld HTTP-Cookie-Name den Wert 100 ein.

  10. Geben Sie im Feld Mindestgröße für Klingelton 10000 ein.

  11. Klicken Sie auf SPEICHERN.

gcloud

  1. Verwenden Sie den Befehl gcloud export, um die Konfiguration des Back-End-Dienstes zu exportieren, wobei BACKEND_SERVICE_NAME der Name des Back-End-Dienstes ist.

    gcloud compute backend-services export BACKEND_SERVICE_NAME \
        --destination=BACKEND_SERVICE_NAME-config.yaml --global
    
  2. Aktualisieren Sie die Datei YAML so:

    sessionAffinity: 'HTTP_COOKIE'
    localityLbPolicy: 'RING_HASH'
    consistentHash:
    httpCookie:
      name: 'http_cookie'
      path: '/cookie_path'
      ttl:
        seconds: 100
        nanos: 30
    minimumRingSize: 10000
    
  3. Importieren Sie die Konfigurationsdatei für den Back-End-Dienst:

    gcloud compute backend-services import BACKEND_SERVICE_NAME \
       --source=BACKEND_SERVICE_NAME-config.yaml --global
    

Ausreißererkennung einrichten

Die Ausreißererkennung steuert die Bereinigung von fehlerhaften Hosts aus dem Load-Balancing-Pool. Dazu nutzt Traffic Director eine Reihe von Richtlinien, die die Kriterien für das Entfernen fehlerhafter Back-End-VMs oder Endpunkte in NEGs festlegen sowie die Kriterien dafür, wann ein Back-End oder Endpunkt als stabil genug eingestuft wird, um wieder Traffic zu empfangen.

Im folgenden Beispiel hat der Back-End-Dienst eine Instanzgruppe als Back-End. Die Ausreißererkennung gibt an, dass die Ausreißererkennungsanalyse jede Sekunde ausgeführt wird. Wenn ein Endpunkt fünf aufeinanderfolgende 5xx-Fehler zurückgibt, wird er zum ersten Mal 30 Sekunden lang aus der Load-Balancing-Anwendung ausgeschlossen. Die tatsächliche Ausschlusszeit für denselben Endpunkt beträgt 30 Sekunden. Dies entspricht der Häufigkeit, mit der er ausgeschlossen wird.

Die Ausreißererkennung wird für die Back-End-Dienstressource eingerichtet.

Console

  1. Rufen Sie in der Cloud Console die Seite "Traffic Director" auf.

    Zur Seite "Traffic Director"

  2. Klicken Sie auf den Namen eines Dienstes.

  3. Klicken Sie auf Bearbeiten .

  4. Klicken Sie auf Erweiterte Konfigurationen.

  5. Wählen Sie das Kästchen Ausreißererkennung aus.

  6. Klicken Sie auf Bearbeiten .

  7. Legen Sie unter Aufeinanderfolgende Fehler den Wert 5 fest.

  8. Legen Sie unter Intervall 1000 Millisekunden fest.

  9. Legen Sie unter Basisausschlusszeit 30000 Millisekunden fest.

  10. Klicken Sie auf Speichern.

  11. Klicken Sie auf Speichern.

gcloud

  1. Verwenden Sie den Befehl gcloud export, um die Konfiguration des Back-End-Dienstes zu exportieren, wobei BACKEND_SERVICE_NAME der Name des Back-End-Dienstes ist.

    gcloud compute backend-services export BACKEND_SERVICE_NAME \
      --destination=BACKEND_SERVICE_NAME-config.yaml --global
    
  2. Aktualisieren Sie die Datei YAML wie nachfolgend gezeigt und ersetzen Sie dabei your_service_name durch den Namen des Back-End-Dienstes:

    name: your_service_name
    loadBalancingScheme: INTERNAL_SELF_MANAGED
    backends:
    - balancingMode: UTILIZATION
      capacityScaler: 1.0
      group: $[INSTANCE_GROUP_URL]
    healthChecks:
    - $[HEALTH_CHECK_URL]
    port: 80
    portName: http
    protocol: HTTP
    outlierDetection:
      consecutiveErrors: 5,
      interval:
          seconds: 1,
          nanos: 0
      baseEjectionTime:
          seconds: 30,
          nanos: 0
      ````
    
  3. Importieren Sie die Konfigurationsdatei für den Back-End-Dienst:

    gcloud compute backend-services import BACKEND_SERVICE_NAME \
      --source=BACKEND_SERVICE_NAME-config.yaml --global
    

Ort-Load-Balancing-Richtlinie festlegen

Verwenden Sie die Ort-Load-Balancing-Richtlinie, um einen Load-Balancing-Algorithmus anhand der Ortsgewichtung und der Priorität auszuwählen, die von Traffic Director bereitgestellt werden. Beispielsweise können Sie gewichtetes Round Robin an fehlerfreien Endpunkten oder konsistentes Hashing ausführen.

Im folgenden Beispiel hat der Back-End-Dienst eine einzige Instanzgruppe als Back-End. Die Ort-Load-Balancing-Richtlinie ist auf RING_HASH festgelegt.

Console

  1. Rufen Sie in der Cloud Console die Seite "Traffic Director" auf.

    Zur Seite "Traffic Director"

  2. Klicken Sie auf den Namen eines Dienstes.

  3. Klicken Sie auf Bearbeiten .

  4. Klicken Sie auf Erweiterte Konfigurationen.

  5. Wählen Sie unter Trafficrichtlinie im Menü Ort-Load-Balancing die Option Ring-Hash aus.

  6. Klicken Sie auf Speichern.

gcloud

  1. Verwenden Sie den Befehl gcloud export, um die Konfiguration des Back-End-Dienstes zu exportieren, wobei BACKEND_SERVICE_NAME der Name des Back-End-Dienstes ist.

    gcloud compute backend-services export BACKEND_SERVICE_NAME \
      --destination=BACKEND_SERVICE_NAME-config.yaml --global
    
  2. Aktualisieren Sie die Datei BACKEND_SERVICE_NAME.yaml so:

    name: shopping-cart-service
    loadBalancingScheme: INTERNAL_SELF_MANAGED
    backends:
    - balancingMode: UTILIZATION
      capacityScaler: 1.0
      group: $[INSTANCE_GROUP_URL]
    healthChecks:
    - $[HEALTH_CHECK_URL]
    port: 80
    portName: http
    protocol: HTTP
    localityLbPolicy: RING_HASH
    ````
    
  3. Importieren Sie die Konfigurationsdatei für den Back-End-Dienst:

    gcloud compute backend-services import BACKEND_SERVICE_NAME \
      --source=BACKEND_SERVICE_NAME-config.yaml --global
    

Weitere Informationen zur Funktionsweise der Ort-Load-Balancing-Richtlinie finden Sie in der Dokumentation zur Back-End-Dienstressource.

Konfigurationsfilter basierend auf der Übereinstimmung MetadataFilter erstellen

MetadataFilters sind mit Weiterleitungsregeln und HttpRouteRuleMatch aktiviert. Verwenden Sie diese Funktion, um eine bestimmte Weiterleitungs- oder Routenregel so zu steuern, dass die Steuerungsebene die Weiterleitungs- oder Weiterleitungsregel nur an Proxys sendet, deren Knotenmetadaten mit der Metadatenfiltereinstellung übereinstimmen. Wenn Sie keinen MetadataFilters angeben, wird die Regel an alle Envoy-Proxys gesendet.

Diese Funktion erleichtert die Durchführung einer gestaffelten Bereitstellung einer Konfiguration. Erstellen Sie beispielsweise eine Weiterleitungsregel mit dem Namen forwarding-rule1, die nur an Envoys übertragen werden soll, deren Knotenmetadaten "app:review" und "version: canary" enthalten.

Führen Sie die folgenden Schritte aus, um der Weiterleitungsregel MetadataFilters hinzuzufügen.

So fügen Sie MetadataFilter zu einer Weiterleitungsregel hinzu:

gcloud

  1. Verwenden Sie zum Abrufen der Konfiguration der Weiterleitungsregel den Befehl gcloud export.

    gcloud compute forwarding-rules export forwarding-rule1 \
        --destination=forwarding-rule1-config.yaml --global
    
  2. Aktualisieren Sie die Datei forwarding-rule1-config.yaml:

    metadataFilters:
    - filterMatchCriteria: 'MATCH_ALL'
      filterLabels:
      - name: 'app'
        value: 'review'
      - name: 'version'
        value: 'canary'
    
  3. Verwenden Sie zum Aktualisieren der Datei forwarding-rule1-config.yaml den Befehl gcloud import.

    gcloud compute forwarding-rules import forwarding-rule1 \
        --source=forwarding-rule1-config.yaml --global
    
  4. Folgen Sie dieser Anleitung, um Knotenmetadaten zu Envoy hinzuzufügen, bevor Sie Envoy starten. Beachten Sie, dass nur Stringwerte unterstützt werden.

    a. Fügen Sie für eine VM-basierte Bereitstellung in "bootstrap_template.yaml" im Metadatenbereich Folgendes hinzu:

        app: 'review'
        version: 'canary'
    

    b. Fügen Sie für Google Kubernetes Engine- oder Kubernetes-basierte Bereitstellung in der Datei "trafficdirector_istio_sidecar.yaml" im Env-Abschnitt Folgendes hinzu:

        - name: ISTIO_META_app
          value: 'review'
        - name: ISTIO_META_version
          value: 'canary'
    

Beispiele für die Metadatenfilterung

Verwenden Sie die folgende Anleitung für ein Szenario, in dem sich mehrere Projekte im selben freigegebenen VPC-Netzwerk befinden und die Traffic Director-Ressourcen jedes Dienstprojekts für Proxys im selben Projekt sichtbar sein sollen. Dieses Beispiel entspricht dem ersten Anwendungsfall in der Ressource für Weiterleitungsregeln. Der zweite Anwendungsfall ist ähnlich konfiguriert, verwendet jedoch andere Metadaten-Schlüssel-Wert-Paare.

So richten Sie die freigegebene VPC ein:

  • Name des Hostprojekts: vpc-host-project
  • Dienstprojekte: project1, project2
  • Back-End-Dienste mit Back-End-Instanzen oder Endpunkten, die einen xDS-kompatiblen Proxy in project1 und project2 ausführen

So konfigurieren Sie Traffic Director zur Isolierung von project1:

gcloud

  1. Erstellen Sie alle Weiterleitungsregeln in project1 mit dem folgenden Metadatenfilter:

        metadataFilters:
        - filterMatchCriteria: 'MATCH_ALL'
          filterLabels
          - name: 'project_name'
            value: `project1
          - name: 'version'
            value: 'production'
    
  2. Wenn Sie die für Instanzen oder Endpunkte in project1 bereitgestellten Proxys konfigurieren, fügen Sie die folgenden Metadaten in den Knotenmetadatenbereich der Bootstrap-Datei ein:

       project_name: 'project1'
       version: 'production'
    
  3. Prüfen Sie, ob die Proxys, die bereits in project2 bereitgestellt wurden, die im ersten Schritt erstellte Weiterleitungsregel nicht erhalten haben. Versuchen Sie dazu, von einem System mit einem Proxy in project2 auf Dienste in project1 zuzugreifen. Informationen zum Prüfen, ob eine Traffic Director-Konfiguration ordnungsgemäß funktioniert, finden Sie unter Konfiguration prüfen.

Das folgende Beispiel entspricht dem dritten Anwendungsfall in der Ressource für Weiterleitungsregeln.

So testen Sie eine neue Konfiguration für einen Teil der Proxys, bevor Sie sie für alle Proxys verfügbar machen:

gcloud

  1. Starten Sie die Proxys, die Sie zum Testen verwenden, mit den folgenden Knotenmetadaten. Fügen Sie diese Knotenmetadaten nicht für Proxys hinzu, die Sie nicht zum Testen verwenden.

     version: 'test'
    
  2. Fügen Sie für jede neue Weiterleitungsregel, die Sie testen möchten, den folgenden Metadatenfilter ein:

     metadataFilters:
     - filterMatchCriteria: 'MATCH_ALL'
       filterLabels:
       - name: 'version'
         value: 'test'
    
  3. Testen Sie die neue Konfiguration, indem Sie Traffic an die Testproxys senden und die erforderlichen Änderungen vornehmen. Wenn die neue Konfiguration ordnungsgemäß funktioniert, erhalten nur die Proxys, die Sie testen, die neue Konfiguration. Die verbleibenden Proxys erhalten die neue Konfiguration nicht und können sie nicht verwenden.

  4. Wenn Sie sicher sind, dass die neue Konfiguration ordnungsgemäß funktioniert, entfernen Sie den zugehörigen Metadatenfilter. Dadurch können alle Proxys die neue Konfiguration erhalten.

Fehlerbehebung

Gehen Sie nach den hier beschriebenen Informationen zur Fehlerbehebung vor, wenn der Traffic nicht gemäß den von Ihnen konfigurierten Routingregeln und Trafficrichtlinien weitergeleitet wird.

Symptome:

  • Vermehrter Traffic an Dienste in Regeln über der betreffenden Regel
  • Unerwartet vermehrte 4xx- und 5xx-HTTP-Antworten für eine bestimmte Routingregel

Lösung: Prüfen Sie die jeder Regel zugewiesene Priorität, da Routenregeln in der Reihenfolge ihrer Priorität interpretiert werden.

Achten Sie beim Definieren von Routingregeln darauf, dass Regeln mit höherer Priorität (d. h. Nummern mit niedrigerer Priorität) nicht versehentlich Traffic weiterleiten, der andernfalls von einer nachfolgenden Routingregel weitergeleitet worden wäre. Dazu ein Beispiel:

  • Erste Routingregel

    • Routingregel stimmt überein mit pathPrefix = '/shopping/';
    • Weiterleitungsaktion: Traffic an den Back-End-Dienst service-1 senden
    • Regelpriorität: 4
  • Zweite Routingregel

    • Routingregel stimmt überein mit regexMatch = '/shopping/cart/ordering/.*';
    • Weiterleitungsaktion: Traffic an den Back-End-Dienst service-2 senden
    • Regelpriorität: 8

In diesem Fall wird eine Anfrage mit dem Pfad '/shopping/cart/ordering/cart.html an service-1 weitergeleitet. Auch wenn die zweite Regel zutreffend wäre, wird sie ignoriert, da die erste Regel Priorität hatte.

Beschränkungen

  • Wenn der Wert von BackendService.sessionAffinity nicht NONE lautet und BackendService.localityLbPolicy auf eine andere Load-Balancing-Richtlinie als MAGLEV oder RING_HASH festgelegt ist, werden die Einstellungen für die Sitzungsaffinität nicht wirksam.
  • UrlMap.headerAction, UrlMap.defaultRouteAction und UrlMap.defaultUrlRedirect funktionieren derzeit nicht wie beabsichtigt. Sie müssen UrlMap.defaultService für die Verarbeitung von Traffic angeben, der mit keinem der Hosts in UrlMap.hostRules[] in diesem UrlMap übereinstimmt. Ebenso funktionieren UrlMap.pathMatchers[].headerAction, UrlMap.pathMatchers[].defaultRouteAction und UrlMap.pathMatchers[].defaultUrlRedirect derzeit nicht. Sie müssen UrlMap.pathMatchers[].defaultService für die Verarbeitung von Traffic angeben, der mit keiner der routeRules für diesen pathMatcher übereinstimmt.
  • Der Befehl gcloud import löscht nicht die Felder der obersten Ebene der Ressource, also z. B. den Back-End-Dienst und die URL-Zuordnung. Wenn beispielsweise ein Back-End-Dienst mit Einstellungen für circuitBreakers erstellt wird, können diese Einstellungen mit einem nachfolgenden gcloud import-Befehl aktualisiert werden. Diese Einstellungen können jedoch nicht aus dem Back-End-Dienst gelöscht werden. Die Ressource selbst kann ohne die Einstellungen für circuitBreakers gelöscht und neu erstellt werden.
  • Der Import für Weiterleitungsregeln funktioniert nicht ordnungsgemäß. Eine exportierte YAML-Datei kann nicht noch einmal importiert werden. Die Problemumgehung besteht darin, die Konfigurationsdatei zu exportieren, Änderungen vorzunehmen, die Weiterleitungsregel zu löschen und die Konfigurationsdatei zu importieren.