Contrôleur d'entrée Citrix ADC

Déployer Citrix ADC VPX en haute disponibilité active-active dans un environnement EKS à l’aide d’Amazon ELB et du Citrix ingress controller

La rubrique couvre une solution permettant de déployer Citrix ADC VPX en mode haute disponibilité actif-actif sur plusieurs zones de disponibilité dans la plate-forme AWS Elastic Container Service (EKS). La solution combine AWS Elastic Load Balancing (ELB) et Citrix ADC VPX pour équilibrer la charge du trafic entrant vers les microservices déployés dans le cluster EKS. AWS ELB gère le trafic de couche 4 et les Citrix ADC VPX fournissent des fonctionnalités avancées de couche 7 telles que l’équilibrage de charge avancé, la mise en cache et le routage basé sur le contenu.

Aperçu de la solution

Une architecture de base d’un cluster EKS inclurait trois sous-réseaux publics et trois sous-réseaux privés déployés sur trois zones de disponibilité, comme indiqué dans le diagramme suivant :

Architecture d'EKS

Avec cette solution, l’architecture du cluster EKS serait celle illustrée dans le schéma suivant :

Architecture de la solution

Dans le cloud AWS, AWS Elastic Load Balancing gère les connexions TCP de couche 4 et équilibre la charge du trafic à l’aide d’un algorithme de routage de hachage de flux. L’ELB peut être soit un équilibreur de charge réseau, soit un équilibreur de charge classique.

AWS ELB écoute les connexions entrantes telles que définies par ses écouteurs. Chaque écouteur transmet une nouvelle connexion à l’une des instances Citrix ADC VPX disponibles. L’instance Citrix ADC VPX équilibre la charge du trafic vers les espaces EKS. Il exécute également d’autres fonctionnalités de couche 7 telles que la stratégie de réécriture, la stratégie de répondeur, le déchargement SSL, etc. fournies par Citrix ADC VPX.

Un Citrix ingress controller est déployé dans le cluster EKS pour chaque instance Citrix ADC VPX. Les contrôleurs d’entrée Citrix sont configurés avec la même classe d’entrée. De plus, il configure les objets Ingress dans le cluster EKS sur les instances Citrix ADC VPX respectives.

AWS Elastic Load Balancing (ELB) possède un nom DNS auquel une adresse IP est attribuée dynamiquement. Le nom DNS peut être ajouté en tant qu’enregistrement Alias A pour votre domaine dans Route53 afin d’accéder à l’application hébergée dans le cluster EKS.

Processus de déploiement

Effectuez les opérations suivantes pour déployer la solution :

  1. Déployez des instances Citrix ADC VPX.

  2. Déployez le Citrix ingress controller.

  3. Configurez Amazon Elastic Load Balancing. Vous pouvez configurer un équilibreur de charge réseau ou un équilibreurde charge classique.

  4. Vérifiez la solution.

Déployer des instances Citrix ADC VPX

Citrix ADC VPX est disponible en tant que modèle CloudFormation. Le modèle CloudFormation déploie une instance de Citrix ADC VPX avec un seul ENI sur un sous-réseau donné. Il configure également le NSIP, le VIPet le SNIP pour l’instance Citrix ADC VPX.

Pour cette solution, vous devez déployer deux instances de Citrix ADC VPX. Déployez les instances Citrix ADC VPX sur deux zones de disponibilité en spécifiant le même Citrix ADC VPX et un sous-réseau public différent.

Après avoir déployé les instances Citrix ADC VPX, vous pouvez vérifier le déploiement en examinant la sortie du modèle CloudFormation, comme indiqué dans la capture d’écran suivante. La sortie doit afficher les différentes adresses IP (VIP, SNIP et NSIP) configurées pour les instances Citrix VPX :

Sortie du modèle CloudFormation

Remarque :

Le modèle CloudFormation déploie l’instance Citrix ADC VPX avec l’adresse IP principale de l’instance EC2 Citrix ADC VPX en tant qu’adresse IP VIP et l’adresse IP secondaire en tant qu’adresse IP de gestion.

Une fois les instances Citrix ADC VPX déployées avec succès, vous devez modifier les groupes de sécurité pour autoriser le trafic du groupe de sécurité du groupe de nœuds EKS. Vous devez également modifier le groupe de sécurité du groupe de nœuds EKS pour autoriser le trafic provenant d’instances VPX.

Déployer le Citrix ingress controller

Déployez une instance distincte de Citrix ingress controller pour chaque instance Citrix ADC VPX. Suivez les instructions de déploiement pour déployer le Citrix ingress controller.

Une fois l’instance Citrix ADC VPX activée, vous devez configurer un compte d’utilisateur système sur les instances Citrix ADC VPX. Le compte d’utilisateur système est utilisé par le Citrix ingress controller pour se connecter aux instances Citrix ADC VPX. Pour obtenir des instructions sur la configuration du compte d’utilisateur système, consultez Créer un compte d’utilisateur système pour CIC dans Citrix ADC.

  1. Modifiez le déploiement du Citrix ingress controller YAML (citrix-ingress-controller.yaml).

    Remplacez NS_IP par l’adresse Private NSIP de l’instance Citrix ADC VPX respective. Fournissez également le nom d’utilisateur et le mot de passe du compte d’utilisateur système que vous avez créés sur l’instance Citrix ADC VPX. Une fois le fichier citrix-ingress-controller.yaml édité, déployez le fichier YAML mis à jour à l’aide de la commande suivante :

    kubectl apply -f citrix-ingress-controller .yaml
    
  2. Effectuez l’étape 1 sur la deuxième instance de Citrix ingress controller.

  3. Assurez-vous que les deux modules sont opérationnels. Vérifiez également si le Citrix ingress controller est capable de se connecter à l’instance Citrix ADC VPX respective à l’aide des journaux :

    kubectl logs <cic_pod_name>
    

Après le déploiement et l’exécution des espaces du Citrix ingress controller dans le cluster EKS. Toute ressource Kubernetes Ingress configurée avec la classe d’entrée citrix est automatiquement configurée sur les deux instances Citrix ADC VPX.

Configuration de l’équilibrage de charge élastique

Selon vos besoins, vous pouvez configurer l’un des équilibreurs de charge suivants :

  • Équilibreurs de charge réseau
  • Équilibreurs de charge classiques

Configurer l’équilibreur de charge réseau

L’équilibrage de charge réseau (NLB) est une bonne option pour gérer l’équilibrage de charge des connexions TCP. Dans cette solution, l’équilibrage de la charge réseau est utilisé pour accepter le trafic entrant et l’acheminer vers l’une des instances Citrix ADC VPX. Équilibrage de charge NLB à l’aide de l’algorithme de hachage de flux basé sur le protocole, l’adresse IP source, le port source, l’adresse IP de destination, le port de destination et le numéro de séquence TCP.

Pour configurer l’équilibrage de la charge réseau :

  1. Connectez-vous à AWS Management Console pour EC2.

  2. Dans la barre de navigation de gauche, cliquez sur Groupe cible. Créez deux groupes cibles différents. Un groupecible (groupe-cible-80) pour le routage du trafic sur le port 80 et l’autre groupecible (groupe-cible-443) pour le routage du trafic sur 443, respectivement.

    Groupe cible

  3. Créez un groupe cible nommé *Groupe-cible-80. Procédez comme suit :

    1. Dans le champ Nom du groupe cible, saisissez le nom du groupe cible sous la forme Groupe-cible-80.
    2. Dans le champ Type de cible, sélectionnez Instance.
    3. Dans la liste Protocol, sélectionnez TCP.
    4. Dans le champ Port, saisissez 80.
    5. Dans la liste VCP, sélectionnez le VPC sur lequel vous avez déployé votre cluster EKS.
    6. Dans la section Paramètres du bilan de santé, utilisez TCP pour le contrôle de santé.
    7. Facultatif. Vous pouvez modifier les paramètres du contrôle de santé avancé pour configurer les contrôles de santé.

      Groupe cible 80

  4. Créez un groupe cible nommé *Groupe-cible-443. Procédez comme suit :

    1. Dans le champ Nom du groupe cible, saisissez le nom du groupe cible sous la forme Groupe-cible-443.
    2. Dans le champ Type de cible, sélectionnez Instance.
    3. Dans la liste Protocol, sélectionnez TCP.
    4. Dans le champ Port, saisissez 443.
    5. Dans la liste VCP, sélectionnez le VPC sur lequel vous avez déployé votre cluster EKS.
    6. Dans la section Paramètres du bilan de santé, utilisez TCP pour le contrôle de santé.
    7. Facultatif. Vous pouvez modifier les paramètres du contrôle de santé avancé pour configurer les contrôles de santé.

      Groupe cible 80

  5. Une fois que vous avez créé les groupes cibles, vous devez enregistrer les instances cibles.
    1. Sélectionnez le groupe cible créé dans la page de liste, cliquez sur l’onglet Cible, puis sélectionnez Modifier.
    2. Dans l’onglet Instances, sélectionnez les deux instances Citrix ADC VPX et cliquez sur Ajouter aux instances enregistrées.
  6. Répétez l’ étape 5 pour l’autre groupe cible que vous avez créé.

  7. Créez un équilibreur de charge réseau.

    1. Dans la barre de navigation de gauche, sélectionnez Équilibreursde charge, puis cliquez sur Créer un équilibreurde charge.
    2. Dans la fenêtre Sélectionner le type d’équilibreur de charge, cliquez sur Créerdans le panneau Équilibreur de charge réseau.

      Créer un équilibreur de charge réseau

  8. Sur la page Configurer l’équilibreur de charge, procédez comme suit :

    1. Dans le champ Nom, saisissez le nom de l’équilibreur de charge.
    2. Dans le champ Schéma, sélectionnez Face à Internet.
    3. Dans la section Écouteurs, cliquez sur Ajouter un écouteur et ajoutez deux entrées avec TCP respectivement comme protocole d’équilibrage de charge 80 et 443 comme port d’équilibrage de charge, comme indiqué dans l’image suivante :

      Ajouter un écouteur

    4. Dans la section Zones de disponibilité, sélectionnez le VPC, les zones de disponibilité et les sous-réseaux sur lesquels les instances Citrix ADC VPX sont déployées.

      Zones de disponibilité

  9. Sur la page Configurer le routage, procédez comme suit :

    1. Dans la liste Groupe cible, cliquez sur Groupe cible existant.
    2. Dans le champ Nom, saisissez Groupe-cible-80.
    3. Dans le champ Type de cible, sélectionnez Instance.
    4. Dans la liste Protocole, sélectionnez TCP.
    5. Dans le champ Port, saisissez 80.
    6. Sélectionnez TCP dans la liste Protocole de la section Vérifications de santé, comme indiqué dans l’image suivante :

      Configurer le routage

  10. Sur la page Révision, vérifiez votre configuration et cliquez sur Créer.

    Critique

  11. Une fois l’équilibrage de charge réseau créé, sélectionnez l’équilibreur de charge que vous avez créé pour la page de liste. Sélectionnez l’ onglet Écouteurs, TCP : 444, puis cliquez sur Modifier.

    Onglet Listener

  12. Sur la page Écouteurs, supprimez l’action par défaut, puis sélectionnez Groupe-cible-443 dans la liste Transférer à .

    Avancer vers

  13. Cliquez sur Update.

Configurer un équilibreur de charge classique

À la place de l’équilibreur de charge réseau Amazon, vous pouvez configurer Classic Load Balancer (CLB) en tant qu’équilibreur de charge TCP de niveau 1.

  1. Connectez-vous à AWS Management Console pour EC2.

  2. Dans la barre de navigation de gauche, sélectionnez Équilibreursde charge, puis cliquez sur Créer un équilibreurde charge.

    Configuration de Classic Load Balancer

  3. Dans la fenêtre Sélectionner le type d’équilibreur de charge, cliquez sur Créer dans le panneau Équilibreur de charge classique.

    Création d'équilibreur de charge classique

  4. Sur la page Définir un équilibreur de charge, procédez comme suit :

    1. Dans le champ Nom de l’équilibreur de charge, saisissez un nom pour l’équilibreur de charge.

    2. Dans la liste Créer LB Inside, sélectionnez votre Citrix ADC VPX.

    3. Dans la section Configuration du module d’écoute, cliquez sur Ajouter et ajoutez deux entrées avec TCP respectivement comme protocole d’équilibrage de charge 80 et 443 comme port d’équilibrage de charge. Sélectionnez également TCP comme protocole d’instance 80 et 443 comme port d’instance respectivement, comme indiqué dans l’image suivante :

      Équilibreur de charge de définition classique

    4. Dans la section Sélectionner des sous-réseaux, sélectionnez deux sous-réseaux publics dans deux zones de disponibilité différentes pour que l’équilibreur de charge classique achemine le trafic. Ces sous-réseaux sont identiques à ceux où vous avez déployé les instances Citrix ADC VPX.

      Sous-réseau Classic Select

    5. Sur la page Affecter des groupes de sécurité, sélectionnez un groupe de sécurité pour l’instance ELB. Le groupe de sécurité peut être le même que le groupe de sécurité attaché à Citrix ADC VPX ENI ou il peut s’agir d’un nouveau groupe de sécurité. Si vous utilisez un nouveau groupe de sécurité, assurez-vous d’autoriser le trafic vers le groupe de sécurité Citrix ADC VPX à partir du groupe de sécurité ELB et inversement.

      Groupe de sécurité Classic Assign

    6. Sur la page Configurer le bilan de santé, sélectionnez la configuration pour la vérification de l’état. Par défaut, la vérification de l’état est définie TCP sur le port 80, vous pouvez également effectuer la vérification de l’état sur 443 le port.

      Bilan de santé classique

    7. Sur la page Ajouter des instances EC2, sélectionnez deux instances Citrix ADC VPX qui ont été déployées précédemment.

      ![Classic ADD EC2 Instances](/en-us/citrix-k8s-ingress-controller/media/classic-add-ec2.png)
      
    8. Sur la page Ajouter des balises, ajoutez des balises selon vos besoins.

    9. Sur la page Révision, passez en revue vos configurations.

    10. Cliquez sur Créer.

Vérifiez la solution

Après avoir déployé avec succès Citrix ADC VPX, AWS ELB et Citrix ingress controller, vous pouvez vérifier la solution à l’aide d’un exemple de service.

Procédez comme suit :

  1. Déployez un exemple de service et d’entrée à l’aide de app.yaml.

    kubectl apply -f app.yaml
    
  2. Ouvrez une session sur l’instance Citrix ADC VPX et vérifiez si le vserver de commutation de contenu est correctement configuré sur l’instance Citrix ADC VPX. Procédez comme suit :

    1. Ouvrez une session sur l’instance Citrix ADC VPX. Procédez comme suit :
      1. Utilisez un client SSH, tel que PuTTY, pour ouvrir une connexion SSH à l’instance Citrix ADC VPX.

      2. Ouvrez une session sur l’instance à l’aide des informations d’identification de l’administrateur.

    2. Vérifiez si le vserver de commutation de contenu (cs) est configuré sur l’instance à l’aide de la commande suivante :

          sh cs vserver
      

      Sortie :

         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. Accédez à l’application test.example.com à l’aide du nom DNS de l’instance ELB.

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

      Exemple :

          % curl -H 'Host: test.example.com' http://VPX-HA-829787521.us-west-2.elb.amazonaws.com
      
    4. Pour supprimer le déploiement, utilisez la commande suivante :

          kubectl delete -f app.yaml
      

Résolution des problèmes

Problème Résolution
Panne de la pile CloudFormation Assurez-vous que l’utilisateur ou le rôle IAM dispose de privilèges suffisants pour créer des instances EC2 et des configurations Lambda.
  Vérifiez que vous n’avez pas dépassé le quota de ressources.
Le Citrix ingress controller ne peut pas communiquer avec les instances Citrix ADC VPX. Vérifiez que le nom d’utilisateur et le mot de passe sont corrects dans le fichier citrix-ingress-controller.yaml.
  Assurez-vous que le groupe de sécurité Citrix ADC VPX autorise le trafic sur le port 80 et en 443 provenance du groupe de sécurité du groupe de nœuds EKS.
Les services sont en panne dans les instances Citrix ADC VPX. Assurez-vous que le trafic Citrix ADC VPX peut atteindre le cluster EKS. Modifiez le groupe de sécurité du groupe de nœuds EKS pour autoriser le trafic provenant du groupe de sécurité Citrix ADC VPX.
Le trafic n’est pas acheminé vers l’instance Citrix ADC VPX depuis l’ELB. Assurez-vous que le groupe de sécurité de Citrix ADC VPX autorise le trafic provenant du groupe de sécurité ELB.
Déployer Citrix ADC VPX en haute disponibilité active-active dans un environnement EKS à l’aide d’Amazon ELB et du Citrix ingress controller