ADC

Arrêt gracieux des services

Lors de pannes réseau planifiées, telles que les mises à niveau du système ou la maintenance matérielle, vous devrez peut-être fermer ou désactiver certains services. Vous pouvez activer le service ultérieurement à l’aide de la <name> commande « enable service ».

Pour éviter de perturber les sessions établies, vous pouvez placer un service dans l’état Transition Out of Service (TROFS) en procédant de l’une des manières suivantes :

  • Ajouter un code ou une chaîne TROFS au moniteur : configurez le serveur pour qu’il envoie un code ou une chaîne spécifique en réponse à une sonde de surveillance.
  • Désactivez explicitement le service et :
    • Définissez un délai (en secondes).
    • Activez l’arrêt progressif.

Ajout d’un code ou d’une chaîne TROFS

Si vous ne liez qu’un seul moniteur à un service et que le moniteur est activé par TROFS, il peut placer le service dans l’état TROFS sur la base de la réponse du serveur à une sonde de surveillance. Cette réponse est comparée à la valeur du paramètre TroFSCode pour un moniteur HTTP ou du paramètre TroFSString pour un moniteur HTTP-ECV ou TCP-ECV. Si le code correspond, le service est placé dans l’état TROFS. Dans cet état, il continue de respecter les connexions persistantes.

Si plusieurs moniteurs sont liés à un service, l’état effectif du service est calculé sur la base de l’état de tous les moniteurs liés au service. Lors de la réception d’une réponse TROFS, l’état du moniteur compatible TROFS est considéré comme UP aux fins de ce calcul. Pour plus d’informations sur la manière dont une appliance NetScaler désigne un service comme étant actif, consultez la section Définition d’une valeur seuil pour les moniteurs liés àun service.

Important :

  • Vous pouvez lier plusieurs moniteurs à un service, mais vous ne devez pas activer TROFS pour plusieurs d’entre eux.
  • Vous pouvez convertir un moniteur compatible TroFS en un moniteur qui ne l’est pas, mais pas l’inverse.

Pour configurer un code ou une chaîne TROFS dans un moniteur à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez l’une des commandes suivantes :

add lb monitor <monitor-name> HTTP -trofsCode <respcode>

add lb monitor <monitor-name> HTTP-ECV  -trofsString <resp string>

add lb monitor <monitor-name> TCP-ECV  -trofsString <resp string>
<!--NeedCopy-->

Pour modifier le code ou la chaîne TROFS à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez l’une des commandes suivantes :

set lb monitor <trofs monitorname> HTTP -trofscode <newcode>

set lb monitor <trofs monitorname> HTTP-ECV -trofsstring <new string>

set lb monitor <trofs monitorname> TCP-ECV -trofsstring <new string>
<!--NeedCopy-->

Remarque : Vous ne pouvez utiliser la commande set que si un moniteur compatible TroFS a été ajouté précédemment. Vous ne pouvez pas utiliser cette commande pour définir le code ou la chaîne TROFS pour un moniteur qui n’est pas compatible avec TROFS.

Pour configurer un code ou une chaîne TROFS dans un moniteur à l’aide de l’utilitaire de configuration

  1. Accédez à Gestion du trafic > Équilibrage de charge > Moniteurs.
  2. Dans le volet Moniteurs, cliquez sur Ajouter, puis effectuez l’une des opérations suivantes :
    • Sélectionnez Type comme HTTP et spécifiez un code TROFS.
    • Sélectionnez Type en tant que HTTP-ECV ou TCP-ECV, puis spécifiez une chaîne TROFS.

Désactiver un service

Toutefois, il arrive souvent que vous ne puissiez pas estimer le temps nécessaire à toutes les connexions à un service pour terminer les transactions existantes. Si une transaction n’est pas terminée à l’expiration du délai d’attente, l’arrêt du service peut entraîner une perte de données. Dans ce cas, vous pouvez spécifier un arrêt progressif du service, de sorte que le service ne soit désactivé que lorsque toutes les connexions clientes actives en cours sont fermées par le serveur ou le client. Consultez le tableau suivant pour connaître le comportement si vous spécifiez un temps d’attente en plus d’un arrêt progressif.

La persistance est maintenue selon la méthode spécifiée même si vous activez l’arrêt progressif. Le système continue de servir tous les clients persistants, y compris les nouvelles connexions des clients, sauf si le service est marqué comme DOWN pendant l’état d’arrêt gracieux à la suite des vérifications effectuées par un moniteur.

Le tableau suivant décrit les options d’arrêt gracieuses.

État Résultats
L’arrêt progressif est activé et un temps d’attente est spécifié. Le service est arrêté une fois que la dernière des connexions clientes actives en cours a été effectuée, même si le délai d’attente n’a pas expiré. L’appliance vérifie l’état des connexions une fois par seconde. Si le délai d’attente expire, toutes les sessions ouvertes sont fermées.
L’arrêt progressif est désactivé et un temps d’attente est spécifié. Le service est arrêté uniquement après l’expiration du délai d’attente, même si toutes les connexions établies sont assurées avant l’expiration.
L’arrêt progressif est activé et aucun temps d’attente n’est spécifié. Le service est arrêté uniquement lorsque la dernière des connexions précédemment établies a été traitée, quel que soit le temps nécessaire pour traiter la dernière connexion.
L’arrêt progressif est désactivé et aucun délai d’attente n’est spécifié. Pas d’arrêt gracieux. Le service est arrêté immédiatement après le choix de l’option de désactivation ou l’émission de la commande de désactivation. (Le temps d’attente par défaut est de zéro seconde.)

Pour mettre fin à des connexions existantes lorsqu’un service ou un serveur virtuel est marqué comme DOWN, vous pouvez utiliser l’option Down State Flush. Pour plus d’informations, reportez-vous à la section Activation du nettoyage des connexions aux serveurs virtuels.

Pour configurer l’arrêt progressif d’un service à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour arrêter correctement un service et vérifier la configuration :

disable service <name> [<delay>] [-graceFul (YES|NO)]

show service <name>
<!--NeedCopy-->

Exemple :

> disable service svc1 6000 -graceFul YES
Done
>show service svc1
svc1 (10.102.80.41:80) - HTTP
State: GOING OUT OF SERVICE (Graceful, Out Of Service in 5998 seconds)
Last state change was at Mon Nov 15 22:44:15 2010
Time since last state change: 0 days, 00:00:01.160
...
Down state flush: ENABLED

1 bound monitor:
1) Monitor Name: tcp-default
State: UP             Weight: 1
Probes: 13898    Failed [Total: 0 Current: 0]
Last response: Probe skipped - live traffic to service.
Response Time: N/A
Done

>show service svc1
svc1 (10.102.80.41:80) - HTTP
State: OUT OF SERVICE
Last state change was at Mon Nov 15 22:44:19 2010
Time since last state change: 0 days, 00:00:03.250
Down state flush: ENABLED

1 bound monitor:
1)  Monitor Name: tcp-default
State: UNKNOWN           Weight: 1
Probes: 13898    Failed [Total: 0 Current: 0]
Last response: Probe skipped - service state OFS.
Response Time: N/A
Done
<!--NeedCopy-->

Pour configurer l’arrêt progressif d’un service à l’aide de l’utilitaire de configuration

  1. Accédez à Traffic Management > Load Balancing > Services.
  2. Ouvrez le service et, dans la liste des actions, cliquez sur Désactiver. Entrez un temps d’attente, puis sélectionnez Graceful.
Arrêt gracieux des services