View a markdown version of this page

Configurer les actions relatives au cycle de vie des nœuds dans AWS PIÈCES - AWS PIÈCES

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.

Configurer les actions relatives au cycle de vie des nœuds dans AWS PIÈCES

Vous définissez les actions du cycle de vie des nœuds dans la configuration de votre groupe de nœuds de calcul. Cette rubrique explique comment définir un script, contrôler s'il s'exécute de nouveau au redémarrage, le stocker, lui transmettre des arguments, gérer les échecs, le mettre en cache, valider son intégrité et lire ses journaux.

Version de l'agent requise

Les actions relatives au cycle de vie des nœuds nécessitent la version 1.5.0-1 ou ultérieure de l'agent AWS PCS. Si vos nœuds de calcul utilisent une AMI personnalisée avec une ancienne version d'agent, mettez à jour l'agent avant de configurer les actions du cycle de vie. Pour de plus amples informations, veuillez consulter AWS Versions des agents PCS.

Comment définir un script

Chaque script possède unname, ascriptSource, facultatifarguments, une onError politique et unexecutionPolicy. Les champs de localisation et d'intégrité sont regroupés ci-dessousscriptSource.

{ "name": "My script", "scriptSource": { "scriptLocation": "s3://my-bucket/my-script.sh", "s3VersionId": "optional, S3 only", "checksum": "optional 64-char SHA-256 hex" }, "arguments": ["arg1", "arg2"], "onError": "TERMINATE", "executionPolicy": "FIRST_BOOT_ONLY" }

Ajouter des actions de cycle de vie à un groupe de nœuds de calcul

Vous pouvez ajouter des actions de cycle de vie lorsque vous créez ou mettez à jour un groupe de nœuds de calcul. Utilisez le Console de gestion AWS ou le AWS CLI.

Console de gestion AWS
Pour ajouter des actions de cycle de vie à l'aide de la console
  1. Ouvrez la console AWS PCS.

  2. Ouvrez la page de création ou de mise à jour d'un groupe de nœuds de calcul.

  3. Dans la section Actions relatives au cycle de vie des nœuds, choisissez Ajouter un script.

  4. Sélectionnez la source du script :

    1. Ajouter depuis la bibliothèque de scripts AWS PCS — Faites référence AWSà un script maintenu. Pour de plus amples informations, veuillez consulter Utilisation AWS-des scripts gérés pour les actions relatives au cycle de vie des nœuds dans AWS PIÈCES.

    2. Ajouter via S3 — Référencez un script par son URI Amazon S3.

    3. Ajouter via HTTPS — Référencez un script par son URL HTTPS.

  5. Sélectionnez l'étape du nœud.

  6. Pour un script que vous ajoutez via S3 ou HTTPS, spécifiez les paramètres suivants :

    1. Emplacement du script  : entrez l'URI S3 ou l'URL HTTPS du script.

    2. Nom — Entrez un nom pour le script.

    3. (Facultatif) Somme de contrôle  : entrez une SHA-256 somme de contrôle pour vérifier l'intégrité du script. Pour de plus amples informations, veuillez consulter Intégrité du script (sommes de contrôle).

    4. (Facultatif) Pour un script que vous ajoutez via S3, entrez une version faisant référence à une version spécifique de l'objet.

  7. Pour toutes les sources de script, spécifiez les paramètres suivants :

    1. Comportement de gestion des erreurs  : sélectionnez TERMINATESTOP_SEQUENCE, ouCONTINUE.

    2. Politique d'exécution  : sélectionnez FIRST_BOOT_ONLY ouEVERY_BOOT.

    3. (Facultatif) Arguments — Ajoutez des arguments à transmettre au script.

  8. Pour ajouter d'autres scripts, répétez ces étapes.

  9. Les scripts s'exécutent de haut en bas au cours d'une étape. Pour modifier l'ordre d'exécution, choisissez Actions pour un script, puis choisissez Déplacer vers le haut ou Déplacer vers le bas.

  10. Pour la politique de mise en cache, sélectionnez CACHE_ONCE ouREFRESH_ON_REBOOT. La politique de mise en cache s'applique à tous les scripts. Pour de plus amples informations, veuillez consulter Mise en cache et mises à jour des scripts.

AWS CLI

Utilisez le --node-lifecycle-actions paramètre à l'aide de la update-compute-node-group commande create-compute-node-group ou. Pour la structure des paramètres, voir NodeLifecycleActionsRequest la référence de l'API AWS PCS. Pour des exemples de commandes, consultezExemples d'actions relatives au cycle de vie des nœuds pour AWS PIÈCES.

Contrôle du comportement de redémarrage

executionPolicyDéfini par script pour contrôler s'il est réexécuté au redémarrage.

Valeur

Comportement

Quand l’utiliser

FIRST_BOOT_ONLY (par défaut)

Exécutez le script une fois, lors du premier démarrage du nœud. Ignorez-le à chaque redémarrage suivant.

One-time configuration, telle que l'installation de packages, l'adhésion à un domaine ou l'initialisation du stockage. Vous n'êtes pas obligé de rendre ces scripts idempotents.

EVERY_BOOT

Exécutez le script au premier démarrage et à chaque redémarrage.

Configuration qui doit être réappliquée après un redémarrage, telle que le remontage d'un système de fichiers éphémère ou la réaffirmation de l'état d'un nœud.

Les scripts sont configurés pour FIRST_BOOT_ONLY s'exécuter une seule fois et sont ignorés au redémarrage. Les scripts sont configurés pour EVERY_BOOT s'exécuter à chaque démarrage et doivent être idempotents (ils peuvent être exécutés plusieurs fois en toute sécurité avec le même résultat).

Emplacements de stockage des scripts

Vous pouvez stocker des scripts dans Amazon S3 ou les diffuser via HTTPS. Les scripts ne peuvent pas être chargés en ligne via l'API, et chaque script ne doit pas dépasser 2 Mo. L'agent rejette tout script dépassant cette taille.

  • Amazon S3 (s3://bucket/key) — L'instance que le profil IAM doit avoir s3:GetObject sur l'objet. Avec un point de terminaison VPC de passerelle S3, les nœuds des sous-réseaux privés peuvent récupérer des scripts via le point de terminaison VPC. Épinglez une version spécifique avec scriptSource.s3VersionId (emplacements S3 uniquement).

  • HTTPS (https://hostname/path)  : l'hôte doit être lisible par le public (pas d'authentification) et le nœud a besoin d'un accès Internet sortant (passerelle Internet, passerelle NAT ou proxy HTTP). Ceci est utile pour les scripts hébergés sur GitHub ou sur d'autres référentiels publics.

Le stockage externe assure le contrôle des versions, l'auditabilité et la réutilisation entre les équipes. Les scripts en ligne ou chargés ne sont pas pris en charge.

Transmettre des arguments à des scripts

Transmettez les arguments sous forme de tableau ordonné. Ils accèdent à votre script en tant que paramètres de ligne de commande positionnels.

arguments: ["fs-12345678", "/shared", "nfs4"] # script.sh fs-12345678 /shared nfs4 ($1=fs-12345678, $2=/shared, $3=nfs4)

L'agent exporte des variables d'environnement vers chaque script. Ces variables contiennent des métadonnées de cluster et de nœud.

Variable

Description

PCS_CLUSTER_ID / PCS_CLUSTER_NAME

Identifiant/nom du cluster

PCS_COMPUTE_NODE_GROUP_ID / PCS_COMPUTE_NODE_GROUP_NAME

Identifiant/nom du groupe de nœuds de calcul

PCS_NODE_ID

Identifiant du nœud

PCS_IS_FIRST_BOOT

1lors du premier démarrage du nœud, 0 à chaque redémarrage suivant. Utilisez-le pour répartir le comportement dans les EVERY_BOOT scripts.

#!/usr/bin/env bash echo "Configuring node $PCS_NODE_ID in cluster $PCS_CLUSTER_NAME"

Gestion des erreurs

Chaque script possède un onError champ qui contrôle ce qui se passe lorsqu'un script sort d'une valeur différente de zéro ou est interrompu par un signal.

Valeur

Comportement

Quand l’utiliser

TERMINATE (par défaut)

Marquez le nœud en panne et terminez-le.

Configuration critique (montages de stockage, jointure Active Directory). Empêche de payer pour des nœuds cassés.

STOP_SEQUENCE

Arrêtez les scripts restants de la phase ; laissez le nœud en cours d'exécution.

Débogage : inspectez l'instance après une panne.

CONTINUE

Enregistrez l'erreur et exécutez le script suivant.

Tâches facultatives ou nécessitant le meilleur effort.

Un script échoue s'il sort d'une valeur différente de zéro ou s'il est interrompu par un signal (par exemple,SIGSEGV). Les scripts ne sont pas réessayés. Si une opération risque de rencontrer des échecs transitoires, ajoutez une logique de nouvelle tentative dans le script. La récupération du script (téléchargement) est toutefois réessayée, jusqu'à 3 tentatives avec un retard exponentiel (environ 17 secondes maximum), avant que le comportement ne s'applique. onError

Mise en cache et mises à jour des scripts

L'agent télécharge chaque script sur l'instance au premier démarrage et le stocke localement. Deux champs contrôlent le comportement au redémarrage : scriptCachingPolicy contrôle le nouveau téléchargement et executionPolicy contrôle la réexécution.

  • CACHE_ONCE(par défaut) — Téléchargez une fois au premier démarrage ; ne réessayez jamais. Le comportement est identique lors des redémarrages. La mise à jour du contenu du script nécessite le remplacement de l'instance.

  • REFRESH_ON_REBOOT— Re-download à chaque redémarrage, écrasement du cache. Cela vous permet d'envoyer des correctifs de script par le biais d'un redémarrage. Il nécessite un accès réseau à chaque démarrage ; si une actualisation échoue, le téléchargement est traité comme un échec de récupération et le onError comportement du script s'applique (il n'y a pas de solution de repli vers la copie en cache). Un script actualisé ne se réexécute réellement au redémarrage que si c'est le cas. executionPolicy EVERY_BOOT

La configuration du cycle de vie (quels scripts sont exécutés, leurs arguments, la gestion des erreurs et la politique d'exécution) est toujours immuable par instance. Le modifier n'UpdateComputeNodeGroupaffecte que les nouvelles instances et déclenche la DRAIN stratégie afin que les tâches en cours d'exécution se terminent avant que les nœuds ne soient remplacés.

Intégrité du script (sommes de contrôle)

Fournissez éventuellement un SHA-256 checksum dans un scriptscriptSource, sous la forme d'une chaîne hexadécimale de 64 caractères. L'agent le valide lors du téléchargement ; une non-concordance est traitée comme un échec de téléchargement et se déclenche. onError Nous recommandons une somme de contrôle pour la production, en particulier pour les scripts provenant de sources partagées ou externes.

sha256sum mount-efs.sh # use the 64-char hex hash as the checksum value

Journalisation et débogage

Chaque script écrit dans son propre fichier journal et l'agent conserve son propre journal opérationnel.

# agent: download, caching, checksum, orchestration /var/log/amazon/pcs/lifecycle/actions/executor.log # each script's stdout/stderr /var/log/amazon/pcs/lifecycle/actions/<stage>/<script-name>.log

Le nom du fichier journal utilise le nom du script tel que vous l'avez défini. Les espaces sont préservés. Par exemple, un script nommé Mount EFS home directory écrit dansMount EFS home directory.log. Connectez-vous à SSH ou à AWS Systems Manager Session Manager pour les lire. Les deux sont disponibles au fur et à nodeBootstrapped mesure. Dans la mesure où les nœuds défaillants TERMINATE sont remplacés, transférez les journaux hors instance pour les déboguer après la résiliation : ajoutez un script d'amorçage des nœuds qui configure l' CloudWatch agent Amazon pour qu'il envoie le répertoire des journaux du cycle de vie à Amazon Logs. CloudWatch C'est ce que fait configure-cloudwatch-logs.sh le script AWS-maintained. Pour de plus amples informations, veuillez consulter Utilisation AWS-des scripts gérés pour les actions relatives au cycle de vie des nœuds dans AWS PIÈCES.