Contrôleur d'entrée Citrix ADC

Déployer Direct Server Return

Dans un système à équilibrage de charge classique, un équilibreur de charge agit en tant que médiateur entre les serveurs Web et les clients. Les demandes du client entrantes sont reçues par l’équilibreur de charge qui transmet les demandes au serveur approprié avec de légères modifications des paquets de données. Le serveur répond à l’équilibreur de charge avec les données requises, puis l’équilibreur de charge transmet la réponse au client.

Dans un déploiement Direct Server Return (DSR), l’équilibreur de charge transmet la demande du client au serveur, mais le serveur principal envoie directement la réponse au client. L’utilisation de différents chemins réseau pour les demandes et les réponses permet d’éviter des sauts supplémentaires et de réduire la latence. Étant donné que le serveur répond directement au client, le DSR accélère le temps de réponse entre le client et le serveur et supprime également une partie de la charge supplémentaire de l’équilibreur de charge. L’utilisation du DSR est un moyen transparent d’améliorer les performances réseau de vos applications avec peu ou pas de modifications de l’infrastructure. Pour plus d’informations sur le DSR à l’aide de Citrix ADC, consultez la documentation Citrix ADC.

La solution DSR est utile dans les situations suivantes :

  • Tout en gérant des applications qui fournissent un streaming vidéo lorsque la faible latence (temps de réponse) est importante.
  • Cas où l’équilibrage de charge intelligent n’est pas requis
  • Lorsque la capacité de sortie de l’équilibreur de charge peut être le goulot d’étranglement

Toutefois, lorsque vous utilisez le DSR Advanced Layer 7, les fonctionnalités d’équilibrage de charge ne sont pas prises en charge.

Topologie réseau DSR pour Kubernetes à l’aide de Citrix ADC

Dans cette topologie, il existe un équilibreur de charge externe (ADC de niveau 1) qui distribue le trafic vers le ADC d’entrée (ADC de niveau 2) déployé à l’intérieur du cluster Kubernetes sur une superposition (IPIP DSR L3). L’ADC de niveau 2 récupère le paquet, le décapsule et effectue un équilibrage de charge entre les services. Le ADC de niveau 2 envoie le trafic de retour du service au client au lieu de l’envoyer via le ADC de niveau 1.

DSR_Traffic_Flow

Déploiement de DSR pour les applications natives du cloud à l’aide de Citrix ADC

Suivez les étapes décrites dans les sections suivantes pour déployer le DSR pour les applications déployées sur le cluster Kubernetes.

Déployer Citrix ADC CPX en tant que ADC de niveau 2

Cette section décrit les étapes permettant de créer les configurations requises sur le périphérique d’entrée pour la topologie DSR.

  1. Créez un espace de noms pour le DSR à l’aide de la commande suivante :

    kubectl apply -f  https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/dsr_namespace.yaml
    
  2. Créez un ConfigMap à l’aide de la commande suivante.

    kubectl apply -f  https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/cpx_config.yaml  -n dsr
    

    Remarque :

    Dans cet exemple, le réseau Citrix Node Controller est configuré en tant que 192.168.1.0/24. Par conséquent, la commande pour créer un tunnel IP est fournie en tant que add iptunnel dsr 192.168.1.254 255.255.255.0 *. Vous devez spécifier la valeur en fonction de votre configuration CNC.

  3. Déployez Citrix ADC CPX sur l’espace de noms dsr.

    kubectl apply -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/citrix-k8s-cpx-ingress.yml  -n dsr
    

Déploiement d’un exemple d’application sur le cluster Kubernetes

Suivez les étapes de cette section pour déployer un exemple d’application sur un cluster Kubernetes.

  1. Déployez l’application livre d’or à l’aide de la commande suivante.

    kubectl apply -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/guestbook-all-in-one.yaml  -n dsr 
    
  2. Exposez l’application livre d’or à l’aide d’Ingress.

    1. Téléchargez le fichier YAML d’entrée du livre d’or à l’aide de la commande suivante.

      wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/guestbook-all-in-one.yaml
      
    2. Modifiez et fournissez l’adresse IP du DSR ou l’adresse IP publique par laquelle vous accédez à votre application à l’aide ingress.citrix.com/frontend-ip: des annotations.

      ingress.citrix.com/frontend-ip: "<ip-address>"
      
    3. Enregistrez le fichier YAML et déployez la ressource Ingress à l’aide de la commande suivante.

      kubectl apply -f guestbook-ingress.yaml -n dsr
      

Établir la connectivité réseau entre les ADC de niveau 1 et de niveau 2

Suivez les étapes de cette section pour établir la connectivité réseau entre les ADC de niveau 1 et de niveau 2.

  1. Téléchargez le fichier YAML pour déployer Citrix Node Controller à l’aide de la commande suivante.

    wget https://raw.githubusercontent.com/citrix/citrix-k8s-node-controller/master/deploy/citrix-k8s-node-controller.yaml
    
  2. Modifiez le fichier YAML et fournissez les valeurs des arguments NS_IP, NS_USER, NS_PASSWORD et REMOTE_VTEPIP. Pour plus d’informations, consultez Citrix Node Controller.

  3. Enregistrez le fichier YAML et déployez le Citrix Node Controller.

       kubectl create -f citrix-k8s-node-controller.yaml -n dsr
    

Déployez le Citrix ingress controller pour l’ADC de niveau 1 et exposez Citrix ADC CPX en tant que service

Effectuez les étapes suivantes pour déployer le Citrix ingress controller en tant qu’espace autonome et créer une ressource d’entrée pour Citrix ADC CPX de niveau 2.

  1. Téléchargez le fichier YAML Citrix Ingress Controller à l’aide de la commande suivante.

        wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/citrix-k8s-ingress-controller.yaml
    
  2. Modifiez le fichier YAML et mettez à jour les valeurs suivantes pour Citrix Ingress Controller.

    • NS_IP
    • NS_USER
    • NS_PASSWORD

    Pour plus d’informations, consultez Déployer le Citrix ingress controller à l’aide de YAML.

  3. Enregistrez le fichier YAML et déployez le Ingress Controller Citrix.

       kubectl create -f citrix-k8s-ingress-controller.yaml -n dsr
    
  4. Créez une configuration DSR sur un ADC de niveau 1 en créant une ressource d’entrée pour le Citrix ADC CPX de niveau 2.

      wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/vpx-ingress.yaml 
    
  5. Modifiez le fichier YAML et fournissez le DSR ou l’adresse IP publique par laquelle l’utilisateur accède à votre application à l’aide de l’annotation ingress.citrix.com/frontend-ip:. Cette adresse IP doit être identique à l’adresse IP que vous avez spécifiée à l’étape 2.

      kubectl apply -f vpx-ingress.yaml  -n dsr
    

Tester le déploiement du DSR

Pour tester le déploiement DSR, accédez à l’application à partir d’un navigateur à l’aide de l’adresse IP spécifiée pour l’annotation ingress.citrix.com/frontend-ip:. Une page de livre d’or est remplie.

Un exemple de sortie est donné comme suit :

ApplicationOutput

Résolution des problèmes

Lorsque vous testez l’application, il se peut qu’elle ne remplisse aucune page même si toutes les configurations requises ont été créées. Cela est dû rp_filter<!--NeedCopy--> aux règles de l’hôte. Si vous rencontrez un tel problème, utilisez les commandes suivantes sur tous les hôtes pour désactiver les règles.

    sysctl -w net.ipv4.conf.all.rp_filter=0
    sysctl -w net.ipv4.conf.cni0.rp_filter=0
    sysctl -w net.ipv4.conf.eth0.rp_filter=0
    sysctl -w net.ipv4.conf.cni0.rp_filter=0
    sysctl -w net.ipv4.conf.default.rp_filter=0
Déployer Direct Server Return