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.
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 |
|---|---|---|
|
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. |
|
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://) — L'instance que le profil IAM doit avoirbucket/keys3:GetObjectsur 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 avecscriptSource.s3VersionId(emplacements S3 uniquement). -
HTTPS (
https://) : 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.hostname/path
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 |
|---|---|
|
Identifiant/nom du cluster |
|
Identifiant/nom du groupe de nœuds de calcul |
|
Identifiant du nœud |
|
|
#!/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 |
|---|---|---|
|
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. |
|
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. |
|
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 leonErrorcomportement 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.executionPolicyEVERY_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.