Citrix ADC

Configurar el conjunto deseado de miembros del grupo de servicios para un grupo de servicios en una llamada a la API de NITRO

Ahora se permite configurar un conjunto deseado de miembros de grupos de servicios para un grupo de servicios en una llamada a la API de NITRO. Se agrega una nueva API, la API de estado deseado, para admitir esta configuración. Con la API de estado deseado, puede:

  • Proporcione una lista de los miembros del grupo de servicios en una sola solicitud PUT en el recurso “servicegroup_servicegroupmemberlist_binding”.
  • Indique su peso y estado (opcional) en esa solicitud PUT.
  • Sincronice eficazmente la configuración del dispositivo con los cambios de implementación en los servidores de aplicaciones.

El dispositivo Citrix ADC compara el conjunto de miembros deseado solicitado con el conjunto de miembros configurado. A continuación, vincula automáticamente a los nuevos miembros y desvincula a los miembros que no están presentes en la solicitud.

Nota:

  • Esta función solo se admite para grupos de servicios de tipo API.
  • Solo puede vincular servicios basados en direcciones IP mediante la API de estado deseado, no se permiten los servicios basados en nombres de dominio.
  • Anteriormente, solo un miembro del grupo de servicios puede estar vinculado en una llamada NITRO.

Importante

La API de estado deseada para la membresía de ServiceGroup se admite en la implementación de clústeres Citrix ADC.

Caso de uso: sincronizar los cambios de implementación en el dispositivo Citrix ADC en implementaciones a gran escala, como Kubernetes

En implementaciones a gran escala y altamente dinámicas (por ejemplo, Kubernetes), el desafío es mantener la configuración del dispositivo actualizada con la velocidad de cambio de las implementaciones para atender con precisión el tráfico de las aplicaciones. En tales implementaciones, los controladores (Ingress o E-W Controller) son responsables de actualizar la configuración de ADC. Siempre que se produzcan cambios en la implementación, kube-api server envía el conjunto efectivo de puntos finales a través del “evento Endpoints” al controlador. El Controller utiliza el enfoque Read-Delta-Modify donde realiza lo siguiente:

  • Obtiene el conjunto de puntos finales configurado actualmente (conjunto de miembros del grupo de servicios de un grupo de servicios) para el servicio desde el dispositivo ADC.
  • Compara el conjunto de puntos finales configurados con el conjunto en el evento recibido.
  • Enlaza los nuevos puntos finales (miembros del grupo de servicios) o desvincula los puntos finales eliminados.

Dado que la tasa de cambio y el tamaño de los servicios son altos en este entorno, este método de configuración no es eficiente y puede retrasar las actualizaciones de configuración.

La API de estado deseada resuelve el problema aceptando el conjunto de miembros previsto para un grupo de servicios en una única API y actualiza eficazmente la configuración.

Crear un grupo de servicios de tipo API mediante la CLI

En el símbolo del sistema, escriba;

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale <autoScale>]

Ejemplo:

add serviceGroup svg1 HTTP -autoScale API

Puede configurar los parámetros autoDisablegraceful, autoDisabledelay y autoScale mediante el comando add ServiceGroup o set ServiceGroup.

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale <autoScale>] [-autoDisablegraceful ( YES | NO)] [-autoDisabledelay <secs>]

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale (API |CLOUD | DISABLED| DNS |POLICY)]

set serviceGroup <serviceGroupName [-autoDisablegraceful ( YES | NO)] [-autoDisabledelay <secs>]

set serviceGroup <serviceGroupName [-autoScale (API |CLOUD | DISABLED| DNS |POLICY)]

Ejemplo:

add serviceGroup svg1 HTTP autoDisablegraceful YES -autoDisabledelay 100

add serviceGroup svg1 HTTP -autoScale API

set serviceGroup svg1 -autoDisablegraceful  YES -autoDisabledelay 100

set serviceGroup svg1 -autoScale API

Argumentos

Desactivación automática de Graceful

Indica un cierre correcto del servicio. Si esta opción está habilitada, el dispositivo espera a que se cierren todas las conexiones pendientes a este servicio antes de eliminarlo. Para los clientes que ya tienen una sesión persistente en el sistema, se siguen enviando nuevas conexiones o solicitudes a este servicio. El miembro del servicio se elimina solo si no hay conexiones pendientes. Valor por defecto: NO

Retraso de desactivación automática

Indica el tiempo permitido (en segundos) para un apagado correcto. Durante este período, se siguen enviando nuevas conexiones o solicitudes a este servicio para los clientes que ya tienen una sesión persistente en el sistema. Las conexiones o solicitudes de nuevos clientes que no tienen sesiones persistentes en el sistema no se envían al servicio. En cambio, tienen equilibrio de carga entre otros servicios disponibles. Una vez transcurrido el tiempo de retraso, se elimina al miembro del servicio.

API de Autoscale

El argumento de la API de Autoscale permite usar la API de estado deseado para vincular el conjunto de miembros a un grupo de servicios deseado. Puede establecer el grupo de servicios de API de estado deseado que no sea de escalabilidad automática al tipo de escalabilidad automática, si todas las condiciones proporcionadas coinciden.

La API de estado deseada comprueba si la dirección IP del miembro del grupo de servicios está asociada a algún servidor existente. Si la dirección IP coincide con un servidor existente, la API reutiliza la dirección IP y el nombre del servidor existente. Si la dirección IP no coincide con ningún servidor existente, la API crea un servidor y asigna la dirección IP misma como el nombre del servidor.

Ejemplo:

Considere un servidor con dirección IP 2.2.2.2 y nombre como myserver que existe en un dispositivo Citrix ADC. Con la API de estado deseada, vincula un conjunto de miembros del grupo de servicios cuya dirección IP varía de 2.2.2.1 a 2.2.2.3.

Como la dirección IP 2.2.2.2 está asociada a un servidor existente, la API reutiliza la dirección IP y el nombre (2.2.2.2 y myserver). Como no hay servidores existentes con direcciones IP, 2.2.2.1, 2.2.2.3, la API crea servidores con estas direcciones IP. La API asigna la dirección IP en sí misma como el nombre del servidor.

Si la dirección IP proporcionada en el comando de estado deseado entra en conflicto con otras entidades de Citrix ADC, como el servidor virtual de CS, se produce un conflicto. Se muestra un mensaje de error que contiene el motivo del error. La dirección IP del primer miembro del grupo de servicios de la lista de miembros fallidos se muestra en el mensaje de error.

Ejemplo:

Considere un servidor con dirección IP 2.2.2.8 que se usa como servidor LB. Con la API de estado deseada, intenta vincular un conjunto de miembros del grupo de servicios cuya dirección IP varía entre 2.2.2.2 y 2.2.2.11.

Como 2.2.2.8 ya está en uso para el servicio LB, se produce un conflicto. Se muestra el siguiente mensaje de error que contiene el motivo del error y los enlaces de miembros fallidos:

{ "errorcode": 304, "message": "Address already in use", "severity": "ERROR", "servicegroup_servicegroupmemberlist_binding": { "servicegroupname": "sg1", "failedmembers": [ { "ip": "2.2.2.8", "port": 80 }, { "ip": "2.2.2.9", "port": 80 } ] } }
<!--NeedCopy-->

El código de error 304 muestra el primer miembro del grupo de servicios de la lista de miembros fallidos, que es 2.2.2.8.

El comando set serviceGroup Autoscale puede fallar si los enlaces de miembros existentes cumplen alguna de estas condiciones:

  • Si el servidor enlazado al grupo de servicios es un servidor de nombres o un servidor basado en dominio.
  • Si el nombre del servidor de bucle invertido no es 127.0.0.1 o 0000:0000:0000:0000:0000:0000:0000:0001.
  • Si elige diferentes tipos de escalabilidad automática (nube, API, DNS y directiva) en un comando set ServiceGroup y agrega el comando ServiceGroup.

Importante:

  • Los parámetros AutoDisableGraceful y AutoDisableDelay solo se aplican a los grupos de servicios de tipo Autoscale “API” y “CLOUD”.
  • Si los parámetros AutoDisableGraceful o AutoDisableDelay no están configurados, los miembros del servicio se eliminan de inmediato.

Desvincular un miembro de un grupo de servicios correctamente

Si alguno de los miembros del grupo de servicios no se encuentra en la lista de estados deseada, esos miembros se desvinculan correctamente en función de la configuración de parámetros autoDisablegraceful o autoDisabledelay.

  • Si se establece uno de estos parámetros, el miembro del grupo de servicios se desvincula correctamente.
  • Si no se establece ninguno de estos parámetros, el miembro del grupo de servicios se desvincula inmediatamente.

Nota:

  • Los miembros del grupo de servicios identificados para unbind graceful se muestran solo cuando se ejecuta el comando show service group.
  • No puede realizar ninguna operación (como set, unset) en el miembro del grupo de servicios identificado para la desvinculación graciosa.

En la siguiente ilustración se muestra un ejemplo de comando show service group.

Ejemplo de comando show service group

Crear un grupo de servicios de tipo API mediante la interfaz gráfica de usuario

  1. Vaya a Administración del tráfico > Equilibrio de carga > Grupos de serviciosy haga clic en Agregar.

  2. En el modo AutoScale, seleccione API.

Configurar el apagado correcto o un retraso de tiempo para un grupo de servicios de tipo API mediante la interfaz gráfica de usuario

  1. Vaya a Administración del tráfico > Equilibrio de carga > Grupos de servicios.

    Configuración básica de los grupos de servicios

  2. En el modo AutoScale, seleccione API.

  3. En Desactivación automática de Graceful, seleccione .

  4. En Retraso de desactivación automática, introduzca el tiempo de espera para un apagado correcto.

Nota: Los campos Desactivación automática gradual o Retraso de visualización automática solo están habilitados si selecciona API o CLOUD en el modo AutoScale.