Citrix ADC

Solicitar reintento si la respuesta del servidor back-end se agota

El reintento de solicitud está disponible para otro caso en el que, si un servidor back-end tarda más tiempo en responder a las solicitudes, el dispositivo realiza el equilibrio de recarga al tiempo de espera y reenvía la solicitud al siguiente servidor disponible.

Cómo funciona el reintento de solicitud cuando se agota el tiempo de espera de respuesta del servidor back-end

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

Cómo funciona el reintento de solicitud cuando se agota el tiempo de espera de respuesta del servidor back-end

  1. El proceso comienza habilitando la función appqoe en el dispositivo.
  2. La configuración appqoe tiene el parámetro “RetryOnTimeout” en milisegundos.
  3. Cuando el dispositivo envía una solicitud y si el servidor tarda más tiempo en responder, el dispositivo realiza un equilibrio de recarga basado en el valor de tiempo de espera configurado. El dispositivo restablece la conexión, elige otro servicio y reenvía la solicitud en lugar de esperar la respuesta del servidor.
  4. Después de que el servidor virtual de equilibrio de carga reciba la respuesta, el dispositivo reenvía la respuesta al cliente. El uso de un parámetro de tiempo de espera impide que el dispositivo siga esperando la respuesta del servidor, lo que provoca un aumento de RTT.
  5. Si los servidores back-end disponibles son iguales o inferiores al recuento de reintentos y si todos los servidores agotan el tiempo de espera para la solicitud, 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 agotan el tiempo de espera para la solicitud, el dispositivo devuelve un error de servidor interno 500 al cliente.
  6. Del mismo modo, si el número de servidores back-end es superior al recuento de reintentos y si el servidor back-end agota el tiempo de espera tras una solicitud, el dispositivo sigue esperando el último servicio hasta que el servidor envíe una respuesta o se agote el tiempo de espera de la conexión inactiva del cliente. Considere un caso con tres servidores back-end y el recuento de reintentos establecido como dos. Si los tres servidores agotan el tiempo de espera tras la solicitud, el dispositivo sigue esperando al tercer servicio hasta que el servidor envíe una respuesta o el tiempo de espera de la conexión inactiva del cliente.

Configurar el reintento de solicitud (método GET y POST) cuando se agota el tiempo de espera de respuesta del servidor back-end

Para configurar el reintento de solicitud para el método GET en tiempo de espera, debe completar los siguientes pasos.

  1. Activar appqoe
  2. Configurar la acción appqoe
  3. Agregar directiva appqoe
  4. Vincular la directiva appqoe al servidor virtual de equilibrio de carga

Nota:

El caso de reintento de solicitud en tiempo de espera también es aplicable para el método POST.

Activar appqoe

En el símbolo del sistema, escriba:

enable ns feature appqoe

Agregar acción appqoe para el tiempo de espera

Debe configurar la acción appqoe para reintentarlo en el tiempo de espera y definir el número de intentos de reintento.

En el símbolo del sistema, escriba:

add appqoe action <name> -retryOnTimeout <msecs> -numRetries <positive_integer>

Ejemplo:

add appqoe action appact1 -retryOnTimeout 35 –numRetries 5

Agregar directiva appqoe

Para implementar appqoe debe configurar la directiva appqoe para definir cómo poner en cola las conexiones.

En el símbolo del sistema, escriba:

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

Ejemplo:

add appqoe policy timeout_policy -rule http.req.method.eq(get) -action appact1

Vincular la directiva appqoe al servidor virtual de equilibrio de carga

Cuando un servidor back-end tarda mucho tiempo en responder y si quiere que el servidor virtual de equilibrio de carga reenvíe la solicitud al siguiente servicio disponible, debe vincular la directiva appqoe al servidor virtual de equilibrio.

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 timeout_policy -type REQUEST -priority 1

Configurar la directiva AppQoE para volver a equilibrar la carga en el tiempo de espera 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:

    a. Nombre. Nombre de directiva AppQoE b. Acción. Agregar o modificar una acción. Para crear una acción nueva, consulte la sección Crear acción de AppQoE. c. Expresión. Seleccione o introduzca la expresión de directiva “http.req.method.eq(get)”.

  4. Haga clic en Crear y cerrar.

Configurar la directiva appqoe para el tiempo de espera de respuesta del servidor de equilibrio de carga

Configurar la acción AppQoE para el reintento 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 el siguiente parámetro para reintentar en el tiempo de espera de respuesta del servidor back-end: a. Vuelva a intentar el tiempo de espera. Reintente el tiempo de espera de solicitud (en miliseg) al enviar la solicitud a los servidores back-end.
  4. Haga clic en Crear y cerrar.

configurar la acción AppQoE para el reintento de solicitud para el tiempo de espera de respuesta del servidor back-end y

Solicitar reintento si la respuesta del servidor back-end se agota