ADC

gRPC con la directiva de respuesta

La configuración de directiva de gRPC con respuesta explica cómo un dispositivo NetScaler proporciona respuestas diferentes a las solicitudes de gRPC a través del protocolo HTTP/2. Cuando los usuarios solicitan una página principal del sitio web, es posible que quiera proporcionar una página principal diferente dependiendo de dónde se encuentre cada usuario o del explorador que esté mediante el usuario.

En el siguiente diagrama se muestran los componentes que interactúan.

gRPC con una directiva de respuesta

  1. Habilite la función de respuesta en el dispositivo.
  2. Configure la acción de respuesta para generar una respuesta personalizada, redirigir una solicitud a otra página web o restablecer una conexión.
  3. Configure la directiva de respuesta para determinar las solicitudes de gRPC (tráfico) en las que se debe realizar una acción.
  4. Enlazar la directiva de respuesta al servidor virtual de equilibrio de carga para examinar si el tráfico coincide con la expresión de directiva.
  5. Mediante una directiva de respuesta, puede realizar lo siguiente en función del código de estado de gRPC.

Configurar la finalización de llamadas de gRPC con la directiva de respuesta mediante la CLI

Para configurar la terminación de llamadas de GRPC con la directiva de respuesta, debe completar los siguientes pasos:

  1. Habilitar la función de respuesta
  2. Agregar una acción de respuesta
  3. Agregar una directiva de respuesta y una acción de respuesta asociada
  4. Vincular la directiva de respuesta al servidor virtual de equilibrio de carga

Habilitar la función de respuesta

Para utilizar la función respondedor, primero debe habilitarla.

En la línea de comandos, escriba:

enable ns responder

Agregar la acción de respuesta

Después de habilitar la función, debe configurar la acción del respondedor para gestionar la respuesta de GRPC en función del código de estado devuelto por el servidor back-end.

En la línea de comandos, escriba:

add responder action <name> <type>

Ejemplo:

add responder action grpc-act respondwith "HTTP/1.1 200 OK\r\nServer: NS-Responder\r\nContent-Type:application/grpc\r\ngrpc-status: 12\r\ngrpc-message: Not Implemented\r\n\r\n" + "Method: " + HTTP.REQ.URL+ "is not implemented."

Agregar directiva de respondedores

Tras configurar una acción de respuesta, debe configurar una directiva de respuesta para seleccionar la solicitud gRPC a la que debe responder el dispositivo NetScaler.

En la línea de comandos, escriba:

add responder policy <name> <expression> <action> [<undefaction>]-appFlowaction <actionName> Ejemplo:

add responder policy grpc-resp-pol1 HTTP.REQ.URL.NE(“/helloworld.Greeter/SayHello”) grpc-act

Enlazar la directiva de respuesta al servidor virtual de equilibrio de carga

Para que una directiva entre en vigor, debe vincularla al servidor virtual de equilibrio de carga con el servicio gRPC.

En la línea de comandos, escriba:

bind responder global <policyName> <priority> [<gotoPriorityExpression> [-type <type>] [-invoke (<labelType> <labelName>)]

Ejemplo:

bind lb vserver lb-grpc svc-grpc -policyName grpc-resp-pol1 –priority 100

Para obtener más información sobre la directiva de respuesta, consulte el tema Directiva de respuesta .

Expresiones de directiva para coincidir los campos de búfer de protocolo de gRPC

El dispositivo NetScaler admite las siguientes expresiones de directiva en la configuración de gRPC:

  • Acceso a campo de búfer de protocolo gRPC. La llamada arbitraria a la API de gRPC coincide con el número de campo de mensaje con las nuevas expresiones de directiva. En una configuración de PI, las coincidencias se realizan mediante solo los “números de campo” y la “ruta API”.

  • Filtrado de encabezados gRPC. Los parámetros “HttpProfile” para gRPC se utilizan para ajustar el comportamiento predeterminado del análisis de gRPC (incluidas las expresiones de directivas de gRPC). Los siguientes parámetros se aplican a las expresiones de directivas de gRPC:

    • Delimitación de longitud de GRP. Está habilitado de forma predeterminada y espera que los búferes de protocolo se presenten con un mensaje delimitado por longitud.

    • Límite de Refía de GRP. El valor predeterminado es 131072. Es el tamaño máximo del mensaje de búfer de protocolo en bytes. También es la longitud máxima de cadena y la longitud máxima de campo de “byte” también.

Configurar expresiones de directivas avanzadas de gRPC mediante la CLI

En la línea de comandos, escriba:

set ns httpProfile <name> -http2 \( ENABLED | DISABLED ) -gRPCLengthDelimitation \( ENABLED | DISABLED ) -gRPCHoldLimit <int>

Ejemplo:

set ns httpProfile http2gRPC -http2 ENABLED -gRPCLengthDelimitation ENABLED -gRPCHoldLimit 131072

Configurar los parámetros de filtrado de encabezados de gRPC mediante la GUI

  1. Vaya a Sistema > Perfiles y haga clic en Perfiles HTTP.

  2. En la página Crear perfil HTTP, desplácese hacia abajo hasta la sección HTTP/3 y seleccione Delimitación de longitud de gRPC.

    Delimitación de longitud de gRPC

En el siguiente ejemplo de expresión de directiva se muestra un valor en el mensaje 5, el submensaje 4 y el campo 3. Es un int de 32 bits igual a 2.

http.req.body(1000).grpc.message(5).message(4).int32(3).eq(2)

Se añaden las siguientes expresiones de directiva para que coincidan los campos de mensajes de búfer de protocolo de gRPC por número:

  • message
  • doble
  • flotar
  • int32
  • int64
  • uint32
  • uint64
  • sint64
  • sint32
  • fixed32
  • fixed64
  • sfixed32
  • sfixed64
  • Bool
  • string
  • enum
  • bytes

Coincidencia de rutas API

La coincidencia de rutas de API se utiliza para coincidir con la llamada a la API de gRPC correcta cuando se utiliza más de una API. Haga coincidir la ruta de la API, que se encuentra en el pseudo encabezado ‘: path’ de la solicitud HTTP.

Ejemplo:

http.req.header(":path").eq("acme.inventory.v1/ListBooks")
gRPC con la directiva de respuesta