Moniteurs pour serveurs réels
Lorsque l'équilibrage des charges est mis en place, il est utile de surveiller l'état des serveurs réels et des applications qui y sont exécutées. Par exemple, pour les serveurs web, vous pouvez configurer une page spécifique que vous pouvez utiliser pour surveiller l'état ou utiliser l'un des autres systèmes de surveillance dont dispose l'ADC.
La page Library > Real Server Monitors vous permet d'ajouter, d'afficher et de modifier des surveillances personnalisées. Il s'agit de "contrôles de santé" du serveur de la couche 7. Vous pouvez les sélectionner dans le champ "Server Monitoring" de l'onglet Basic du service virtuel que vous définissez.
La page des moniteurs du serveur réel est divisée en trois sections.
· Détails
· Télécharger
· Moniteurs personnalisés
Détails
La section Détails est utilisée pour ajouter de nouveaux moniteurs et pour supprimer ceux dont vous n'avez pas besoin. Vous pouvez également modifier un moniteur existant en double-cliquant dessus.
Nom
Nom de votre choix pour votre moniteur.
Description
Description textuelle pour ce moniteur, et nous recommandons qu'il est préférable de le rendre aussi descriptif que possible.
Méthode de contrôle
Choisissez la méthode de surveillance dans la liste déroulante. Les choix disponibles sont les suivants :
Méthode de contrôle
|
Description
|
Exemple
|
HTTP 200 OK
|
Une connexion TCP est établie avec le serveur réel. Une fois la connexion établie, une brève requête HTTP est envoyée au serveur réel. Une réponse HTTP du serveur est attendue, puis le code de réponse "200 OK" est vérifié. Si le code de réponse "200 OK" est reçu, le serveur réel est considéré comme opérationnel. Si, pour une raison quelconque, le code de réponse "200 OK" n'est pas reçu, y compris les délais d'attente ou l'échec de la connexion, le serveur réel est considéré comme hors service et indisponible. Cette méthode de surveillance ne peut vraiment être utilisée qu'avec les types de service HTTP et HTTP accéléré. Toutefois, si un type de service de couche 4 est utilisé pour un serveur HTTP, il peut toujours être utilisé si SSL n'est pas utilisé sur le serveur réel ou s'il est géré de manière appropriée par la fonction "Content SSL".
|
Nom : 200OK
Description : Vérifier le site web de la production
Méthode de surveillance : HTTP 200 OK
Emplacement de la page : /main/index.html OU HTTP://www.edgenexus.io/main/index.html Contenu obligatoire : N/A
|
Réponse HTTP
|
Une connexion et une demande/réponse HTTP sont établies avec le serveur réel et vérifiées comme expliqué dans l'exemple précédent. Mais plutôt que de vérifier le code de réponse "200 OK", l'en-tête de la réponse HTTP est vérifié pour y trouver un contenu textuel personnalisé. Il peut s'agir d'un en-tête complet, d'une partie d'en-tête, d'une ligne d'une partie de page ou d'un seul mot. Si le texte est trouvé, le serveur réel est considéré comme opérationnel. Cette méthode de surveillance ne peut vraiment être utilisée qu'avec les types de service HTTP et HTTP accéléré. Toutefois, si un type de service de couche 4 est utilisé pour un serveur HTTP, il peut toujours être utilisé si SSL n'est pas utilisé sur le serveur réel ou s'il est géré de manière appropriée par la fonction "Content SSL".
|
Nom : Serveur en place
Description : Vérifier le contenu de la page pour "Server Up. "
Méthode de surveillance : Réponse HTTP
Emplacement de la page : /main/index.html OU HTTP://www.edgenexus.io/main/index.html Contenu obligatoire : Serveur en place
|
DICOM
|
Nous envoyons un écho DICOM en utilisant la valeur "Source Calling" AE Title dans la colonne de contenu requise. Vous pouvez également définir la valeur AE Title "Destination Calling" dans la section Notes de chaque serveur. Vous pouvez trouver la colonne Notes dans la section IP Services-
-Virtual Services--Server page.
|
Nom : DICOM
Description : Contrôle de santé L7 pour le service DICOM
Méthode de surveillance : DICOM
Emplacement de la page : N/A
Contenu obligatoire : Valeur AET
|
TCP hors bande
|
La méthode TCP Out of Band est semblable à une connexion TCP, sauf que vous pouvez spécifier le port que vous souhaitez surveiller dans la colonne du contenu requis. Ce port n'est généralement pas le même que le port de trafic et est utilisé lorsque vous souhaitez relier des services entre eux.
|
Nom : TCP hors bande
Description : Surveillance du port hors bande/trafic
Emplacement de la page : N/A
Contenu obligatoire : 555
|
Moniteur TCP multiport
|
Cette méthode est semblable à la précédente, sauf que vous pouvez avoir plusieurs ports différents. Le moniteur est considéré comme réussi uniquement si tous les ports spécifiés dans la section du contenu requis répondent correctement.
|
Nom : Moniteur Multi-Port
Description : Surveiller le succès de plusieurs ports
Emplacement de la page : N/A
Contenu obligatoire : 135,59534,59535
|
|
|
|
Emplacement de la page
URL Emplacement de la page pour un moniteur HTTP. Cette valeur peut être un lien relatif tel que /dossier1/dossier2/page1.html. Vous pouvez également utiliser un lien absolu où le site est lié au nom d'hôte.
Contenu obligatoire
Cette valeur contient tout contenu que le moniteur doit détecter et utiliser. La valeur représentée ici changera en fonction de la méthode de surveillance choisie.
Appliqué à VS
Ce champ est automatiquement rempli avec l'IP/Port du service virtuel auquel le moniteur est appliqué. Vous ne pourrez pas supprimer un moniteur qui a été utilisé avec un service virtuel.
Utilisateur
Certains moniteurs personnalisés peuvent utiliser cette valeur ainsi que le champ du mot de passe pour se connecter à un serveur Real.
Mot de passe
Certains moniteurs personnalisés peuvent utiliser cette valeur avec le champ Utilisateur pour se connecter à un serveur réel.
Seuil
Le champ Threshold est un nombre entier général utilisé dans les moniteurs personnalisés où un seuil tel que le niveau de CPU est requis.
NOTE : Assurez-vous que la réponse du serveur d'application n'est pas une réponse "Chunked".
Exemples de Real Server Monitor
Moniteur de téléchargement
Il y aura de nombreuses occasions où les utilisateurs souhaiteront créer leurs propres moniteurs personnalisés et cette section leur permet de les télécharger vers l'ADC.
Les moniteurs personnalisés sont écrits à l'aide de scripts PERL et ont une extension de fichier .pl.
· Donnez un nom à votre moniteur afin de pouvoir l'identifier dans la liste des méthodes de surveillance.
· Recherchez le fichier .pl
· Cliquez sur Télécharger un nouveau moniteur
· Votre fichier sera téléchargé au bon endroit et sera visible en tant que nouvelle méthode de surveillance.
Moniteurs personnalisés
Dans cette section, vous pouvez visualiser les moniteurs personnalisés téléchargés et les supprimer s'ils ne sont plus nécessaires.
· Cliquez sur le menu déroulant
· Sélectionnez le nom du moniteur personnalisé
· Cliquez sur Supprimer
· Votre moniteur personnalisé ne sera plus visible dans la liste des méthodes de surveillance.
Création d'un script Perl de surveillance personnalisé
ATTENTION : Cette section est destinée aux personnes ayant une expérience de l'utilisation et de l'écriture en Perl.
Cette section vous présente les commandes que vous pouvez utiliser dans votre script Perl.
La commande #Monitor-Name : est le nom utilisé pour le script Perl stocké sur le CDA. Si vous n'incluez pas cette ligne, votre script ne sera pas trouvé !
Les éléments suivants sont obligatoires :
· #Moniteur-Nom
· utiliser strictement ;
· avertissement d'utilisation ;
Les scripts Perl sont exécutés dans un environnement CHROOTED. Ils appellent souvent une autre application telle que WGET ou CURL. Parfois, ces derniers doivent être mis à jour pour une fonctionnalité spécifique, telle que SNI.
Valeurs dynamiques
· my $host = $_[0] ; - Ceci utilise l'"Adresse" de la section IP Services--Real Server.
· my $port = $_[1] ; - Ceci utilise le "Port" de la section IP Services--Real Server.
· my $content = $_[2] ; - Ceci utilise la valeur "Required Content" de la section Library--Real Server Monitoring de la bibliothèque.
· my $notes = $_[3] ; - Cette opération utilise la colonne "Notes" de la section Real Server des Services IP.
· my $page = $_[4] ; - Ceci utilise les valeurs "Page Location" de la section Library--Real Server Monitor.
· my $user = $_[5] ; - Ceci utilise la valeur "User" de la section Library--Real Server Monitor.
· my $password = $_[6] ; - Ceci utilise la valeur "Password" de la section Library--Real Server Monitor.
Les bilans de santé personnalisés ont deux résultats
· Succès
Valeur de retour 1Imprime
un message de réussite à SyslogMarque
le serveur réel en ligne (si IN COUNT correspond)
· Échec
Valeur de retour 2Imprime
un message indiquant Unsuccessful à SyslogMark
the Real Server Offline (à condition que OUT Count corresponde)
Exemple d'un moniteur de santé personnalisé
#Moniteur-Nom HTTPS_SNI
utiliser strictement :
les avertissements d'utilisation ;
Le nom du moniteur comme ci-dessus est affiché dans la liste déroulante des contrôles de santé disponibles.
# Il y a 6 valeurs passées à ce script (voir ci-dessous)
# Le script retournera les valeurs suivantes
# 1 si le test est réussi
# 2 si le test est infructueux sub monitor
{
my Shost= $_[O] ; ### IP ou nom de l'hôte
my Sport= $_[1] ; ### Port de l'hôte
my Scontent= $_[2] ; ### Contenu à rechercher (dans la page web et les en-têtes HTTP)
my Snotes= $_[3] ; ### Nom d'hôte virtuel
my Spage= $_[4] ; ### La partie de l'URL après l'adresse de l'hôte
my Suser= $_[5] : ### domaine/nom d'utilisateur (facultatif)
my Spassword= $_[6] ; ### mot de passe (facultatif)
mon $resolve ;
mon $auth = ;
if ($port)
{
$resolve = "$notes:$port:$host" :
}
else {
$resolve = "$notes:$host" ;
}
if ($user && $password) {
$auth = "-u $user:$password :
}
my @lines = 'curl -s -i -retry 1 -max-time 1 -k -H "Host:$notes --resolve $auth HTTPs://${notes}${page} 2>&1' ; if(join(""@lines)=~/$content/)
{
imprimez "HTTPs://$notes}${page} looking for - $content - Health check successful.\n" ;
retour(1) ;
}
sinon
{
imprimez "HTTPs://${notes}${page} looking for - $content - Health check failed.\n" ;
retour(2)
}
}
moniteur(@ARGV) :
NOTE : Surveillance personnalisée - L'utilisation de variables globales n'est pas possible. Utilisez uniquement les variables locales - les variables définies à l'intérieur des fonctions