ILB fournit les types de contrôle de l'intégrité du serveur facultatifs suivants :
Tests ping intégrés
Tests TCP intégrés
Tests UDP intégrés
Tests personnalisés fournis par l'utilisateur pouvant être exécutés comme des vérifications de l'état
Par défaut, ILB n'effectue aucune vérification de l'état. Vous pouvez spécifier des vérifications de l'état de chaque groupe de serveurs lors de la création d'une règle d'équilibrage de la charge. Vous pouvez configurer une seule vérification de l'état par règle d'équilibrage de la charge. Tant qu'un service virtuel est activé, les contrôles de l'intégrité définis sur le groupe de serveurs associé à ce service virtuel démarrent automatiquement et se répètent de manière périodique. Les vérifications de l'état cessent dès que le service virtuel est désactivé. Notez que les statuts de vérification de l'état ne sont pas conservés à la réactivation du service virtuel.
Lorsque vous spécifiez un test TCP, UDP ou personnalisé pour vérifier l'état d'un serveur, l'équilibreur de charge intégré envoie une commande ping par défaut pour déterminer s'il est accessible avant d'envoyer le test proprement dit. En cas d'échec du test ping, le serveur est désactivé, et son état passe à unreachable. Si la commande ping aboutit, mais que le test TCP, UDP ou personnalisé échoue, le serveur est désactivé et son état passe à dead.
Vous pouvez désactiver le test ping par défaut UDP à l'exception des du test UDP. Le test ping est toujours le test par défaut pour les vérifications d'état UDP.
Vous pouvez créer une vérification de l'état et affecter la vérification de l'état à un groupe de serveurs lors de la création d'une règle d'équilibrage de charge. L'exemple de commande ci-dessous montre comment sont crées les objets de vérification de l'état hc1 et hc-myscript. La première vérification de l'état met en oeuvre le test TCP intégré, Le second contrôle de l'intégrité utilise un test personnalisé : /var/tmp/my-script.
# ilbadm create-healthcheck -h hc-timeout=3,\ hc-count=2,hc-interval=8,hc-test=tcp hc1 # ilbadm create-healthcheck -h hc-timeout=3,\ hc-count=2,hc-interval=8,hc-test=/var/tmp/my-script hc-myscript
Les arguments sont les suivants :
Spécifie le délai d'expiration au terme duquel le système considère que la vérification de l'état a échoué si elle n'est pas terminée.
Spécifie le nombre de tentatives d'exécution de la vérification de l'état hc-test.
Spécifie l'intervalle de temps à respecter entre deux vérifications consécutives. Pour éviter l'envoi de sondes à tous les serveurs en même temps, l'intervalle est défini de manière aléatoire entre 0.5 * hc-interval et 1.5 * hc-interval.
Indique le type de vérification de l'état. Vous pouvez spécifier les vérifications d'état intégrées, telles que tcp, udp et ping ou une vérification d'état externe qui doit être indiquée avec son chemin d'accès complet.
Un test personnalisé fourni par l'utilisateur peut être un fichier binaire ou un script.
Le test peut résider n'importe où sur le système. Vous devez indiquer le chemin d'accès absolu par le biais de la sous-commande create-healthcheck.
Lorsque vous définissez ce test (par exemple /var/tmp/my-script) pour le contrôle de l'intégrité dans la sous-commande create-rule, le démon ilbd clone un processus et exécute le test comme suit :
/var/tmp/my-script $1 $2 $3 $4 $5
Les arguments sont les suivants :
VIP (adresse IPv4 ou IPv6 littérale)
IP du serveur (adresse IPv4 ou IPv6 littérale)
Protocole (UDP, TCP sous forme de chaîne)
Plage de ports numérique (valeur spécifiée par l'utilisateur pour hc-port )
Durée maximale (en secondes) à respecter avant de considérer que le test a échoué. Si le test n'est pas terminé au terme de ce délai, il peut être interrompu et associé à un statut d'échec. Cette valeur définie par l'utilisateur est indiquée dans hc-timeout.
Le test fourni par l'utilisateur peut comprendre la totalité ou une partie des arguments, mais il doit impérativement renvoyer une des informations suivantes :
Temps d'aller-retour réseau (en microsecondes)
0 si le test ne calcule pas le temps d'aller-retour réseau
-1 en cas d'échec
Par défaut, le test de vérification de l'état s'exécute avec les privilèges: PRIV_PROC_FORK, RIV_PROC_EXEC et RIV_NET_ICMPACCESS.
Si un ensemble de privilèges plus large est requis, il faut implémenter setuid dans le test. Pour plus d'informations sur les privilèges, reportez-vous à la page de manuel privileges(5).
Pour obtenir des informations détaillées sur les vérifications configurées, exécutez la commande suivante :
# ilbadm show-healthcheck HCNAME TIMEOUT COUNT INTERVAL DEF_PING TEST hc1 3 2 8 Y tcp hc2 3 2 8 N /var/usr-script
Utilisez la commande ilbadm list-hc-result pour obtenir les résultats des contrôles de l'intégrité. Si vous ne spécifiez pas de règle ou de vérification de l'état, la sous-commande répertorie toutes les vérifications configurées.
L'exemple de commande ci-dessous affiche les résultats des vérifications de l'état associées à une règle nommée rule1.
# ilbadm show-hc-result rule1 RULENAME HCNAME SERVERID STATUS FAIL LAST NEXT RTT rule1 hc1 _sg1:0 dead 10 11:01:19 11:01:27 941 rule1 hc1 _sg1:1 alive 0 11:01:20 11:01:34 1111
La colonne LAST du tableau indique l'heure de la dernière vérification de l'état du serveur. La colonne NEXT affiche l'heure à laquelle la prochaine vérification de l'état sera effectuée.
Vous pouvez supprimer une vérification de l'état à l'aide de la commande ilbadm delete-healthcheck. L'exemple de commande ci-dessous supprime une vérification de l'état nommée hc1 :
# ilbadm delete-healthcheck hc1