Limitaciones de gRPC sin proxy

En este documento, se describen las limitaciones que se aplican a Traffic Director con aplicaciones de gRPC sin proxy. Para obtener más información sobre los límites, consulta Cuotas y límites.

Limitaciones generales

Las limitaciones de Traffic Director con aplicaciones de gRPC sin proxy incluyen las siguientes:

  • No puedes configurar servicios de backend y mapas de reglas de enrutamiento con el protocolo de gRPC en la consola de Google Cloud. Para estos recursos, la consola de Google Cloud es de solo lectura.

  • gRPC sin proxy es compatible con el descubrimiento de extremos, el enrutamiento, el balanceo de cargas, los informes de carga y muchas características de administración avanzada del tráfico.

    • Si quieres obtener la versión mínima de gRPC necesaria para admitir algunas funciones de la administración avanzada de tráfico, consulta Lenguajes y versiones de gRPC compatibles.

    • Para las aplicaciones de gRPC que necesitan funciones de administración avanzada de tráfico no compatibles, usa el agente de resolución de nombres de DNS en lugar del agente de resolución de xDS y, luego, impleméntalo con proxies de sidecar compatibles con Traffic Director. En el proxy de gRPC de destino, configura el campo validateForProxyless en FALSE para que puedas configurar las funciones que aún no son compatibles con gRPC, pero que están disponibles en Traffic Director con el uso de proxies de sidecar.

  • gRPC sin proxy solo admite políticas de balanceo de cargas de anillo de hash y round robin. Otros algoritmos de balanceo de cargas no son compatibles.

    • Traffic Director proporciona una lista priorizada de localidades (un grupo de instancias o un grupo de extremos de red [NEG]) al cliente gRPC. Traffic Director calcula esta lista en función de la zona disponible más cercana, su capacidad y el modo de balanceo del servicio de backend.
    • Para una solicitud en particular, el cliente de gRPC elige una o más localidades según la prioridad y el peso, y realiza un balanceo de cargas basado en anillo de hash y en round robin para los backends dentro de esas localidades.
  • La conmutación por error de una zona (localidad) a otra comienza cuando la capacidad de la zona actual es inferior al 50%. No puedes configurar este umbral.

  • En algunos casos, los comandos de configuración relacionados con un proxy de gRPC de destino y una regla de reenvío que hacen referencia a un proxy de gRPC de destino pueden tardar hasta un minuto.

  • Los NEG de conectividad híbrida (NEG NON_GCP_PRIVATE_IP_PORT) no son compatibles con los clientes de gRPC sin proxy.

Limitaciones de mapas de URL

Las siguientes funciones de administración de tráfico de mapas de URL son compatibles con los servicios de gRPC sin proxy.

Funciones compatibles en pathMatcher de hostRules:

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

Las siguientes limitaciones de mapas de URL se aplican cuando usas servicios de gRPC sin proxy:

  • No se admiten los caracteres comodín en las reglas de host y las reglas predeterminadas de un mapa de URL, incluida la regla de host * de un mapa de URL creada de forma implícita. Esas entradas se omiten cuando se realiza la coincidencia del host.

  • Las siguientes funciones no son compatibles:

    • queryParameterMatches en routeRules
    • Acciones de ruta headerAction, urlRewrite, requestMirrorPolicy, corsPolicy y urlRedirect
    • Acción de ruta timeout; usa maxStreamDuration en lugar de timeout
    • perTryTimeout en retryPolicy
    • retryConditions en retryPolicy, excepto una o más condiciones de cancelled, deadline-exceeded, internal, resource-exhausted y unavailable
    • Los servicios de gRPC sin proxy no usan defaultService, defaultRouteAction, defaultUrlRedirect y headerAction del mapa de URL. Si no se encuentra una regla de reenvío que coincida cuando un cliente de gRPC sin proxy busca un nombre de servicio, Traffic Director muestra un error de búsqueda de nombre en lugar de usar el servicio o la acción predeterminados del mapa de URL.
    • headerAction en weightedBackendServices
  • En las reglas de coincidencia de encabezado de mapa de URL, solo se admiten los metadatos personalizados no binarios especificados por el usuario y el encabezado content-type. Los siguientes encabezados de nivel de transporte no se pueden usar en las reglas de coincidencia de encabezado: :authority, :method, :path, :scheme, user-agent, accept-encoding, content-encoding, grpc-accept-encoding, grpc-encoding, grpc-previous-rpc-attempts, grpc-tags-bin, grpc-timeout y grpc-trace-bin.

  • Cuando actualizas una regla de host de mapa de URL para cambiar de un servicio de backend a otro, puede que el tráfico se interrumpa de manera temporal mientras se envía la configuración nueva a los clientes. Para evitar esta limitación, configura la división del tráfico con servicios de backend ponderados. Después de configurar la división del tráfico, cambia con lentitud el tráfico del servicio de backend anterior al servicio de backend nuevo.

Limitaciones del proxy de gRPC de destino

Cuando un proxy de gRPC de destino hace referencia a un mapa de URL, no puedes configurar las siguientes funciones del mapa de URL. Esto se aplica si usas un proxy de sidecar o un servicio de gRPC sin proxy porque estas funciones específicas del protocolo HTTP no se aplican al protocolo de gRPC:

  • queryParameterMatches regla de coincidencia
  • Acción de ruta urlRewrite
  • Acción de ruta urlRedirect
  • Acción corsPolicy

Limitaciones del servicio de backend

Las siguientes funciones del servicio de backend no son compatibles con los servicios de gRPC sin proxy que son compatibles con un proxy de sidecar:

  • localityLbPolicy, excepto LEAST_REQUEST (solo con clientes de Java), ROUND_ROBIN y RING_HASH
  • sessionAffinity, excepto HEADER_FIELD y NONE
  • consistentHash, excepto los campos httpHeaderName y minimumRingSize
  • affinityCookieTtlSec
  • timeoutSec; Utiliza maxStreamDuration en lugar de esta función.
  • circuitBreakers, excepto el campo maxRequests

Limitaciones de la administración del tráfico avanzada

Con Traffic Director, no puedes configurar algunas funciones avanzadas de administración de tráfico para servicios de gRPC sin proxy. Para conocer las funciones compatibles, consulta los siguientes vínculos:

Limitaciones con el Directorio de servicios

  • El Directorio de servicios y Traffic Director no garantizan la accesibilidad de la red para los clientes.
  • Un servicio de backend solo puede hacer referencia a uno de los siguientes elementos:

    • Grupo de instancias administrado o grupo de instancias no administrado
    • Grupo de extremos de red
    • Vinculaciones del servicio
  • Los servicios del Directorio de servicios solo se pueden usar con servicios de backend globales con load-balancing-scheme=INTERNAL_SELF_MANAGED.

  • Se puede borrar un servicio del Directorio de servicios al que hace referencia una vinculación del servicio. Si se borra el servicio subyacente del Directorio de servicios al que se adjunta el servicio de backend, las aplicaciones que usan Traffic Director no pueden enviar tráfico a este servicio y, por lo tanto, las solicitudes fallan. Consulta Observabilidad y depuración para conocer las prácticas recomendadas.

Verificaciones de estado

Cuando vinculas un servicio del Directorio de servicios a un servicio de backend, no puedes configurar una verificación de estado en el servicio de backend.

¿Qué sigue?