Einschränkungen für proxyloses gRPC

In diesem Dokument werden Einschränkungen für Traffic Director mit proxylosen gRPC-Anwendungen beschrieben. Informationen zu Limits finden Sie unter Kontingente und Limits.

Allgemeine Beschränkungen

Zu den Einschränkungen von Traffic Director mit proxylosen gRPC-Anwendungen gehört Folgendes:

  • Sie können in der Google Cloud Console mit dem gRPC-Protokoll keine Backend-Dienste und Routingregelzuordnungen konfigurieren. Für diese Ressourcen ist die Google Cloud Console schreibgeschützt.

  • Proxyloses gRPC unterstützt die Endpunkterkennung, Routing, Load-Balancing, Lastberichte und viele erweiterte Features zur Trafficverwaltung.

    • Die erforderliche gRPC-Version zur Unterstützung einiger Features der erweiterten Trafficverwaltung finden Sie unter Unterstützte gRPC-Versionen und -Sprachen.

    • Verwenden Sie für Ihre gRPC-Anwendungen, die nicht unterstützte erweiterte Features für die Trafficverwaltung benötigen, den DNS-Name-Resolver anstelle des xDS-Resolvers und stellen Sie sie mit Sidecar-Proxys bereit, die von Traffic Director unterstützt werden. Setzen Sie in Ihrem Ziel-gRPC-Proxy das Feld validateForProxyless auf FALSE, damit Sie Features konfigurieren können, die von gRPC noch nicht unterstützt werden, aber in Traffic Director durch die Verwendung von Sidecar-Proxys verfügbar sind.

  • Proxyloses gRPC unterstützt nur Richtlinien für das Load-Balancing von Round Robin und Ring-Hash. Andere Load-Balancing-Algorithmen werden nicht unterstützt.

    • Traffic Director stellt eine priorisierte gewichtete Liste von Orten – eine Instanzgruppe oder eine Netzwerk-Endpunktgruppe (NEG) – für den gRPC-Client bereit. Traffic Director berechnet diese Liste anhand der nächstgelegenen verfügbaren Zone, deren Kapazität und des Balancing-Modus des Backend-Dienstes.
    • Für eine bestimmte Anfrage wählt der gRPC-Client anhand von Priorität und Gewichtung eine oder mehrere Lokalitäten aus und führt ein Round-Robin- oder Ring-Hash-basiertes Load-Balancing für die Back-Ends innerhalb dieser Lokalitäten durch.
  • Der Failover von einer Zone (Ort) zu einem anderen Ort beginnt, wenn die aktuelle Zonenkapazität unter 50 % fällt. Sie können diesen Schwellenwert nicht konfigurieren.

  • In einigen Fällen können die Konfigurationsbefehle, die sich auf einen gRPC-Zielproxy und eine Weiterleitungsregel beziehen, die auf einen gRPC-Zielproxy verweist, bis zu eine Minute dauern.

  • Hybridkonnektivitäts-NEGs (NON_GCP_PRIVATE_IP_PORT-NEGs) werden mit proxylosen gRPC-Clients nicht unterstützt.

Einschränkungen für URL-Zuordnungen

Die folgenden URL-Zuordnungsfeatures für Trafficverwaltung werden bei proxylosen gRPC-Diensten unterstützt.

Im pathMatcher von hostRules unterstützte Features:

pathMatcher
  name
  description
  defaultService
  defaultRouteAction
     weightedBackendServices
       backendService
       weight
    retryPolicy
       retryConditions
       numRetries
    faultInjectionPolicy
    maxStreamDuration
  pathRules
    service
    routeAction
      weightedBackendServices
         backendService
         weight
      retryPolicy
         retryConditions
         numRetries
      faultInjectionPolicy
      maxStreamDuration
    paths
  routeRules
    priority
    description
    matchRules
        prefixMatch
        fullPathMatch
        headerMatches
        metadataFilters
    service
    routeAction
      weightedBackendServices
         backendService
         weight
      retryPolicy
         retryConditions
         numRetries
      faultInjectionPolicy
      maxStreamDuration

Die folgenden URL-Zuordnungslimits gelten bei Verwendung von proxylosen gRPC-Diensten:

  • Platzhalterzeichen in Hostregeln und Standardregeln einer URL-Zuordnung, einschließlich der implizit erstellten *-Hostregel einer URL-Zuordnung, werden nicht unterstützt. Solche Einträge werden übersprungen, wenn der Hostabgleich abgeschlossen ist.

  • Folgende Features werden nicht unterstützt:

    • queryParameterMatches in routeRules
    • Routingaktionen headerAction, urlRewrite, requestMirrorPolicy, corsPolicy und urlRedirect.
    • Routingaktion timeout; maxStreamDuration anstelle von timeout verwenden
    • perTryTimeout in retryPolicy
    • retryConditions in retryPolicy mit Ausnahme einer oder mehrerer Bedingungen von cancelled, deadline-exceeded, internal, resource-exhausted und unavailable
    • Die Parameter defaultService, defaultRouteAction, defaultUrlRedirect und headerAction der URL-Zuordnung werden von keinen proxylosen gRPC-Diensten verwendet. Wird keine übereinstimmende Hostregel gefunden, wenn ein proxyloser gRPC-Client nach einem Dienstnamen sucht, gibt Traffic Director einen Fehler für die Namenssuche zurück, statt den Standarddienst oder die Aktion der URL-Zuordnung zu verwenden.
    • headerAction in weightedBackendServices
  • In Übereinstimmungsregeln für die URL-Zuordnung werden nur nicht binäre benutzerdefinierte Metadaten und der Header content-type unterstützt. Die folgenden Header auf Transportebene können in Header-Übereinstimmungsregeln nicht verwendet werden: :authority, :method, :path, :scheme, user-agent, accept-encoding, content-encoding, grpc-accept-encoding, grpc-encoding, grpc-previous-rpc-attempts, grpc-tags-bin, grpc-timeout und grpc-trace-bin.

  • Wenn Sie die Hostregel einer URL-Zuordnung aktualisieren, um von einem Back-End-Dienst zu einem anderen zu wechseln, wird der Traffic möglicherweise kurzzeitig unterbrochen, während die neue Konfiguration an die Clients übertragen wird. Konfigurieren Sie die Trafficaufteilung mit gewichteten Back-End-Diensten, um diese Einschränkung zu vermeiden. Nachdem Sie die Trafficaufteilung konfiguriert haben, verschieben Sie den Traffic langsam vom alten Back-End-Dienst zum neuen Back-End-Dienst.

Einschränkungen für gRPC-Zielproxys

Wenn ein Ziel-gRPC-Proxy auf eine URL-Zuordnung verweist, können Sie die folgenden URL-Zuordnungsfeatures nicht konfigurieren. Dies gilt unabhängig davon, ob Sie einen Sidecar-Proxy oder einen proxylosen gRPC-Dienst verwenden, da diese HTTP-protokollspezifischen Features nicht für das gRPC-Protokoll gelten:

  • queryParameterMatches Übereinstimmungsregel
  • Routingaktion urlRewrite
  • Routingaktion urlRedirect
  • Aktion corsPolicy

Einschränkungen für Back-End-Dienste

Die folgenden Backend-Dienstfeatures werden nicht für proxylose gRPC-Dienste unterstützt, die für einen Sidecar-Proxy unterstützt werden:

  • localityLbPolicy außer LEAST_REQUEST (nur mit Java-Clients), ROUND_ROBIN und RING_HASH
  • sessionAffinity außer HEADER_FIELD und NONE
  • consistentHash außer den Feldern httpHeaderName und minimumRingSize
  • affinityCookieTtlSec
  • timeoutSec; verwenden Sie stattdessen maxStreamDuration.
  • circuitBreakers außer dem Feld maxRequests

Einschränkungen für die erweiterte Trafficverwaltung

Sie können einige erweiterte Trafficverwaltungsfeatures nicht für proxylose gRPC-Dienste mit Traffic Director konfigurieren. Unterstützte Features finden Sie hier:

Einschränkungen bei Service Directory

  • Service Directory und Traffic Director garantieren keine Erreichbarkeit des Netzwerks für Clients.
  • Ein Backend-Dienst kann nur auf einen der folgenden Werte verweisen:

    • Verwaltete Instanzgruppe oder nicht verwaltete Instanzgruppe
    • Netzwerk-Endpunktgruppe
    • Dienstbindungen
  • Service Directory-Dienste können nur mit globalen Backend-Diensten mit load-balancing-scheme=INTERNAL_SELF_MANAGED verwendet werden.

  • Ein Service Directory-Dienst, auf den von einer Dienstbindung verwiesen wird, kann gelöscht werden. Wenn der zugrunde liegende Service Directory-Dienst, an den der Backend-Dienst angehängt ist, gelöscht wird, können Anwendungen, die Traffic Director verwenden, keinen Traffic an diesen Dienst senden. Daher schlagen Anfragen fehl. Best Practices finden Sie unter Beobachtbarkeit und Fehlerbehebung.

Systemdiagnosen

Wenn Sie einen Service Directory-Dienst an einen Backend-Dienst binden, können Sie keine Systemdiagnose für den Backend-Dienst konfigurieren.

Nächste Schritte