Tutoriel : mettre à jour les dépendances des applications, appliquer des correctifs à un nœud géré et effectuer un contrôle de santé spécifique à l'application à l'aide de la console - AWS Systems Manager

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tutoriel : mettre à jour les dépendances des applications, appliquer des correctifs à un nœud géré et effectuer un contrôle de santé spécifique à l'application à l'aide de la console

Dans bien des cas, un nœud géré doit être redémarré après l'installation de la dernière mise à jour logicielle. Toutefois, le redémarrage d'un nœud en production sans mesures de protection peut occasionner différents problèmes, comme le déclenchement d'alarmes, l'enregistrement de données métriques incorrectes et l'interruption des synchronisations de données.

Ce didacticiel explique comment éviter de tels problèmes en utilisant le AWS Systems Manager document (SSMdocument) AWS-RunPatchBaselineWithHooks pour réaliser une opération de correction complexe en plusieurs étapes qui permet d'accomplir les tâches suivantes :

  1. Empêcher de nouvelles connexions à l'application

  2. Installer les mises à jour du système d'exploitation

  3. Mettre à jour les dépendances de package de l'application

  4. Redémarrer le système

  5. Effectuer une surveillance de l'état spécifique à l'application

Pour cet exemple, nous avons configuré notre infrastructure de la façon suivante :

  • Les machines virtuelles ciblées sont enregistrées en tant que nœuds gérés auprès de Systems Manager.

  • Iptables est utilisé comme pare-feu local.

  • L'application hébergée sur les nœuds gérés s'exécute sur le port 443.

  • L'application hébergée sur les nœuds gérés est une application nodeJS.

  • L'application hébergée sur les nœuds gérés est gérée par le gestionnaire de processus pm2.

  • L'application dispose déjà d'un point de terminaison de surveillance de l'état spécifié.

  • Le point de terminaison de surveillance de l'état de l'application n'exige aucune authentification de l'utilisateur final. Le point de terminaison autorise une surveillance de l'état qui répond aux exigences de l'organisation en matière d'établissement de la disponibilité. (Dans vos environnements, il pourrait suffire de vérifier simplement que l'application nodeJS est en cours d'exécution et peut écouter les demandes. Dans d'autres cas, vous pouvez également vouloir vérifier qu'une connexion à la couche de mise en cache ou à la couche de base de données est déjà établie.)

Les exemples de ce didacticiel sont fournis à titre indicatif uniquement. Ils ne sont pas destinés à être mis en œuvre en l'état dans les environnements de production. Gardez également à l'esprit que la fonctionnalité Lifecycle Hooks de Patch Manager, une fonctionnalité de Systems Manager, avec le AWS-RunPatchBaselineWithHooks document, peut prendre en charge de nombreux autres scénarios. Voici quelques exemples.

  • Arrêtez l'agent de génération de rapport de métriques avant d'appliquer les correctifs, et relancez-le après le redémarrage du nœud géré.

  • Détachez le nœud géré d'un PCS cluster CRM ou d'un cluster avant de l'appliquer, puis reconnectez-le après le redémarrage du nœud.

  • Mettez à jour les logiciels tiers (par exemple, les applications Java, Tomcat, Adobe, etc.) Windows Server machines après l'application des mises à jour du système d'exploitation (OS), mais avant le redémarrage du nœud géré.

Pour mettre à jour les dépendances des applications, appliquer des correctifs sur un nœud géré et effectuer une surveillance de l'état spécifique à l'application
  1. Créez un SSM document pour votre script de préinstallation avec le contenu suivant et nommez-leNodeJSAppPrePatch. Remplacez your_application avec le nom de votre application.

    Ce script bloque immédiatement les nouvelles demandes entrantes et fournit aux demandes déjà actives un délai de cinq secondes avant de commencer l'opération d'application de correctifs. Pour l'option sleep, spécifiez un nombre de secondes supérieur à ce qu'il faut habituellement aux requêtes entrantes pour s'effectuer.

    # exit on error set -e # set up rule to block incoming traffic iptables -I INPUT -j DROP -p tcp --syn --destination-port 443 || exit 1 # wait for current connections to end. Set timeout appropriate to your application's latency sleep 5 # Stop your application pm2 stop your_application

    Pour plus d'informations sur la création de SSM documents, consultezCréation SSM du contenu du document.

  2. Créez un autre SSM document avec le contenu suivant pour votre script de post-installation afin de mettre à jour les dépendances de votre application et de le nommer. NodeJSAppPostPatch Remplacez /your/application/path avec le chemin d'accès à votre application.

    cd /your/application/path npm update # you can use npm-check-updates if you want to upgrade major versions
  3. Créez un autre SSM document avec le contenu suivant pour votre onExit script afin de réactiver votre application et d'effectuer un contrôle de santé. Donnez un nom à ce SSM documentNodeJSAppOnExitPatch. Remplacez your_application avec le nom de votre application.

    # exit on error set -e # restart nodeJs application pm2 start your_application # sleep while your application starts and to allow for a crash sleep 10 # check with pm2 to see if your application is running pm2 pid your_application # re-enable incoming connections iptables -D INPUT -j DROP -p tcp --syn --destination-port # perform health check /usr/bin/curl -m 10 -vk -A "" http://localhost:443/health-check || exit 1
  4. Créez une association dans State Manager, une capacité de AWS Systems Manager, pour lancer l'opération en effectuant les étapes suivantes :

    1. Ouvrez la AWS Systems Manager console à l'adresse https://console.aws.amazon.com/systems-manager/.

    2. Dans le volet de navigation, choisissez State Manager, puis choisissez Créer une association.

    3. Pour Nom, fournissez un nom permettant d'identifier le but de l'association.

    4. Dans la liste Document, sélectionnez AWS-RunPatchBaselineWithHooks.

    5. Pour Operation (Opération), sélectionnez Install (Installer).

    6. (Facultatif) Pour Snapshot Id, indiquez un GUID que vous générez pour accélérer l'opération et garantir la cohérence. La GUID valeur peut être aussi simple que00000000-0000-0000-0000-111122223333.

    7. Pour Nom de document du hook de préinstallation, saisissez NodeJSAppPrePatch.

    8. Pour Nom de document du hook de postinstallation, saisissez NodeJSAppPostPatch.

    9. Pour On ExitHook Doc Name, entrezNodeJSAppOnExitPatch.

  5. Dans Targets (Cibles), identifiez vos nœuds gérés en spécifiant des balises, en choisissant manuellement les nœuds, en choisissant un groupe de ressources ou en choisissant tous les nœuds gérés.

  6. Pour Spécifier le calendrier, spécifiez la fréquence d'exécution de l'association. La fréquence d'application des correctifs sur les nœuds gérés est couramment définie sur une fois par semaine.

  7. Dans la section Rate control (Contrôle du débit), sélectionnez les options permettant de contrôler la façon dont l'association s'exécute sur plusieurs nœuds gérés. Assurez-vous que seule une partie des nœuds gérés est mise à jour à la fois. Autrement, la totalité ou la majeure partie de votre flotte pourrait être déconnectée en même temps. Pour de plus amples informations sur l'utilisation des contrôles de débit, consultez Comprendre les objectifs et les contrôles de taux dans State Manager associations.

  8. (Facultatif) Dans Output options (Options de sortie), pour enregistrer la sortie de la commande dans un fichier, sélectionnez Enable writing to an S3 bucket (Autoriser l'écriture dans un compartiment S3) Saisissez les noms de compartiment et de préfixe (dossier) dans les zones.

    Note

    Les autorisations S3 qui permettent d'écrire les données dans un compartiment S3 sont celles du profil d'instance attribué au nœud géré, et non celles de l'IAMutilisateur effectuant cette tâche. Pour plus d'informations, consultez Configurer les autorisations d'instance requises pour Systems Manager ou Créer un rôle de IAM service pour un environnement hybride. En outre, si le compartiment S3 spécifié se trouve dans un autre compartiment Compte AWS, vérifiez que le profil d'instance ou le rôle de IAM service associé au nœud géré dispose des autorisations nécessaires pour écrire dans ce compartiment.

  9. Sélectionnez Create Association (Créer une association).