Einschränkungen für proxyloses gRPC

In diesem Dokument werden Einschränkungen für Cloud Service Mesh mit proxylose gRPC-Anwendungen. Informationen zu Limits finden Sie unter Kontingente und Limits.

Einschränkungen für Weiterleitungsregeln, URL-Zuordnungen und Zielproxys gelten nur für Cloud Service Mesh mit den Google Cloud Load Balancing APIs verwenden.

Allgemeine Beschränkungen

Einschränkungen von Cloud Service Mesh mit proxylosen gRPC-Anwendungen umfassen 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.

    • Für gRPC-Anwendungen, die nicht unterstützten erweiterten Traffic benötigen verwenden Sie den DNS-Namens-Resolver anstelle des xDS-Resolvers und mit Sidecar-Proxys bereitstellen, die von Cloud Service Mesh unterstützt werden. Legen Sie in Ihrem gRPC-Zielproxy das Feld validateForProxyless auf FALSE fest. damit Sie Features konfigurieren können, die noch nicht von gRPC unterstützt werden, die in Cloud Service Mesh mit 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.

    • Cloud Service Mesh bietet eine priorisierte gewichtete Liste Orte: eine Instanzgruppe oder eine Netzwerk-Endpunktgruppe (NEG) – an den gRPC-Client. Cloud Service Mesh berechnet diese Liste basierend auf auf die nächstgelegene verfügbare Zone, ihre Kapazität und den Balancing-Modus des Back-End-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 einer anderen beginnt, wenn liegt die aktuelle Zonenkapazität unter 50%. 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 für proxylose 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. Wenn ein übereinstimmende Hostregel nicht gefunden, wenn ein proxyloser gRPC-Client nach einer Dienstnamen verwendet, gibt Cloud Service Mesh einen Fehler bei der Namenssuche zurück, statt Standarddienst oder -aktion der URL-Zuordnung verwenden.
    • headerAction“ in „weightedBackendServices
  • In Übereinstimmungsregeln für den Header der URL-Zuordnung werden nur nicht binär benutzerdefiniert angegeben. benutzerdefinierte Metadaten content-type-Header werden 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 auf wird der Traffic möglicherweise unterbrochen, während die neue Konfiguration an die Clients gesendet wird. Konfigurieren Sie zur Vermeidung dieser Einschränkung Traffic-Aufteilung mit gewichteten Back-End-Diensten. Nach der Konfiguration der Traffic-Aufteilung den Traffic langsam vom alten Back-End verlagern mit dem neuen Back-End-Dienst verknüpfen.

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 eine Sidecar-Datei Proxy oder einen proxylosen gRPC-Dienst verwenden, da diese Funktionen gelten nicht für das gRPC-Protokoll:

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

Einschränkungen für Back-End-Dienste

Die folgenden Back-End-Dienst-Features werden bei proxylosen Einstellungen nicht unterstützt gRPC-Dienste mit einem Sidecar-Proxy:

  • localityLbPolicy mit Ausnahme von 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

Beachten Sie, dass ein gRPC-Client die Konfiguration vom Cloud Service Mesh NACK übernimmt. wenn nicht unterstützte Werte konfiguriert sind. Dies führt zur Konfiguration für alle Back-End-Dienste vom Client abgelehnt, da für das xDS-Protokoll Ablehnen aller Ressourcen in einer bestimmten Antwort nur eine einzelne Ressource aus der Antwort. Dies führt dazu, dass der Client-Kanal vorübergehend in einen Fehlerzustand versetzt wird, bis die Konfiguration korrigiert wurde. Fällig müssen Sie sicherstellen, dass alle Clients den erforderlichen Wert bevor Sie eine Funktion für einen Dienst konfigurieren. Wenn Sie beispielsweise ROUND_ROBIN auf RING_HASH setzen, müssen Sie sicherstellen, dass alle Clients wurde auf eine Version aktualisiert, die RING_HASH unterstützt.

Einschränkungen für die erweiterte Trafficverwaltung

Einige erweiterte Funktionen zur Traffic-Verwaltung können nicht für proxylose Einstellungen konfiguriert werden gRPC-Dienste mit Cloud Service Mesh. Informationen zu unterstützten Funktionen finden Sie in der Folgendes:

Einschränkungen bei Service Directory

  • Service Directory und Cloud Service Mesh die Netzwerkerreichbarkeit für Kunden zu garantieren.
  • 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 das zugrunde liegende Service Directory an den der Backend-Dienst angehängt ist, gelöscht wurde, die Cloud Service Mesh verwenden, können keinen Traffic an diesen Dienst senden. Daher -Anfragen schlagen fehl. Best Practices finden Sie unter Beobachtbarkeit und Fehlerbehebung.

  • Wenn Sie einen Service Directory-Dienst an ein Back-End binden können Sie für diesen Back-End-Dienst keine Systemdiagnose konfigurieren.

Nächste Schritte