Ce tutoriel explique comment utiliser un hook de cycle de vie Auto Scaling pour suspendre une instance ECS et un modèle CloudOps Orchestration Service (OOS) afin d'exécuter automatiquement un script sur l'instance lors des activités de mise à l'échelle.
Prérequis
Un groupe de mise à l'échelle est créé et se trouve à l'état Activé.
Vous disposez d'un script prêt à l'emploi. Ce tutoriel utilise comme exemple un script qui installe Apache sur une instance Linux CentOS 7.6.
-
Un rôle RAM (Resource Access Management) est créé pour OOS. L'entité de confiance du rôle RAM doit être Alibaba Cloud Service, le service de confiance doit être CloudOps Orchestration Service, et le rôle RAM doit disposer des autorisations nécessaires pour effectuer des opérations sur le modèle OOS. Pour plus d'informations, consultez la rubrique Créer un rôle RAM pour OOS et accorder des autorisations.
RemarqueDans cette rubrique, le rôle RAM OOSServiceRole est utilisé à titre d'exemple. Vous pouvez également utiliser d'autres rôles.
Procédure
Ce tutoriel utilise le modèle OOS public ACS-ESS-LifeCycleRunCommand pour illustrer l'exécution automatique d'un script sur une instance ECS lors d'un événement de mise à l'échelle horizontale (scale-out).
Étape 1 : Configurer les autorisations du rôle RAM OOS
Le modèle ACS-ESS-LifeCycleRunCommand requiert des autorisations pour gérer les ressources ECS et Auto Scaling. Vous devez accorder ces autorisations au rôle RAM assumé par OOS.
Connectez-vous à la console RAM.
-
Créez une politique.
Dans le volet de navigation de gauche, sélectionnez .
Sur la page Policies, cliquez sur Create Policy.
-
Sur la page Create Policy, sélectionnez l'onglet JSON, configurez les paramètres, puis cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans ce tutoriel. Utilisez les valeurs par défaut pour les autres paramètres.
Parameter
Description
Name
Saisissez ESSHookPolicyForRunCommand.
Policy Document
Saisissez le contenu suivant :
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInvocationResults", "ecs:DescribeInvocations", "ecs:RunCommand" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
-
Attachez la politique au rôle RAM OOSServiceRole.
Dans le volet de navigation de gauche, sélectionnez .
-
Localisez le rôle RAM OOSServiceRole et cliquez sur Grant Permission dans la colonne Actions.
Ajoutez les autorisations requises pour le rôle RAM OOSServiceRole assumé par OOS afin de finaliser l'autorisation.
-
Sur la page Grant Permission, spécifiez l'étendue des ressources et les autorisations, puis cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans ce tutoriel. Utilisez les valeurs par défaut pour les autres paramètres.
Parameter
Description
Resource Scope
Sélectionnez Account.
Policies
Ajoutez la politique personnalisée ESSHookPolicyForRunCommand.
Étape 2 : Créer un hook de cycle de vie pour les événements de mise à l'échelle horizontale
Lors de la création du hook de cycle de vie, configurez-le pour utiliser un modèle OOS. Cela garantit l'exécution automatique du script lorsqu'un événement de mise à l'échelle horizontale est déclenché.
Connectez-vous à la console Auto Scaling.
Dans le volet de navigation de gauche, cliquez sur Scaling Groups.
Dans la barre de navigation supérieure, sélectionnez une région.
-
Localisez le groupe de mise à l'échelle que vous souhaitez gérer et accédez à sa page de détails en utilisant l'une des méthodes suivantes :
Dans la colonne Scaling Group Name/ID, cliquez sur l'ID du groupe de mise à l'échelle.
Dans la colonne Actions, cliquez sur Details.
-
Créez un hook de cycle de vie pour l'événement de mise à l'échelle horizontale.
En haut de la page, cliquez sur l'onglet Events and Lifecycle Hooks.
Cliquez sur Create Lifecycle Hook.
-
Configurez les paramètres du hook de cycle de vie et cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans ce tutoriel. Utilisez les valeurs par défaut pour les autres paramètres.
Parameter
Description
Name
Saisissez ESSHookForRunCommand.
Scaling Activity Type
Sélectionnez Scale-Out.
Timeout Period
Indiquez une durée d'expiration, par exemple 300 secondes.
RemarqueLa durée d'expiration définit le temps maximal alloué aux opérations personnalisées. Si ce délai est trop court, les opérations peuvent échouer. Évaluez le temps nécessaire à vos opérations personnalisées et définissez une durée d'expiration appropriée.
Default Execution Policy
Sélectionnez Continue.
Send Notification When Lifecycle Hook Takes Effect
Configurez le modèle comme suit :
-
Méthode de notification : Sélectionnez OOS Template.
-
Type de modèle OOS : Sélectionnez Public Templates.
-
Modèle public : Sélectionnez ACS-ESS-LifeCycleRunCommand.
Configurez les paramètres d'exécution pour ACS-ESS-LifeCycleRunCommand comme suit :
-
commandType : Sélectionnez RunShellScript.
-
commandContent : Saisissez le script à exécuter. Ce tutoriel utilise comme exemple le script qui installe automatiquement Apache.
yum install -y httpd systemctl start httpd systemctl enable httpd -
OOSAssumeRole : Sélectionnez OOSServiceRole. Dans la section Procédure, vous avez accordé à ce rôle les autorisations nécessaires pour gérer les ressources ECS et Auto Scaling. OOS assume ce rôle RAM pour obtenir ces autorisations.
-
-
Déclenchez un événement de mise à l'échelle horizontale.
Ce tutoriel utilise une règle de mise à l'échelle exécutée manuellement à titre d'exemple. Vous pouvez également déclencher des événements de mise à l'échelle horizontale à l'aide de tâches planifiées ou basées sur des événements.
RemarqueLes hooks de cycle de vie sont déclenchés par des règles de mise à l'échelle, mais pas par l'ajout ou la suppression manuelle d'instances ECS dans un groupe de mise à l'échelle.
Sur la page de détails du groupe de mise à l'échelle, cliquez sur l'onglet Scaling Rules and Event-triggered Tasks.
Sur l'onglet Scaling Rules, cliquez sur Create Scaling Rule.
-
Définissez les paramètres de la règle de mise à l'échelle et cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans ce tutoriel. Utilisez les valeurs par défaut pour les autres paramètres.
Parameter
Description
Rule Name
Saisissez Add1.
Rule Type
Sélectionnez Simple Scaling Rule.
Operation
Définissez l'ajout d'une instance.
Dans la liste des règles de mise à l'échelle, localisez la règle Add1 et cliquez sur Recurrently dans la colonne Actions.
Cliquez sur OK.
Après l'exécution de la règle de mise à l'échelle, une instance ECS est automatiquement créée. Étant donné que le hook de cycle de vie ESSHookForRunCommand existe dans le groupe de mise à l'échelle, la nouvelle instance entre dans un état d'attente. OOS est alors notifié pour effectuer les opérations définies dans le modèle ACS-ESS-LifeCycleRunCommand.
-
Vérifiez que l'instance ECS créée automatiquement est correctement configurée.
En haut de la page, cliquez sur l'onglet Instance Management.
Localisez l'instance ECS créée automatiquement et cliquez sur son ID dans la colonne ECS Instance ID/Name.
Dans le volet de navigation de gauche, cliquez sur Cloud Assistant.
Dans le coin supérieur droit de la page, cliquez sur Create/Run Command.
-
Exécutez la commande suivante pour vérifier l'état de l'installation d'Apache.
Pour plus d'informations, consultez la rubrique Créer et exécuter une commande. Le contenu de la commande est le suivant :
systemctl status httpdSur l'onglet Command Execution Result, consultez les détails de l'exécution. Si le résultat indique que le service Apache est installé et que son statut est actif, le script défini dans le paramètre commandContent du modèle ACS-ESS-LifeCycleRunCommand a été exécuté avec succès.
Si une instance ECS est créée mais qu'Apache ne s'installe pas automatiquement, accédez à la console OOS pour consulter les détails de l'exécution de la tâche. Pour plus d'informations, consultez la section (Facultatif) Étape 3 : Consulter les détails de l'exécution OOS.
(Facultatif) Étape 3 : Consulter les détails de l'exécution OOS
Connectez-vous à la console OOS.
Dans le volet de navigation de gauche, sélectionnez .
Localisez la tâche d'exécution par date et heure, puis cliquez sur Details dans la colonne Actions.
-
La page des détails d'exécution fournit une vue d'ensemble complète de la tâche.
Par exemple, vous pouvez consulter l'ID d'exécution et son statut dans la section Basic Information. Vous pouvez également cliquer sur un nœud de tâche dans la section Execution Result pour afficher ses détails. Pour plus d'informations, consultez la rubrique Afficher les détails d'une exécution.
RemarqueEn cas d'échec de l'exécution, le message d'erreur correspondant s'affiche sur la page des détails d'exécution.
FAQ
Si l'exécution d'une tâche d'exploitation et de maintenance échoue, résolvez le problème en vous basant sur le message d'erreur présent dans le résultat d'exécution. Pour plus d'informations, consultez la rubrique FAQ.
Le tableau suivant décrit les messages d'erreur courants.
|
Error message |
Cause |
Solution |
|
Forbidden.Unauthorized message: A required authorization for the specified action is not supplied. |
Vous n'avez pas autorisé Auto Scaling à effectuer l'action actuelle. |
Vérifiez si le rôle RAM OOSServiceRole dispose des autorisations requises. |
|
Forbidden.RAM message: User not authorized to operate on the specified resource, or this API doesn't support RAM. |
L'utilisateur RAM ou le rôle RAM ne dispose pas des autorisations nécessaires pour opérer sur les ressources correspondantes. |
Vérifiez si le rôle RAM OOSServiceRole dispose des autorisations requises. Par exemple, vous pouvez accorder des autorisations OOS au rôle RAM. Avant qu'OOS puisse gérer les ressources déclarées dans le modèle OOS, vous devez accorder les autorisations nécessaires au rôle RAM. |
|
LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken and lifecycleActionId you provided does not match any in process lifecycle action. |
L'action de hook de cycle de vie en cours est terminée ou a été arrêtée. |
Évaluez la durée d'expiration du hook de cycle de vie afin de vous assurer que les tâches d'exploitation et de maintenance spécifiées dans le modèle OOS peuvent être achevées dans le délai imparti. |
Références
Pour exécuter des scripts sur des instances ECS existantes dans un groupe de mise à l'échelle, utilisez la fonctionnalité de mise à jour progressive. Pour plus d'informations, consultez les rubriques suivantes :