Citrix ADC

Solicitar reintento

Cuando un servidor back-end restablece una conexión TCP, la función de reintento de solicitud reenvía la solicitud al siguiente servidor disponible, en lugar de enviar el restablecimiento al cliente. Al realizar el equilibrio de recarga, el cliente guarda RTT cuando el dispositivo inicia la misma solicitud en el siguiente servicio disponible.

La función de reintento de solicitud es aplicable para el siguiente caso de error:

  • El servidor back-end restablece una conexión TCP cuando el dispositivo envía un paquete de datos de solicitud.
  • Si el servidor back-end restablece una conexión TCP en el establecimiento SYN

Cómo funciona el reintento de solicitud cuando el servidor back-end restablece una conexión TCP al recibir un paquete de datos de solicitud

En el siguiente diagrama se muestra cómo interactúan los componentes entre sí.

Cómo funciona el reintento de solicitud

  1. El proceso comienza habilitando la función AppQOE en el dispositivo.
  2. Cuando el cliente envía una solicitud HTTP o HTTPS, el servidor virtual de equilibrio de carga envía la solicitud al servidor back-end.
  3. Si el servicio solicitado no está disponible, el servidor back-end restablece la conexión TCP.
  4. Si la configuración de AppQoe tiene activado el “reintento” con el número deseado de intentos de reintentos especificado, el servidor virtual de equilibrio de carga utiliza el algoritmo de equilibrio de carga configurado para reenviar la solicitud al siguiente servidor de aplicaciones disponible.
  5. Después de que el servidor virtual de equilibrio de carga reciba la respuesta, el dispositivo reenvía la respuesta al cliente.
  6. Si los servidores back-end disponibles son iguales o inferiores al recuento de reintentos y si todos los servidores envían un restablecimiento, el dispositivo respondería un error de 500 servidores internos. Considere un caso con cinco servidores disponibles y el recuento de reintentos establecido como seis. Si los cinco servidores restablecen la conexión, el dispositivo devuelve un error interno de 500 servidores al cliente.
  7. Del mismo modo, si el número de servidores back-end es superior al recuento de reintentos y si los servidores back-end restablecen la conexión, el dispositivo reenvía el restablecimiento al cliente. Considere un caso con tres servidores back-end y el recuento de reintentos establecido como dos. Si los tres servidores restablecen la conexión, el dispositivo envía una respuesta de restablecimiento al cliente.

Cómo funciona el reintento de solicitudes cuando el servidor back-end restablece una conexión TCP en el establecimiento SYN

El siguiente diagrama muestra que los componentes interactúan entre sí:

Cómo funciona el reintento de solicitud

  1. El proceso comienza habilitando la función AppQOE en el dispositivo.
  2. Cuando el cliente envía una solicitud HTTP o HTTPS, el servidor virtual de equilibrio de carga inicia la conexión al servidor back-end.
  3. Si el servicio solicitado no está disponible en el establecimiento SYN TCP, el servidor back-end restablece la conexión TCP.
  4. Si la configuración de AppQoe tiene activado el “reintento” con el número deseado de intentos de reintentos especificado, el servidor virtual de equilibrio de carga utiliza el algoritmo de equilibrio de carga configurado para reenviar la solicitud al siguiente servidor de aplicaciones disponible.
  5. Después de que el servidor virtual de equilibrio de carga reciba la respuesta, el dispositivo reenvía la respuesta al cliente.
  6. Si los servidores back-end disponibles son iguales o inferiores al recuento de reintentos y si todos los servidores envían restablecimiento, el dispositivo respondería un error interno de 500 servidores. Considere un caso con cinco servidores disponibles y el recuento de reintentos establecido como seis. Si los cinco servidores restablecen la conexión, el dispositivo devuelve un error interno de 500 servidores al cliente
  7. Del mismo modo, si el número de servidores back-end es superior al recuento de reintentos y si los servidores back-end restablecen la conexión en el establecimiento SYN TCP, el dispositivo reenvía el restablecimiento al cliente. Considere un caso con tres servidores back-end y el recuento de reintentos establecido como dos. Si los tres servidores restablecen la conexión, el dispositivo envía un paquete de restablecimiento al cliente.

Configurar reintento de solicitud para el método GET

Para configurar la función de reintento de un método GET, debe completar los siguientes pasos.

  1. Habilitar AppQoE
  2. Agregar acción AppQoE
  3. Agregar directiva AppQoE
  4. Vincular el servidor virtual de equilibrio de carga a la directiva AppQoE

Habilitar AppQoE

En el símbolo del sistema, escriba: enable ns feature appqoe

Agregar acción AppQoE

Debe configurar una acción AppQoE para especificar si quiere que el dispositivo vuelva a intentarlo después de un restablecimiento de TCP y el número de intentos de reintento.

add appqoe action reset_action -retryOnReset ( YES | NO ) -numretries <positive_integer>]

Ejemplo:

add appqoe action reset_action –retryOnReset YES –numretries 5

Donde: RetryOnReset. Habilite el reintento si el servidor back-end restablece una conexión TCP. numretries. Reintentar contar.

Agregar directiva AppQoE

Para implementar AppQOE, debe configurar la directiva de AppQOE para dar prioridad a la solicitud HTTP o SSL entrante en una cola específica.

En el símbolo del sistema, escriba:

add appqoe policy <name> -rule <expression> -action <string>

Ejemplo:

add AppQoE policy reset_policy -rule http.req.method.eq(get) -action reset_action

Vincular el servidor virtual de equilibrio de carga a la directiva AppQoE

Cuando un servidor back-end restablece una solicitud de paquete TCP y si quiere que el servidor virtual de equilibrio de carga reenvíe la solicitud al siguiente servicio disponible, debe enlazar el servidor virtual de equilibrio de carga a la directiva AppQoE.

En el símbolo del sistema, escriba:

bind lb vserver <name> ((<serviceName> (-policyName <string> [-priority <positive_integer>] [-gotoPriorityExpression <expression>] [-type ( REQUEST | RESPONSE )]

Ejemplo:

bind lb vserver v1 -policyName reset_policy -type REQUEST -priority 1

Configurar reintento de solicitud para solicitudes POST

Siempre debe tener precaución al volver a cargar las solicitudes de equilibrio que escriben datos en el servidor back-end. Para tales solicitudes, asegúrese de que la longitud del contenido sea corta. Si la longitud del contenido es larga, puede resultar en el consumo de recursos. Siga los pasos que se indican a continuación para configurar el equilibrio de recarga para las solicitudes POST.

  1. Habilitar AppQoE
  2. Agregar acción AppQoE
  3. Agregar directiva AppQoE
  4. Vincular el servidor virtual de equilibrio de carga a la directiva AppQoE

Habilitar AppQoE

En el símbolo del sistema, escriba:

enable ns feature appqoe

Agregar acción AppQoE

Debe agregar una acción AppQoE para volver a intentarlo después de un restablecimiento de TCP y número de intentos de reintento.

add appqoe action reset_action -retryOnReset ( YES | NO ) -numretries <positive_integer>]

Ejemplo:

add AppQoE action reset_action –retryOnReset YES –numretries 5

Agregar directiva AppQoE

Para implementar AppQOE, debe configurar la directiva de AppQOE para definir cómo poner en cola las conexiones en una cola específica.

En el símbolo del sistema, escriba:

add appqoe policy <name> -rule <expression> -action <string>

Ejemplo:

add appqoe policy reset_policy -rule HTTP.REQ.CONTENT_LENGTH.le(2000) -action reset_action

Nota:

Puede utilizar esta configuración si prefiere restringir la función de reintento de solicitud para una longitud de contenido inferior a 2000.

Vincular el servidor virtual de equilibrio de carga a la directiva AppQoE

Cuando un servidor back-end restablece una solicitud de paquete TCP y si quiere que el servidor virtual de equilibrio de carga reenvíe la solicitud al siguiente servicio disponible a través de una cola específica, debe enlazar el servidor virtual de equilibrio de carga a la directiva AppQoE.

En el símbolo del sistema, escriba:

bind lb vserver <name> ((<serviceName> (-policyName <string> [-priority <positive_integer>] [-gotoPriorityExpression <expression>] [-type ( REQUEST | RESPONSE )]

Ejemplo: bind lb vserver v1 -policyName reset_policy -type REQUEST -priority 1

Configurar la directiva AppQoE para reintentar solicitudes mediante la GUI de Citrix ADC

  1. Vaya a AppExpert > AppQoE > Directivas.
  2. En la página Directivas de AppQoE, haga clic en Agregar.
  3. En la página Crear una directiva de AppQoE, establezca los siguientes parámetros:

    • nombre. Nombre de directiva de AppQoe
    • Acción. Agregar o modificar una acción. Para crear una acción, consulte la sección Crear acción de AppQOE .
    • expresión. Seleccione o escriba expresiónHTTP.REQ.CONTENT_LENGTH.le (2000) de directiva.
  4. Haga clic en Crear y cerrar.

    Directiva de AppQoE para reintento de solicitud o equilibrio de recarga

Configurar la acción de AppQoE para el equilibrio de reintentos de solicitud mediante la GUI de Citrix ADC

  1. Vaya a AppExpert > AppQoE > Acción.
  2. En la página Acciones de AppQoE, haga clic en Agregar.
  3. En la página Crear acción de AppQoE, establezca los siguientes parámetros para reintentar al restablecer TCP: a. Vuelva a intentar reiniciar TCP. Active la casilla de verificación para habilitar la acción de reintento para restablecer TCP. b. Reintentar recuento. Introduzca el recuento de reintentos.
  4. Haga clic en Crear y cerrar.

    Configurar la acción de AppQoE para el equilibrio de reintento de solicitud

Configurar el reintento de solicitud para el método GET cuando el servidor back-end se restablece en el establecimiento TCP SYN

La configuración de la CLI y la GUI es similar a los pasos seguidos para el método GET. Para obtener más información, consulte la sección Configurar solicitud de prueba para el método GET . Cuando el servidor back-end restablece una conexión.