Ingress Controller de Citrix ADC

Implementar Citrix ADC VPX en alta disponibilidad activa-activa en el entorno EKS mediante Amazon ELB y el Citrix Ingress Controller

El tema cubre una solución para implementar Citrix ADC VPX en modo de alta disponibilidad activo-activo en varias zonas de disponibilidad en la plataforma AWS Elastic Container Service (EKS). La solución combina AWS Elastic Load Balancing (ELB) y Citrix ADC VPX para equilibrar la carga del tráfico de entrada a los microservicios implementados en el clúster de EKS. AWS ELB gestiona el tráfico de la capa 4 y las VPX de Citrix ADC proporcionan funcionalidades avanzadas de la capa 7, como equilibrio de carga avanzado, almacenamiento en caché y redirección basada en contenido.

Resumen de la solución

Una arquitectura básica de un clúster de EKS incluiría tres subredes públicas y tres subredes privadas implementadas en tres zonas de disponibilidad, como se muestra en el siguiente diagrama:

Arquitectura EKS

Con la solución, la arquitectura del clúster de EKS sería la que se muestra en el siguiente diagrama:

Arquitectura de soluciones

En la nube de AWS, AWS Elastic Load Balancing gestiona las conexiones TCP de capa 4 y equilibra la carga del tráfico mediante un algoritmo de redirección de hash de flujo. El ELB puede ser un equilibrador de carga de red o un equilibrador de carga clásico.

AWS ELB escucha las conexiones entrantes según lo definido por sus oyentes. Cada agente de escucha reenvía una nueva conexión a una de las instancias de Citrix ADC VPX disponibles. La carga de la instancia de Citrix ADC VPX equilibra el tráfico a los pods de EKS. También realiza otras funcionalidades de Capa 7, como la directiva de reescritura, la directiva de respuesta, la descarga SSL, etc., proporcionadas por Citrix ADC VPX.

Se implementa un Citrix Ingress Controller en el clúster EKS para cada instancia de Citrix ADC VPX. Los controladores de entrada de Citrix se configuran con la misma clase de entrada. Además, configura los objetos Ingress en el clúster de EKS en las instancias de Citrix ADC VPX respectivas.

AWS Elastic Load Balancing (ELB) tiene un nombre DNS al que se asigna una dirección IP de forma dinámica. El nombre DNS se puede agregar como registro Alias A para que su dominio en Route53 acceda a la aplicación alojada en el clúster de EKS.

Proceso de implementación

Realice lo siguiente para implementar la solución:

  1. Implemente instancias de Citrix ADC VPX.

  2. Implemente el Citrix Ingress Controller.

  3. Configure Amazon Elastic Load Balancing. Puede configurar el equilibrador de carga de red o el equilibrador de carga clásico.

  4. Compruebe la solución.

Implementar instancias de Citrix ADC VPX

Citrix ADC VPX está disponible como plantilla de CloudFormation. La plantilla de CloudFormation implementa una instancia de Citrix ADC VPX con un solo ENI en una subred determinada. También configura el NSIP, el VIPy el SNIP para la instancia de Citrix ADC VPX.

Para esta solución, debe implementar dos instancias de Citrix ADC VPX. Implemente las instancias de Citrix ADC VPX en dos zonas de disponibilidad especificando el mismo Citrix ADC VPX y una subred pública diferente.

Después de implementar las instancias de Citrix ADC VPX, puede verificar la implementación revisando el resultado de la plantilla de CloudFormation, como se muestra en la siguiente captura de pantalla. El resultado debe mostrar las distintas direcciones IP (VIP, SNIP y NSIP) configuradas para las instancias de Citrix VPX:

Salida de plantilla de CloudFormation

Nota:

La plantilla de CloudFormation implementa la instancia de Citrix ADC VPX con la dirección IP principal de la instancia EC2 de Citrix ADC VPX como VIP y la dirección IP secundaria como dirección IP de administración.

Una vez que las instancias de Citrix ADC VPX se implementen correctamente, debe modificar los grupos de seguridad para permitir el tráfico del grupo de seguridad del grupo de nodos de EKS. Además, debe cambiar el grupo de seguridad del grupo de nodos EKS para permitir el tráfico de las instancias VPX.

Implementar el Citrix Ingress Controller

Implemente una instancia separada del Citrix Ingress Controller para cada instancia de Citrix ADC VPX. Siga las instrucciones de implementación para implementar el Citrix Ingress Controller.

Cuando la instancia de Citrix ADC VPX esté activa, debe configurar una cuenta de usuario del sistema en las instancias de Citrix ADC VPX. El Citrix Ingress Controller utiliza la cuenta de usuario del sistema para iniciar sesión en las instancias de Citrix ADC VPX. Para obtener instrucciones sobre cómo configurar la cuenta de usuario del sistema, consulte Crear una cuenta de usuario del sistema para CIC en Citrix ADC.

  1. Modifique el YAML de implementación Citrix Ingress Controller deCitrix (citrix-ingress-controller.yaml).

    NS_IP Reemplace por la dirección Private NSIP de la instancia de Citrix ADC VPX respectiva. Además, proporcione el nombre de usuario y la contraseña de la cuenta de usuario del sistema que ha creado en la instancia de Citrix ADC VPX. Una vez modificado el archivo citrix-ingress-controller.yaml, implemente el archivo YAML actualizado con el siguiente comando:

    kubectl apply -f citrix-ingress-controller .yaml
    
  2. Realice el paso 1 en la segunda instancia del Citrix Ingress Controller.

  3. Asegúrese de que ambos pods estén en funcionamiento. Además, compruebe si el Citrix Ingress Controller puede conectarse a la instancia de Citrix ADC VPX respectiva mediante los registros:

    kubectl logs <cic_pod_name>
    

Después de que los pods del Citrix Ingress Controller se implementen y ejecuten en el clúster de EKS. Cualquier recurso de Kubernetes Ingress configurado con la clase de citrix entrada se configura automáticamente en ambas instancias de Citrix ADC VPX.

Configurar el equilibrio de carga elástico

En función de sus requisitos, puede configurar cualquiera de los siguientes equilibradores de carga:

  • Balanceadores de carga de red
  • Balanceadores de carga clásicos

Configurar el equilibrador de carga de red

El equilibrador de carga de red (NLB) es una buena opción para gestionar el equilibrio de carga de la conexión TCP. En esta solución, NLB se usa para aceptar el tráfico entrante y redirigirlo a una de las instancias de Citrix ADC VPX. Balanceos de carga de NLB mediante el algoritmo de hash de flujo basado en el protocolo, la dirección IP de origen, el puerto de origen, la dirección IP de destino, el puerto de destino y el número de secuencia TCP.

Para configurar NLB:

  1. Inicie sesión en la AWS Management Console para EC2.

  2. En la barra de navegación izquierda, haga clic en Target Group. Crea dos grupos objetivo diferentes. Un grupo de destino (Target-Group-80) para redirigir el tráfico en el puerto 80 y el otro grupo de destino (Target-Group-443) para redirigir el tráfico en 443, respectivamente.

    Grupo objetivo

  3. Cree un grupo objetivo denominado *Target-Group-80. Lleve a cabo lo siguiente:

    1. En el campo Nombre del grupo objetivo, introduzca el nombre del grupo objetivo como Target-Group-80.
    2. En el campo Tipo de destino, seleccione Instancia.
    3. En la lista Protocolo, selecciona TCP.
    4. En el campo Puerto, introduzca 80.
    5. En la lista de VCP, seleccione la VPC en la que implementó el clúster de EKS.
    6. En la sección Configuración de la verificación de estado, use TCP para la verificación de estado.
    7. Opcional. Puede modificar la configuración de la verificación de estado avanzada para configurar las verificaciones de estado.

      Grupo objetivo 80

  4. Cree un grupo objetivo denominado *Target-Group-443. Lleve a cabo lo siguiente:

    1. En el campo Nombre del grupo objetivo, introduzca el nombre del grupo objetivo como Target-Group-443.
    2. En el campo Tipo de destino, seleccione Instancia.
    3. En la lista Protocolo, selecciona TCP.
    4. En el campo Puerto, ingresa 443.
    5. En la lista de VCP, seleccione la VPC en la que implementó el clúster de EKS.
    6. En la sección Configuración de la verificación de estado, use TCP para la verificación de estado.
    7. Opcional. Puede modificar la configuración de la verificación de estado avanzada para configurar las verificaciones de estado.

      Grupo objetivo 80

  5. Una vez que haya creado los grupos de destino, debe registrar las instancias de destino.
    1. Seleccione el grupo objetivo creado en la página de lista, haga clic en la ficha Destino y seleccione Modificar.
    2. En la ficha Instances, seleccione las dos instancias de Citrix ADC VPX y haga clic en Add to registered.
  6. Repita el paso 5 para el otro grupo objetivo que haya creado.

  7. Cree el equilibrador de carga de red.

    1. En la barra de navegación izquierda, selecciona Equilibradores de cargay, a continuación, haga clic en Crear equilibrador de carga.
    2. En la ventana Seleccionar tipo de equilibrador de carga, haga clic en Crearen el panel Equilibrador de carga de red.

      Crear equilibrador de carga de red

  8. En la página Configurar equilibrador de carga, haga lo siguiente:

    1. En el campo Nombre, introduzca un nombre para el equilibrador de carga.
    2. En el campo Esquema, seleccione conexión a Internet.
    3. En la sección Listeners, haga clic en Add listener y agrega dos entradas TCP como protocolo de equilibrador de carga 80 y 443 como puerto de equilibrador de carga respectivamente, como se muestra en la siguiente imagen:

      Agregar oyente

    4. En la sección Zonas de disponibilidad, seleccione la VPC, las zonas de disponibilidad y las subredes en las que se implementan las instancias de Citrix ADC VPX.

      Zonas de disponibilidad

  9. En la página Configurar redirección, haga lo siguiente:

    1. En la lista Grupo objetivo, haga clic en Grupo objetivo existente.
    2. En el campo Nombre, introduzca Target-Group-80.
    3. En el campo Tipo de destino, seleccione Instancia.
    4. En la lista Protocolo, selecciona TCP.
    5. En el campo Puerto, introduzca 80.
    6. Seleccione TCP en la lista Protocolo de la sección Comprobaciones de estado, como se muestra en la siguiente imagen:

      Configurar redirección

  10. En la página Revisar, revise su configuración y haga clic en Crear.

    Reseña

  11. Después de crear el equilibrador de carga de red, seleccione el equilibrador de carga que ha creado para la página de lista. Seleccione la ficha Escuchas, seleccione TCP: 444 y, a continuación, haga clic en Modificar.

    Ficha Listener

  12. En la página Escuchas, elimine la acción predeterminada y, a continuación, seleccione Target-Group-443 en la lista Reenviar a.

    Reenviar a

  13. Haga clic en Update.

Configurar el equilibrador de carga clásico

Como alternativa al equilibrador de carga de Amazon Network, puede configurar Classic Load Balancer (CLB) como equilibrador de carga TCP de nivel 1.

  1. Inicie sesión en la AWS Management Console para EC2.

  2. En la barra de navegación izquierda, selecciona Equilibradores de cargay, a continuación, haga clic en Crear equilibrador de carga.

    Configuración de Classic Load Balancer

  3. En la ventana Seleccionar tipo de equilibrador de carga, haga clic en Crear en el panel Equilibrador de carga clásico.

    Crear equilibrador de carga clásico

  4. En la página Definir equilibrador de carga, haga lo siguiente:

    1. En el campo Nombre del equilibrador de carga, introduzca un nombre para el equilibrador de carga.

    2. En la lista Crear LB Inside, seleccione su Citrix ADC VPX.

    3. En la sección Configuración del agente de escucha, haga clic en Agregar y agregue dos entradas con TCP el protocolo del equilibrador de carga 80 y 443 el puerto del equilibrador de carga respectivamente. Además, seleccione TCP como protocolo de instancia 80 y 443 como puerto de instancia, respectivamente, como se muestra en la siguiente imagen:

      Definir equilibrador de carga clásico

    4. En la sección Seleccionar subredes, seleccione dos subredes públicas en dos zonas de disponibilidad diferentes para que el equilibrador de carga clásico redirija el tráfico. Estas subredes son las mismas que en las que implementó las instancias de Citrix ADC VPX.

      Selección clásica de subred

    5. En la página Asignar grupos de seguridad, seleccione un grupo de seguridad para la instancia de ELB. El grupo de seguridad puede ser el mismo que el grupo de seguridad adjunto a Citrix ADC VPX ENI o puede ser un grupo de seguridad nuevo. Si utiliza un grupo de seguridad nuevo, asegúrese de permitir el tráfico al grupo de seguridad Citrix ADC VPX desde el grupo de seguridad ELB y viceversa.

      Asignar grupo de seguridad clásico

    6. En la página Configurar comprobación de estado, seleccione la configuración para la comprobación de estado. De forma predeterminada, la verificación de estado se establece como TCP en el puerto 80, opcionalmente también puede realizar la verificación de estado en el puerto 443.

      Chequeo de salud clásico

    7. En la página Agregar instancias EC2, seleccione dos instancias de Citrix ADC VPX que se implementaron anteriormente.

      ![Classic ADD EC2 Instances](/en-us/citrix-k8s-ingress-controller/media/classic-add-ec2.png)
      
    8. En la página Agregar etiquetas, agregue etiquetas según sus requisitos.

    9. En la página Revisar, revise sus configuraciones.

    10. Haga clic en Create.

Comprobar la solución

Después de implementar correctamente Citrix ADC VPX, AWS ELB y el Citrix Ingress Controller, puede verificar la solución mediante un servicio de muestra.

Lleve a cabo lo siguiente:

  1. Implementa un servicio de muestra y una entrada con app.yaml.

    kubectl apply -f app.yaml
    
  2. Inicie sesión en la instancia de Citrix ADC VPX y compruebe si el servidor virtual de Content Switching se ha configurado correctamente tanto en la instancia de Citrix ADC VPX. Haga lo siguiente:

    1. Inicie sesión en la instancia de Citrix ADC VPX. Lleve a cabo lo siguiente:
      1. Use un cliente SSH, como PuTTY, para abrir una conexión SSH a la instancia de Citrix ADC VPX.

      2. Inicie sesión en la instancia con las credenciales de administrador.

    2. Compruebe si el vserver de Content Switching (cs) está configurado en la instancia mediante el siguiente comando:

          sh cs vserver
      

      Salida:

         1) k8s-10.0.139.87:80:http (10.0.139.87:80) - HTTP Type: CONTENT
                  State: UP
                  Last state change was at Fri Apr 12 14:24:13 2019
                  Time since last state change: 3 days, 03:09:18.920
                  Client Idle Timeout: 180 sec
                  Down state flush: ENABLED
                  Disable Primary Vserver On Down : DISABLED
                  Comment: uid=NNJRYQ54VM2KWCXOERK6HRJHR4VEQYRI7U3W4BNFQLTIAENMTHWA====
                  Appflow logging: ENABLED
                  Port Rewrite : DISABLED
                  State Update: DISABLED
                  Default:  Content Precedence: RULE
                  Vserver IP and Port insertion: OFF
                  L2Conn: OFF Case Sensitivity: ON
                  Authentication: OFF
                  401 Based Authentication: OFF
                  Push: DISABLED Push VServer:
                  Push Label Rule: none
                  Listen Policy: NONE
                  IcmpResponse: PASSIVE
                  RHIstate:  PASSIVE
                  Traffic Domain: 0 
      
    3. Acceda a la aplicación test.example.com con el nombre DNS de la instancia de ELB.

          # curl -H 'Host: test.example.com' <DNS name of the ELB>
      

      Ejemplo:

          % curl -H 'Host: test.example.com' http://VPX-HA-829787521.us-west-2.elb.amazonaws.com
      
    4. Para eliminar la implementación, use el siguiente comando:

          kubectl delete -f app.yaml
      

Solución de problemas

Problema Resolución
Fallo en la pila de Cloud Asegúrese de que el usuario o el rol de IAM tengan los privilegios suficientes para crear instancias de EC2 y configuraciones de Lambda.
  Asegúrese de que no ha superado la cuota de recursos.
Citrix Ingress Controller no puede comunicarse con las instancias de Citrix ADC VPX. Asegúrese de que el nombre de usuario y la contraseña sean correctos en el archivo citrix-ingress-controller.yaml.
  Asegúrese de que el grupo de seguridad Citrix ADC VPX permita el tráfico en el puerto 80 y 443 desde el grupo de seguridad del grupo de nodos EKS.
Los servicios están INACTIVOS en las instancias de Citrix ADC VPX. Asegúrese de que el tráfico de Citrix ADC VPX pueda llegar al clúster de EKS. Modifique el grupo de seguridad del grupo de nodos EKS para permitir el tráfico del grupo de seguridad Citrix ADC VPX.
El tráfico no se redirige a la instancia de Citrix ADC VPX desde ELB. Asegúrese de que el grupo de seguridad de Citrix ADC VPX permita el tráfico del grupo de seguridad ELB.
Implementar Citrix ADC VPX en alta disponibilidad activa-activa en el entorno EKS mediante Amazon ELB y el Citrix Ingress Controller