IBM Cloud Docs
Utilisation de sondes d'activité et de préparation pour votre application

Utilisation de sondes d'activité et de préparation pour votre application

Avec Code Engine, vous pouvez définir des diagnostics d'intégrité pour améliorer la robustesse de vos applications à l'aide de sondes d'activité et de préparation. Vous pouvez configurer Code Engine pour utiliser ces sondes lorsque vous créez ou mettez à jour vos applications.

Que sont les sondes de vivacité et de préparation?

Utilisez des sondes de vivacité et de disponibilité pour vérifier si votre application est active et prête à répondre aux demandes et à servir le trafic.

Sonde Liveness Probe

Une sonde de vivacité vérifie périodiquement si l'application est opérationnelle (ou active) et peut répondre aux demandes entrantes. Vous pouvez utiliser une sonde de vivacité pour vérifier si l'application répond aux demandes entrantes ou si l'application se trouve dans une situation qui nécessite que le système arrête l'instance et démarre une nouvelle instance. Si la sonde de vivacité échoue, l'instance d'application est redémarrée. Si la sonde de vivacité aboutit, l'instance d'application est opérationnelle. Par exemple, vous pouvez avoir une application Node.js à unité d'exécution unique dans laquelle le code est bloqué dans une boucle sans fin, ce qui empêche l'application de répondre aux demandes. Une sonde de vivacité peut détecter ce cas et redémarrer l'instance. Aucune sonde de vivacité n'est définie automatiquement par défaut. Vous pouvez configurer la sonde de vivacité avec les propriétés de la sonde de vivacité.

Sondage sur l'état de préparation

Une sonde de préparation vérifie périodiquement si l'application est prête à recevoir du trafic. Vous pouvez utiliser une sonde de préparation pour retirer temporairement une instance d'application de l'équilibrage de charge. Si la sonde de préparation échoue, l'instance d'application ne peut pas recevoir plus de demandes tant que la sonde de préparation n'aboutit pas à nouveau. Par exemple, prenez en compte le cas où votre application est capable de traiter des demandes, par exemple lorsqu'une sonde de vivacité est renvoyée avec succès. Toutefois, votre application peut avoir d'autres conditions requises avant de pouvoir servir la charge de travail utilisateur prévue. Il se peut que votre application exige qu'une connexion opérationnelle au système de back end soit établie avant que l'application puisse répondre aux demandes des utilisateurs. Ce scénario requiert un type de vérification différent car l'état de l'application est considéré comme récupérable. Supposons que votre instance de révision d'application soit à l'état actif depuis un certain temps ; toutefois, la connexion à la base de données a été interrompue de manière inattendue. L'instance d'application doit se reconnecter à la base de données. L'instance d'application est à l'état not ready car elle échoue à la demande de sonde de disponibilité. Par conséquent, la sonde de préparation demande à l'équilibreur de charge d'arrêter temporairement l'envoi de demandes à cette instance d'application. Lorsque la connexion à la base de données est rétablie, la sonde de préparation aboutit et le trafic recommence à être acheminé vers l'instance d'application.

Par défaut, chaque application possède une sonde de disponibilité définie de type tcp et cette sonde vérifie que le port d'écoute configuré pour l'application est ouvert. Lorsque cette vérification de l'état de préparation aboutit, l'application est à l'état Prêt. Vous pouvez personnaliser davantage la sonde de préparation à l'aide des propriétés de la sonde de préparation.

Les sondes de vivacité et de préparation agissent indépendamment les unes des autres.

Si vous configurez à la fois une sonde de vivacité et une sonde de préparation, la sonde de vivacité n'attend pas une première réponse réussie d'une sonde de préparation lors du démarrage d'une instance d'application. Si vous configurez à la fois une sonde de vivacité et une sonde de préparation et que vous souhaitez attendre une réponse réussie d'une sonde de vivacité avant qu'une demande de sonde de préparation ne soit envoyée, vous pouvez utiliser la propriété de délai initial pour retarder la première demande de sonde de vivacité du nombre de secondes spécifié.

Pourquoi utiliser des sondes de vivacité et de préparation avec mes applications?

Lorsque vous implémentez des sondes dans vos applications Code Engine, les sondes de vivacité et de disponibilité vous permettent de contrôler plus précisément votre application en cours d'exécution afin de vérifier les conditions alive et ready de votre application.

Par exemple, votre application peut avoir un délai de démarrage. Le processus d'application peut commencer avant que l'application ne soit entièrement prête, ce qui peut affecter les réponses, en particulier lorsque l'application est mise à l'échelle dans de nombreuses instances. En définissant des sondes de vivacité et de disponibilité comme diagnostics d'intégrité, vous pouvez indiquer à Code Engine si votre application est en cours d'exécution et prête à recevoir des demandes et à servir le trafic. En définissant ces sondes, vous pouvez également éviter les temps d'arrêt lorsque vous effectuez une mise à jour continue de votre application.

Les sondes de vivacité et de préparation s'appliquent aux instances d'application. Chaque instance d'une application est vérifiée par le système.

Les sondes de vivacité et de préparation servent à des fins différentes.

  • Vous pouvez utiliser une sonde de vivacité pour déclencher le redémarrage d'une instance d'application, qui arrête l'instance d'application en cours et démarre une nouvelle instance. Utilisez cette sonde pour les situations où votre application ne peut pas être restaurée suite à une défaillance interne et où l'application doit être redémarrée.

  • En revanche, si une sonde de préparation échoue, cette sonde provoque l'arrêt temporaire des demandes de routage vers l'instance d'application par Code Engine jusqu'à la reprise de l'instance. Une sonde de préparation est utile lorsque votre application rencontre un problème récupérable sans redémarrer l'instance. Pendant le temps de récupération, l'application ne peut pas répondre aux demandes des utilisateurs. Lorsque la sonde de préparation aboutit, l'instance peut servir à nouveau les demandes des utilisateurs.

Implémentation d'une sonde de préparation ou de vivacité dans votre code

Avant de configurer une sonde de préparation ou de vivacité dans Code Engine, vous devez d'abord implémenter la sonde dans l'image de code source référencée par votre application Code Engine.

Si vous n'implémentez pas d'abord la sonde dans votre code, les sondes que vous configurez dans Code Engine échouent toujours, ce qui entraîne l'échec de votre application.

Tenez compte des points suivants lorsque vous implémentez une sonde de préparation ou de vivacité dans votre code.

  • Déterminez le type de connexion à utiliser pour une sonde de préparation ou de vivacité. Vous pouvez spécifier une sonde de type HTTP ou TCP.

    • Une sonde de type HTTP fournit un noeud final pour renvoyer le statut de la sonde avec une méthode HTTP GET. Ce type de sonde est considéré comme ayant abouti si la sonde répond dans le délai imparti et que le code retour HTTP est supérieur ou égal à 200, mais inférieur à 400. Toute valeur en dehors de cette plage est considérée comme un échec de sonde.
    • Une vérification de type TCP vérifie uniquement que le port est ouvert. Ce type de sonde est considéré comme ayant abouti si le port est ouvert. Si le port n'est pas ouvert, ce type de sonde est considéré comme ayant échoué.
  • Déterminez le port auquel votre code source répond à la sonde.

    • En général, si votre code source d'application n'ouvre qu'un seul port, la configuration de port pour la sonde de préparation ou de vivacité est généralement la même que le port d'écoute configuré de votre application Code Engine. Si vous définissez le port de la sonde de préparation ou de vivacité dans Code Engine sur 0, le port de la sonde est par défaut le port d'écoute configuré de l'application.
    • Si votre code source d'application est à l'écoute sur plusieurs ports simultanément, vous pouvez utiliser un port différent dans votre code source pour répondre aux demandes de sonde de préparation ou de vivacité. Dans ce cas, vous devez spécifier le port approprié pour votre sonde lorsque vous configurez la configuration de la sonde de préparation ou de vivacité dans Code Engine.
  • Etant donné que les sondes déterminent si une instance d'application est disponible pour servir les demandes, assurez-vous que votre code répond rapidement aux demandes de sonde.

  • Assurez-vous que votre code gère en toute sécurité un signal SIGTERM. Lorsqu'une sonde de vivacité échoue, un signal SIGTERM est envoyé et votre code doit traiter ce signal pour éviter les instances d'application qui ne répondent pas. Voir Pourquoi mes instances d'application ne sont-elles pas mises à l'échelle comme prévu?

Configuration des sondes de vivacité et de disponibilité dans Code Engine

Vous pouvez utiliser des sondes de vivacité et de disponibilité comme diagnostics d'intégrité pour vos applications. Vous pouvez personnaliser les sondes de préparation, qui sont définies par défaut, et éventuellement configurer une sonde de vivacité. Les sondes de vivacité et de préparation sont envoyées aux instances d'application à l'intervalle configuré pendant que les instances sont en cours d'exécution.

Avant de configurer une sonde de vivacité ou de personnaliser une sonde de disponibilité pour votre application Code Engine, vous devez d'abord implémenter les sondes dans votre code ; sinon, votre application risque d'échouer.

Propriétés des sondes de vivacité et de préparation

Le tableau suivant récapitule les propriétés utilisées avec les sondes de vivacité et de disponibilité pour une application.

Propriétés des sondes d'accessibilité et de disponibilité
Propriété Description
Type Type de contrôle effectué par la sonde. Les valeurs valides sont tcp et http. Cette propriété est requise.
Voie Chemin d'accès de la demande HTTP à l'application. Cette propriété est requise uniquement si le type est http.
Port Port auquel la sonde se connecte. Si la valeur est 0, le port de la sonde est par défaut le port d'écoute configuré de l'application.
Intervalle Délai en secondes entre les demandes de sonde.
Délai initial Temps d'attente (en secondes) avant la première vérification de l'état de conservation.
Délai d'attente Durée en secondes pendant laquelle la sonde attend une réponse de l'application avant d'expirer et d'être considérée comme ayant échoué.
Seuil d'échec Nombre de vérifications consécutives ayant échoué pour que la sonde soit considérée comme ayant échoué.

Configuration de sondes à partir de la console

Après avoir implémenté des sondes dans votre image de code référencée par votre application Code Engine, vous pouvez configurer des sondes de vivacité et de disponibilité à partir de la console pour effectuer des diagnostics d'intégrité sur votre application.

Avant de commencer

  1. À partir du Code Engine Projects page, accédez à votre projet.
  2. Créez une application. Par exemple, créez une application appelée myapp qui utilise l'image icr.io/codeengine/helloworld. Cette image est disponible dans le Exemples pour le référentiel IBM Cloud Code Engine GitHub. Vous pouvez configurer des sondes de vivacité et de disponibilité lorsque vous créez une application. Vous pouvez également afficher et mettre à jour les paramètres des sondes de vivacité et de préparation lorsque vous mettez à jour une application à partir de l'onglet Configuration > Options de démarrage de l'image de la page de votre application.
  3. Pour afficher les sondes configurées et leurs propriétés pour une application, accédez à l'onglet Configuration > Options de démarrage de l'image sur la page de votre application.
  4. Editez les paramètres de sonde de vivacité et de préparation à partir de l'onglet Options de démarrage de l'image. La modification d'une vérification crée une nouvelle révision d'application. Par exemple, éditez la sonde de préparation par défaut pour changer le type de connexion de TCP en HTTP et définissez le chemin de la sonde de préparation sur /readinessprobe. Pour plus d'informations sur les propriétés de la sonde, voir Propriétés. Cliquez sur Terminé lorsque vous avez terminé.
  5. Cliquez sur Déployer pour sauvegarder votre modification et déployer la révision d'application avec les paramètres de sonde configurés.

Utilisez la vue de l'onglet Instances pour vérifier les instances d'application.

Configuration de sondes avec l'interface de ligne de commande

Vous pouvez utiliser des sondes de vivacité et de préparation avec l'interface de ligne de commande Code Engine. Spécifiez l'option --probe-live ou --probe-ready avec la commande ibmcloud ce app create ou ibmcloud ce app update pour configurer la sonde de votre choix.

Pour plus d'informations sur les propriétés que vous pouvez configurer avec une sonde de disponibilité ou d'activité, voir Propriétés de la sonde de disponibilité et d'activité.

Avant de commencer

  1. Créez une application à l'aide de la commande ibmcloud ce application create. Dans l'exemple suivant, utilisez myapp comme nom de l'application et indiquez icr.io/codeengine/helloworld comme référence.

    ibmcloud ce application create --name myapp --image icr.io/codeengine/helloworld
    
  2. Exécutez la commande application get pour afficher les détails de l'application. Notez que la sonde de préparation est configurée par défaut.

    ibmcloud ce application get --name myapp
    

    Exemple de sortie

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Readiness Probe:    
        Type:              tcpsocket  
        Port:              0  
    [...]
    
  3. Mettez à jour l'application myapp avec la commande ibmcloud ce application update pour configurer une sonde de vivacité. Par exemple, spécifiez l'option --probe-live pour configurer une sonde de vivacité de type HTTP de sorte que la connexion utilise le port 8080 et que le chemin d'accès au répertoire de base de votre image de code référencée * * soit /.

    Lorsque vous configurez les propriétés d'une sonde de préparation ou d'activité sur les commandes application create ou application update, vous devez indiquer l'option --probe-live ou --probe-ready avant chaque propriété que vous définissez.

    ibmcloud ce application update --name myapp --probe-live type=http --probe-live path=/ --probe-live port=8080
    
  4. Exécutez la commande application get pour afficher les détails de l'application myapp mise à jour. Les détails incluent des informations sur la sonde de vivacité configurée.

    ibmcloud ce application get --name myapp
    

    Exemple de sortie

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Liveness Probe:     
        Type:              httpget  
        Path:              /  
        Port:              8080  
        Interval:          10  
        Timeout:           1  
        FailureThreshold:  1  
    
    Readiness Probe:    
        Type:              tcpsocket  
        Port:              0  
    [...]
    

Maintenant que vous avez configuré à la fois une sonde de vivacité et de préparation pour votre application myapp, le système effectue constamment les deux sondes en fonction de leur configuration.

Affichage des paramètres de sonde dans Code Engine

Vous pouvez afficher des informations sur les sondes de vivacité et de préparation définies dans Code Engine à partir de la console et à l'aide de l'interface de ligne de commande.

Affichage des paramètres de sonde à partir de la console

Pour afficher les détails de vos sondes d'activité et de préparation configurées dans la console, accédez à l'onglet Configuration > Options de démarrage de l'image sur la page de votre application.

Affichage des paramètres de sonde avec l'interface de ligne de commande

Pour afficher des détails sur votre application à l'aide de l'interface de ligne de commande, y compris des informations sur les sondes d'activité et de préparation configurées, exécutez la commande application get.

ibmcloud ce application get --name myapp

Exemple de sortie

[...]
OK

Name:               myapp
ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:       myproject
[...]
Liveness Probe:     
    Type:              httpget  
    Path:              /  
    Port:              8080  
    Interval:          10  
    Timeout:           1  
    FailureThreshold:  1  

Readiness Probe:    
    Type:              tcpsocket  
    Port:              0  
[...]

Mise à jour des sondes

Vous pouvez modifier les propriétés des sondes de vivacité et de préparation pour vos applications. Lorsque vous mettez à jour les propriétés d'une sonde, une nouvelle révision d'application est créée. Les sondes de vivacité et de préparation sont envoyées aux instances d'application à l'intervalle configuré pendant l'exécution des instances.

Mise à jour des sondes à partir de la console

Vous pouvez modifier ou éditer une sonde de préparation ou de vivacité dans la console, à partir de l'onglet Configuration > Options de démarrage de l'image de la page de votre application.

  1. Accédez à votre page de candidature. L'une des méthodes permettant d'accéder à la page de votre application est la suivante :
    • Recherchez la page des projetsCode Engine.
    • Cliquez sur le nom de votre projet pour ouvrir la page de présentation.
    • Cliquez sur Applications pour ouvrir la liste de vos applications. Cliquez sur le nom de votre application pour ouvrir la page de l'application.
  2. Dans la page de l'application, cliquez sur l'onglet Configuration > Options de démarrage de l'image dans la page de l'application.
  3. Editez les paramètres de sonde de vivacité et de préparation à partir de l'onglet Options de démarrage de l'image. La modification d'une vérification crée une nouvelle révision d'application. Cliquez sur Editer pour modifier la sonde de préparation ou de vivacité à modifier.
  4. Dans la page Readiness probe ou Liveness probe, mettez à jour les propriétés de votre sonde. Cliquez sur Terminé lorsque vous avez terminé.
  5. Cliquez sur Déployer pour sauvegarder votre modification et déployer la révision d'application avec les paramètres de sonde configurés.

Utilisez la vue de l'onglet Instances pour vérifier les instances d'application.

Mise à jour des sondes avec le CLI

Supposons que vous souhaitiez mettre à jour la sonde de vivacité pour myapp de sorte que le type de connexion soit HTTP et que le seuil d'échec soit 3 et que l'intervalle entre les demandes de sonde soit de 5 secondes.

  1. Mettez à jour l'application myapp à l'aide de la commande ibmcloud ce application update pour mettre à jour la sonde de vivacité de sorte que le type de connexion soit HTTP, que le seuil d'échec soit 3 et que l'intervalle entre les demandes de sonde soit de 5 secondes.

    Lorsque vous configurez les propriétés d'une sonde de préparation ou d'activité sur les commandes application create ou application update, vous devez indiquer l'option --probe-live ou --probe-ready avant chaque propriété que vous définissez.

    ibmcloud ce application update --name myapp --probe-live type=http --probe-live interval=5 --probe-live failure-threshold=3
    
  2. Exécutez la commande application get pour afficher les détails de l'application myapp mise à jour. Les détails incluent des informations sur la configuration en cours de l'analyse d'activité.

    ibmcloud ce application get --name myapp
    

    Exemple de sortie

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Liveness Probe:     
        Type:              httpget  
        Path:              /  
        Port:              8080  
        Interval:          5  
        Timeout:           1  
        FailureThreshold:  3  
    
    Readiness Probe:    
        Type:              tcpsocket  
        Port:              0  
    [...]
    
  3. Mettez à jour l'application myapp à l'aide de la commande ibmcloud ce application update pour mettre à jour la sonde de disponibilité de sorte que le type de connexion soit HTTP, que le port soit 8080, que le seuil d'échec soit 3 et que l'intervalle entre les demandes de sonde soit de 5 secondes.

    Lorsque vous configurez les propriétés d'une sonde de préparation ou d'activité sur les commandes application create ou application update, vous devez indiquer l'option --probe-live ou --probe-ready avant chaque propriété que vous définissez.

    ibmcloud ce application update --name myapp --probe-ready type=http --probe-ready port=8080 --probe-ready interval=5 --probe-ready failure-threshold=3
    
  4. Exécutez la commande application get pour afficher les détails de l'application myapp mise à jour. Les détails incluent des informations sur le paramètre mis à jour pour la sonde de préparation.

    ibmcloud ce application get --name myapp
    

    Exemple de sortie

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Liveness Probe:     
        Type:              httpget  
        Path:              /  
        Port:              8080  
        Interval:          5  
        Timeout:           1  
        FailureThreshold:  3  
    
    Readiness Probe:    
        Type:              httpget  
        Path:              /  
        Port:              8080  
        Interval:          5  
        Timeout:           1  
        FailureThreshold:  3  
    [...]
    

Suppression de sondes

Vous pouvez supprimer (supprimer) une sonde de vivacité. Toutefois, comme une sonde de préparation est toujours définie par défaut, vous pouvez uniquement l'éditer pour mettre à jour les propriétés d'une sonde de préparation.

Suppression de sondes de la console

A partir de la console, vous pouvez supprimer une sonde de vivacité de l'onglet Configuration > Options de démarrage de l'image de la page de votre application.

  1. Accédez à votre page de candidature. L'une des méthodes permettant d'accéder à la page de votre application est la suivante :
    • Recherchez la page des projetsCode Engine.
    • Cliquez sur le nom de votre projet pour ouvrir la page de présentation.
    • Cliquez sur Applications pour ouvrir la liste de vos applications. Cliquez sur le nom de votre application pour ouvrir la page de l'application.
  2. Dans la page d'application, cliquez sur l'onglet Configuration, puis sur l'onglet Options de démarrage de l'image de la page d'application.
  3. Pour supprimer une sonde de vivacité, vous devez créer une nouvelle révision d'application.
    1. Cliquez sur Supprimer pour supprimer la sonde de vivacité.
    2. Cliquez sur Déployer pour enregistrer vos modifications et déployer la révision de l'application.

Vous ne pouvez pas supprimer une sonde de préparation, mais vous pouvez la mettre à jour.

Suppression de sondes avec l'interface de ligne de commande

  1. Pour supprimer la sonde de vivacité, mettez à jour l'application myapp avec la commande ibmcloud ce application update avec l'option --probe-live-clear.

    ibmcloud ce application update --name myapp --probe-live-clear
    
  2. Exécutez la commande application get pour afficher les détails de l'application myapp mise à jour. La sonde de vivacité est supprimée.

    ibmcloud ce application get --name myapp
    

    Exemple de sortie

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Readiness Probe:    
        Type:              httpget  
        Path:              /  
        Port:              8080  
        Interval:          5  
        Timeout:           1  
        FailureThreshold:  3   
    [...]
    
  3. Pour rétablir la configuration par défaut de la sonde de préparation, mettez à jour l'application myapp avec la commande ibmcloud ce application update avec l'option --probe-ready-reset.

    ibmcloud ce application update --name myapp --probe-ready-reset
    
  4. Exécutez la commande application get pour afficher les détails de l'application myapp mise à jour. La configuration par défaut de la sonde de préparation est rétablie.

    ibmcloud ce application get --name myapp
    

    Exemple de sortie

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Readiness Probe:    
        Type:              tcpsocket  
        Port:              0  
    [...]