Contrôleur d'entrée Citrix ADC

Solution Citrix Ingress à un niveau pour MongoDB

MongoDB est l’une des bases de données NoSQL les plus populaires, conçue pour traiter et stocker d’énormes quantités de données non structurées. Les applications natives du cloud utilisent largement MongoDB en tant que base de données NoSQL sur la plateforme Kubernetes.

L’identification et le dépannage des problèmes de performances constituent un défi dans un environnement Kubernetes en raison de l’ampleur considérable des déploiements d’applications. Pour les déploiements de bases de données tels que MongoDB, la surveillance est un élément essentiel de l’administration des bases de données pour garantir que les exigences de haute disponibilité et de haute performance sont respectées.

Citrix fournit une solution d’entrée pour l’équilibrage de charge et la surveillance des bases de données MongoDB sur une plate-forme Kubernetes à l’aide des fonctionnalités avancées d’équilibrage de charge et de surveillance des performances des Citrix ADC. La solution Citrix Ingress pour MongoDB vous offre une meilleure visibilité sur les transactions MongoDB et vous aide à identifier et à résoudre rapidement les problèmes de performances chaque fois qu’ils surviennent. À l’aide de l’ exportateur d’observabilité Citrix ADC, vous pouvez exporter les transactions MongoDB vers Elasticsearch et les visualiser à l’aide de tableaux de bord Kibana pour obtenir des informations plus détaillées.

Le schéma suivant explique la solution Citrix Ingress pour MongoDB utilisant un déploiement à un niveau de Citrix ADC.

Solution Citrix Ingress pour MongoDB

Dans cette solution, un Citrix ADC VPX est déployé en dehors du cluster Kubernetes (niveau 1) et l’exportateur d’observabilité Citrix ADC est déployé à l’intérieur du cluster Kubernetes.

Le Citrix ADC VPX de niveau 1 achemine le trafic (nord-sud) des clients MongoDB vers les routeurs de requête de base de données Mongo (Mongos) dans le cluster Kubernetes. L’exportateur d’observabilité Citrix est déployé au sein du cluster Kubernetes.

Dans le cadre de ce déploiement, une ressource Ingress est créée pour Citrix ADC VPX (entrée de niveau 1). La ressource d’entrée de niveau 1 définit des règles pour activer l’équilibrage de charge pour le trafic MongoDB sur Citrix ADC VPX et spécifie le port pour Mongo. Chaque fois que le trafic MongoDB arrive sur le port spécifié sur un Citrix ADC VPX, il achemine ce trafic vers l’une des instances de service Mongo mentionnées dans la règle d’entrée. Le service Mongo est exposé par l’administrateur MongoDB et la même instance de service est spécifiée dans l’entrée.

L’instance de l’exportateur d’observabilité Citrix agrège les transactions de Citrix ADC VPX et les télécharge sur le serveur Elasticsearch. Vous pouvez configurer des tableaux de bord Kibana pour visualiser les données requises (par exemple, le temps de réponse aux requêtes, les noms de collection les plus demandés) et les analyser pour obtenir des informations pertinentes. Seules les opérations d’insertion, de mise à jour, de suppression, de recherche et de réponse sont analysées et les métriques sont envoyées à Citrix Observability Exporter.

Conditions préalables

Vous devez suivre les étapes suivantes avant de déployer la solution Citrix Ingress pour MongoDB.

  • Configurer un cluster Kubernetes dans le cloud ou sur site
  • Déployez MongoDB dans le cluster Kubernetes en mode de déploiement en tant que jeu de réplicas fragmentés. Les autres modes de déploiement pour MongoDB ne sont pas pris en charge.

  • Assurez-vous que Elasticsearch est installé et configuré. Utilisez le fichier elasticsearch.yaml pour déployer Elasticsearch.
  • Assurez-vous d’avoir installé Kibana pour visualiser vos données de transaction. Utilisez le fichier kibana.yaml pour déployer Kibana.
  • Déployez une instance de Citrix ADC VPX en dehors du cluster Kubernetes. Pour obtenir des instructions sur la façon de déployer Citrix ADC VPX, consultez Déployer une instance Citrix ADC VPX.

Effectuez les opérations suivantes après avoir déployé Citrix ADC VPX :

  1. Configurez une adresse IP du sous-réseau du cluster Kubernetes en tant que SNIP sur Citrix ADC. Pour plus d’informations sur la configuration des SNIP dans Citrix ADC, consultez Configuration des adresses IP de sous-réseau (SNIP).

  2. Activez l’accès à la gestion pour le SNIP qui est le même sous-réseau du cluster Kubernetes. Le SNIP doit être utilisé comme variable NS_IP dans le fichier YAML du Citrix ingress controller pour permettre au Citrix ingress controller de configurer Citrix ADC de niveau 1.

    Remarque :

    Il n’est pas obligatoire d’utiliser SNIP en tant que NS_IP. Si l’adresse IP de gestion de Citrix ADC est accessible à partir du Citrix ingress controller, vous pouvez utiliser l’adresse IP de gestion en tant que NS_IP.

  3. Créez un compte utilisateur du système Citrix ADC spécifique au Citrix ingress controller. Le Citrix ingress controller utilise le compte d’utilisateur système pour configurer automatiquement le Citrix ADC de niveau 1.

  4. Configurez Citrix ADC VPX pour transférer les requêtes DNS vers les adresses IP de l’espace CoreDNS dans le cluster Kubernetes.

    add dns nameServer <core-dns-pod-ip-address>
    

    Par exemple, si les adresses IP de l’espace sont 192.244.0.2 et 192.244.0.3, configurez les serveurs de noms sur Citrix ADC VPX comme suit :

    add dns nameServer 192.244.0.3
    add dns nameServer 192.244.0.2
    

Déployer la solution Citrix Ingress pour MongoDB

Lorsque vous déployez la solution Citrix Ingress pour MongoDB, vous déployez les composants suivants dans le cluster Kubernetes :

  • Un Citrix ingress controller autonome pour Citrix ADC VPX
  • Une ressource d’entrée pour Citrix ADC VPX
  • Exportateur d’observabilité Citrix ADC

Effectuez les étapes suivantes pour déployer la solution Citrix Ingress pour MongoDB.

  1. Créez un secret Kubernetes avec le nom d’utilisateur et le mot de passe pour Citrix ADC VPX.

    kubectl create secret  generic nslogin --from-literal=username='username' --from-literal=password='mypassword'
    
  2. Téléchargez le fichier cic-configmap.yaml, puis déployez-le à l’aide de la commande suivante.

    kubectl create -f cic-configmap.yaml
    
  3. Déployez le Citrix ingress controller en tant qu’espace en suivant les étapes suivantes.

    1. Téléchargez le fichier manifeste du Citrix ingress controller. Utilisez la commande suivante :

      wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/dual-tier/manifest/tier-1-vpx-cic.yaml
      
    2. Modifiez le fichier manifeste du Citrix ingress controller et entrez les valeurs des variables d’environnement suivantes :

      Variable d’environnement Obligatoire ou facultatif Description
      NS_IP Obligatoire L’adresse IP de l’appliance Citrix ADC. Pour plus de détails, consultez la section Prérequis.
      NS_USER et NS_PASSWORD Obligatoire Le nom d’utilisateur et le mot de passe de l’appliance Citrix ADC VPX ou MPX utilisée comme périphérique d’entrée.
      CONTRAT DE LICENCE Obligatoire Le contrat de licence de l’utilisateur final. Spécifiez la valeur comme Yes.
      NIVEAU DE JOURNAL Facultatif Les niveaux de journal pour contrôler les journaux générés par le Citrix ingress controller. Par défaut, la valeur est définie sur DEBUG. Les valeurs prises en charge sont : CRITICAL, ERROR, WARNING, INFO et DEBUG.
      NS_PROTOCOL et NS_PORT Facultatif Définit le protocole et le port qui doivent être utilisés par le Citrix ingress controller pour communiquer avec Citrix ADC. Par défaut, le Citrix ingress controller utilise HTTPS sur le port 443. Vous pouvez également utiliser HTTP sur le port 80.
      classes d’entrée Facultatif Si plusieurs équilibreurs de charge d’entrée sont utilisés pour équilibrer la charge de différentes ressources d’entrée. Vous pouvez utiliser cette variable d’environnement pour spécifier le Citrix ingress controller afin de configurer Citrix ADC associé à une classe Ingress spécifique. Pour plus d’informations sur les classes Ingress, voir Prise en charge des classes Ingress
      NS_VIP Facultatif Le Citrix ingress controller utilise l’adresse IP fournie dans cette variable d’environnement pour configurer une adresse IP virtuelle pour Citrix ADC qui reçoit le trafic entrant. Remarque : NS_VIP est prioritaire sur l’annotation frontend-ip .
    3. Spécifiez ou modifiez les arguments suivants dans le fichier YAML du Citrix ingress controller.

      args:
       - --configmap
          default/cic-configmap
       - --ingress-classes
          tier-1-vpx                  
      
    4. Déployez le fichier manifeste du Citrix ingress controller mis à jour à l’aide de la commande suivante :

      kubectl create -f tier-1-vpx-cic.yaml
      
  4. Créez un objet Ingress pour Citrix ADC de niveau 1 à l’aide du fichier tier-1-vpx-ingress.yaml .

    kubectl apply -f tier-1-vpx-ingress.yaml 
    

    Voici le contenu du fichier tier-1-vpx-ingress.yaml. Conformément aux règles spécifiées dans cette ressource Ingress, le Citrix ingress controller configure Citrix ADC VPX pour écouter le trafic MongoDB sur le port 27017. Comme indiqué dans cet exemple, vous devez spécifier le service que vous avez créé pour les routeurs de requête MongoDB (par exemple :serviceName: mongodb-mongos) afin que Citrix ADC VPX puisse acheminer le trafic vers celui-ci. mongodb-mongos Voici le service pour les routeurs de requêtes MongoDB.

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          ingress.citrix.com/analyticsprofile: '{"tcpinsight": {"tcpBurstReporting":"DISABLED"}}'
          ingress.citrix.com/insecure-port: "27017"
          ingress.citrix.com/insecure-service-type: mongo
          ingress.citrix.com/insecure-termination: allow
          kubernetes.io/ingress.class: tier-1-vpx
        name: vpx-ingress
      spec:
        defaultBackend:
            service:
              name: mongodb-mongos
              port:
                number: 27017
    
  5. Déployez l’exportateur d’observabilité Citrix ADC avec Elasticsearch comme point de terminaison à l’aide du fichier coe-es-mongo.yaml .

    kubectl apply -f coe-es-mongo.yaml
    

    Remarque :

    Vous devez définir les détails du serveur Elasticsearch dans la variable d’environnement ElkServer en fonction d’une adresse IP ou du nom DNS, ainsi que des informations de port.

Voici un exemple de fichier ConfigMap.


apiVersion: v1
kind: ConfigMap
metadata:
  name: coe-config-es
data:
  lstreamd_default.conf: |
    {
        "Endpoints": {
            "ES": {
                "ServerUrl": "elasticsearch.default.svc.cluster.local:9200",
                "IndexPrefix":"adc_coe",
                "IndexInterval": "daily",
                "RecordType": {
                    "HTTP": "all",
                    "TCP": "all",
                    "SWG": "all",
                    "VPN": "all",
                    "NGS": "all",
                    "ICA": "all",
                    "APPFW": "none",
                    "BOT": "none",
                    "VIDEOOPT": "none",
                    "BURST_CQA": "none",
                    "SLA": "none",
                    "MONGO": "all"
                },
                "ProcessAlways": "no",
                "ProcessYieldTimeOut": "500",
                "MaxConnections": "512",
                "ElkMaxSendBuffersPerSec": "64",
                "JsonFileDump": "no"
            }
        }
    }
<!--NeedCopy-->

Vérifiez le déploiement de la solution Citrix Ingress

Vous pouvez utiliser la commande comme illustré dans l’exemple suivant pour vérifier que toutes les applications sont déployées et répertorier tous les services et ports.

sample-output-mongo-db-services

Vous pouvez utiliser la commande kubectl get ingress comme illustré dans l’exemple suivant pour obtenir des informations sur les objets Ingress déployés.

   # kubectl get ingress

    NAME               HOSTS   ADDRESS   PORTS   AGE
    vpx-ingress        *                 80      22d

Vérifiez l’observabilité du trafic MongoDB

Cette rubrique fournit des informations sur la façon d’obtenir une visibilité sur les transactions MongoDB à l’aide de la solution Citrix Ingress et utilise les tableaux de bord Kibana pour visualiser les statistiques de performance de la base de données.

Avant d’effectuer les étapes décrites dans cette rubrique, assurez-vous que :

  • Vous avez déployé MongoDB en tant que jeu de réplicas fragmentés dans le cluster Kubernetes
  • Déploiement de la solution Citrix Ingress pour MongoDB
  • Une application cliente pour MongoDB est installée pour envoyer du trafic vers MongoDB.
  • Kibana est installé pour la visualisation

Effectuez les étapes suivantes pour vérifier l’observabilité du trafic MongoDB.

  1. Configurez votre application cliente pour que MongoDB pointe vers l’adresse IP virtuelle du Citrix ADC VPX de niveau 1.

    Par exemple :

    mongodb://<vip-of-vpx>:27017/
    
  2. Envoyez plusieurs demandes (par exemple, insertion, mise à jour, suppression) à la base de données MongoDB à l’aide de votre application cliente MongoDB. Les transactions sont téléchargées sur le serveur Elasticsearch.

  3. Configurez un tableau de bord Kibana pour visualiser les transactions MongoDB. Vous pouvez utiliser l’exemple de tableau de bord Kibana suivant.

Tableau de bord Kibana pour MongoDB

Dans ce tableau de bord, vous pouvez consulter les statistiques de performances de votre déploiement MongoDB, y compris les différents types de requêtes et le temps de réponse aux requêtes. L’analyse de ces données vous permet de détecter toute anomalie, telle que la latence d’une transaction, et de prendre des mesures immédiates.

Exporter les données de télémétrie vers Prometheus

Pour votre déploiement Kubernetes, si votre serveur Prometheus est déployé dans le même cluster Kubernetes, vous pouvez configurer des annotations pour permettre à Prometheus d’ajouter automatiquement l’exportateur d’observabilité Citrix ADC en tant que cible de raclage.

Voici un extrait du fichier YAML de l’exportateur d’observabilité Citrix ADC (coe-es-mongodb.yaml) avec ces annotations.

template:
  metadata:
    name: coe-es
    labels:
      app: coe-es
    annotations:
      prometheus.io/scrape: "true"
      prometheus.io/port: "5563"

Vous pouvez également ajouter manuellement l’exportateur d’observabilité Citrix ADC en tant que cible de raclage sur votre fichier de configuration du serveur Prometheus.

Assurez-vous également que les métriques pour Prometheus sont activées dans le fichier cic-configmap.yaml, comme indiqué dans le fichier YAML suivant.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  namespace: default
data:
   NS_ANALYTICS_CONFIG: |
     distributed_tracing:
       enable: 'false'
       samplingrate: 0
     endpoint:
       server: 'coe-es.default.svc.cluster.local'
     timeseries:
       port: 5563
       metrics:
         enable: 'true'
         mode: 'prometheus'
       auditlogs:
         enable: 'false'
       events:
         enable: 'false'
     transactions:
       enable: 'true'
       port: 5557
<!--NeedCopy-->

Dans ce fichier YAML, la configuration suivante active les métriques pour Prometheus.

 metrics:
    enable: 'true'
    mode: 'prometheus'
Solution Citrix Ingress à un niveau pour MongoDB