Citrix ADC

Comprendre les moniteurs utilisateur

Les moniteurs utilisateur étendent la portée des moniteurs personnalisés. Vous pouvez créer des moniteurs utilisateur pour suivre l’état des applications et des protocoles personnalisés que l’appliance Citrix ADC ne prend pas en charge. Le diagramme suivant illustre le fonctionnement d’un moniteur utilisateur.

Figure 1. Moniteurs utilisateur

Moniteur utilisateur

Un moniteur utilisateur nécessite les composants suivants.

  • Répartiteur. Processus, sur l’appliance, qui écoute les demandes de surveillance. Un répartiteur peut se trouver sur l’adresse IP de bouclage (127.0.0.1) et le port 3013. Les répartiteurs sont également appelés répartiteurs internes. Un répartiteur peut également être un serveur Web prenant en charge l’interface CGI (Common Gateway Interface). Ces répartiteurs sont également connus sous le nom de répartiteurs externes. Ils sont utilisés pour les scripts personnalisés qui ne s’exécutent pas sur l’environnement FreeBSD, tels que les scripts .NET.

    Remarque : Vous pouvez configurer le moniteur et le répartiteur pour qu’il utilise HTTPS au lieu de HTTP en activant l’option « sécurisée » sur le moniteur et en le configurant en tant que répartiteur externe. Cependant, un répartiteur interne ne comprend que HTTP et ne peut pas utiliser HTTPS.

    Dans une configuration HA, le répartiteur s’exécute sur les appliances Citrix ADC principales et secondaires. Le répartiteur reste inactif sur l’appliance secondaire.

Script. Le script est un programme qui envoie des sondes personnalisées au serveur à équilibrage de charge et renvoie le code de réponse au répartiteur. Le script peut renvoyer n’importe quelle valeur au répartiteur, mais si une sonde réussit, le script doit renvoyer la valeur zéro (0). Le répartiteur considère toute autre valeur comme une défaillance de sonde.

L’appliance Citrix ADC est fournie avec des exemples de scripts pour les protocoles couramment utilisés. Les scripts existent dans le répertoire /nsconfig/monitors. Si vous voulez ajouter un script, ajoutez-le là. Pour personnaliser un script existant, créez une copie avec un nouveau nom et modifiez-le.

Important :

  • À partir de Citrix ADC version 13.0 build 41.20, vous pouvez utiliser le script nsntlm-lwp.pl pour créer un moniteur pour surveiller un serveur NTLM sécurisé.

  • À partir de la version 10.1 122.17, les fichiers de script des moniteurs utilisateur se trouvent dans un nouvel emplacement.

    Si vous mettez à niveau un dispositif virtuel MPX ou VPX vers la version 10.1 build 122.17 ou ultérieure, les modifications sont les suivantes :

    • Un nouveau répertoire nommé conflicts est créé dans /nsconfig/monitors/ et tous les scripts intégrés des versions précédentes sont déplacés vers ce répertoire.
    • Tous les nouveaux scripts intégrés sont disponibles dans le répertoire /netscaler/monitors/. Tous les scripts personnalisés sont disponibles dans le répertoire /nsconfig/monitors/.
    • Enregistrez un nouveau script personnalisé dans le répertoire /nsconfig/monitors/.
    • Une fois la mise à niveau terminée, si un script personnalisé est créé et enregistré dans le répertoire /nsconfig/monitors/, avec le même nom que le script intégré, le script du répertoire /netscaler/monitors/ prend la priorité. Le script personnalisé ne s’exécute pas.

    Si vous provisionnez une appliance virtuelle avec la version 10.1 122.17 ou ultérieure, les modifications sont les suivantes :

    • Tous les scripts intégrés sont disponibles dans le répertoire /netscaler/monitors/.
    • Le répertoire /nsconfig/monitors/ est vide.
    • Si vous créez un script personnalisé, vous devez l’enregistrer dans le répertoire /nsconfig/monitors/.

Pour que les scripts fonctionnent correctement :

  • Le nombre maximal de caractères dans le nom du script ne doit pas dépasser 63.
  • Le nombre maximal d’arguments de script pouvant être fournis à un script ne doit pas dépasser 512.
  • Le nombre maximal de caractères pouvant être fournis dans les arguments de script de paramètre ne doit pas dépasser 639.

Pour déboguer le script, vous devez l’exécuter en utilisant le script nsumon-debug.pl de l’interface de ligne de commande. Vous utilisez le nom du script (avec ses arguments), l’adresse IP et le port comme arguments du script nsumon-debug.pl. Les utilisateurs doivent utiliser le nom du script, l’adresse IP, le port, le délai d’expiration et les arguments de script pour le script nsumon-debug.pl.

Dans l’interface de ligne de commande, tapez :

nsumon-debug.pl <scriptname> <IP> <port> <timeout> <partitionID> [scriptarguments][is_secure]

Important : à partir de la version 10.5 build 57.x et des fichiers de script 11.0 pour les moniteurs utilisateur prennent en charge les adresses IPv6 et incluent les modifications suivantes :

  • Pour les protocoles suivants, de nouveaux fichiers pm ont été inclus pour la prise en charge IPv6.

    • RADIUS
    • NNTP
    • POP3
    • SMTP
  • Les exemples de scripts suivants dans /netscaler/monitors/ ont été mis à jour pour la prise en charge IPv6 :

    • nsbmradius.pl

    • nsldap.pl

    • nsnntp.pl

    • nspop3 nssf.pl

    • nssnmp.pl

    • nswi.pl

    • nstftp.pl

    • nssmtp.pl

    • nsrdp.pl

    • nsntlm-lwp.pl

    • nsftp.pl

    • nsappc.pl

    Après la mise à niveau vers la version 10.5 build 57.x ou 11.0, si vous souhaitez utiliser vos scripts personnalisés existants avec les services IPv6, assurez-vous de mettre à jour les scripts personnalisés existants avec les modifications fournies dans les exemples de scripts mis à jour dans /netscaler/monitors/.

    Remarque : l’exemple de script nsmysql.pl ne prend pas en charge l’adresse IPv6. Si un service IPv6 est lié à un moniteur utilisateur qui utilise nsmysql.pl, la sonde échoue.

  • Les types de moniteurs LB suivants ont été mis à jour pour prendre en charge les adresses IPv6 :

    • USER

    • SMTP

    • NNTP

    • LDAP

    • SNMP

    • POP3

    • FTP_EXTENDED

    • StoreFront

    • APPC

    • CITRIX_WI_EXTENDED

    Si vous créez un script personnalisé qui utilise l’un de ces types de moniteurs LB, assurez-vous d’inclure la prise en charge IPv6 dans le script personnalisé. Reportez-vous à l’exemple de script associé dans /netscaler/monitors/ pour connaître les modifications que vous devez apporter dans le script personnalisé pour la prise en charge IPv6.

Pour suivre l’état du serveur, le moniteur envoie une requête HTTP POST au répartiteur configuré. Cette requête POST contient l’adresse IP et le port du serveur, ainsi que le script qui doit être exécuté. Le répartiteur exécute le script en tant que processus enfant, avec des paramètres définis par l’utilisateur (le cas échéant). Ensuite, le script envoie une sonde au serveur. Le script envoie l’état de la sonde (code de réponse) au répartiteur. Le répartiteur convertit le code de réponse en réponse HTTP et l’envoie au moniteur. En fonction de la réponse HTTP, le moniteur marque le service comme UP ou DOWN.

L’appliance Citrix ADC consigne les messages d’erreur dans le fichier /var/nslog/nsumond.log lorsque les sondes du moniteur utilisateur échouent. Ces messages d’erreur détaillés sont affichés dans l’interface graphique et dans l’interface de ligne de commande pour lesshow service/service group commandes.

Le tableau suivant répertorie les moniteurs utilisateur et les raisons possibles de l’échec.

Type de moniteur utilisateur Raisons de défaillance de la sonde
SMTP Le moniteur ne parvient pas à établir une connexion au serveur.
NNTP Le moniteur ne parvient pas à établir une connexion au serveur.
  Arguments de script manquants ou non valides, qui peuvent inclure un nombre d’arguments ou un format d’argument non valide.
  Le moniteur ne parvient pas à trouver le groupe NNTP.
LDAP Le moniteur ne parvient pas à établir une connexion au serveur.
  Arguments de script manquants ou non valides, qui peuvent inclure un nombre d’arguments ou un format d’argument non valide.
  Le moniteur ne parvient pas à se lier au serveur LDAP.
  Le moniteur ne parvient pas à localiser une entrée pour l’entité cible dans le serveur LDAP.
FTP La connexion au serveur expire.
  Arguments de script manquants ou non valides, qui peuvent inclure un nombre d’arguments ou un format d’argument non valide.
  L’ouverture de session échoue.
  Le moniteur ne parvient pas à trouver le fichier sur le serveur.
POP3 Le moniteur ne parvient pas à établir une connexion à la base de données.
  Arguments de script manquants ou non valides, qui peuvent inclure un nombre d’arguments ou un format d’argument non valide.
  L’ouverture de session échoue.
POP3 Le moniteur ne parvient pas à établir une connexion à la base de données.
  Arguments de script manquants ou non valides, qui peuvent inclure un nombre d’arguments ou un format d’argument non valide.
  L’ouverture de session échoue.
  La préparation de la requête SQL échoue.
  L’exécution de la requête SQL échoue.
SNMP Le moniteur ne parvient pas à établir une connexion à la base de données.
  Arguments de script manquants ou non valides, qui peuvent inclure un nombre d’arguments ou un format d’argument non valide.
  L’ouverture de session échoue.
  Le moniteur ne parvient pas à créer la session SNMP.
  Le moniteur ne parvient pas à trouver l’identificateur d’objet.
  La valeur de seuil du moniteur est supérieure ou égale au seuil réel du moniteur.
RDP (Windows Terminal Server) Arguments de script manquants ou non valides, qui peuvent inclure un nombre d’arguments ou un format d’argument non valide.
  Le moniteur ne parvient pas à créer un socket.
  Il n’y a pas de correspondance dans les versions.
  Le moniteur ne parvient pas à confirmer la connexion.

Vous pouvez afficher le fichier journal à partir de l’interface de ligne de commande à l’aide des commandes suivantes, qui ouvrent un shell BSD, affichent le fichier journal à l’écran, puis ferment le shell BSD et vous renvoie à l’interface de ligne de commande :

> shell
root@ns# cat /var/nslog/nsumond.log
root@ns# exit
>

Avant la version 13.0 build 52.X de Citrix ADC, lashow service/service group commande affichait un message d’erreur générique indiquant que « la sonde a échoué » comme cause de l’échec de la sonde du moniteur utilisateur.

Exemple :

show service ftp

Monitor Name: mon2
State: UNKNOWN  Weight: 1   Passive: 0
Probes: 3    Failed [Total: 0 Current: 0]
Last response: Failure - Probe failed.
Response Time: 1071.838 millisec

À partir de la version 13.0 build 52.X de Citrix ADC, lashow service/service group commande affiche la cause réelle de l’échec de la sonde du moniteur utilisateur.

Exemple :

show service ftp

Monitor Name: mon2
State: DOWN   Weight: 1   Passive: 0
Probes: 729   Failed [Total: 726 Current: 726]
Last response: Failure - Login failed.
Response Time: 8000.0 millisec

Les moniteurs utilisateur ont également une valeur de délai d’attente et un nombre de tentatives pour les échecs de sonde. Vous pouvez utiliser des moniteurs utilisateur avec des moniteurs non-utilisateur. Lors d’une utilisation élevée du processeur, un moniteur non utilisateur permet une détection plus rapide d’une défaillance du serveur.

Si la sonde du moniteur utilisateur expire pendant une utilisation élevée de l’UC, l’état du service reste inchangé.

Remarque :

Pour les moniteurs scriptables, le délai d’attente de réponse doit être configuré sur une valeur égale au délai d’attente attendu + 1 seconde.

Par exemple, si vous vous attendez à ce que le délai d’attente soit de 4 secondes, configurez le délai d’attente de réponse sur 5 secondes.

Exemple de commande :

add lb monitor <name> USER –scriptname <script-name> -resptimeout 5 seconds

Comprendre les moniteurs utilisateur