Ce tutoriel explique comment utiliser un hook de cycle de vie Auto Scaling pour mettre une instance ECS en attente et exploiter un modèle CloudOps Orchestration Service (OOS) afin d'ajouter ou de supprimer automatiquement l'instance de la liste d'autorisation d'une instance Tair.
Prérequis
Un groupe de mise à l'échelle est créé et se trouve à l'état Activé.
Une instance Tair est créée.
-
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 sert d'exemple. Vous pouvez également utiliser d'autres rôles.
Contexte
Un groupe de mise à l'échelle peut être associé à des instances Server Load Balancer (SLB) et à des instances ApsaraDB RDS, mais pas à des instances Tair. Si vous stockez des données métier sur une instance Tair, l'ajout ou la suppression manuelle d'instances ECS dans la liste d'autorisation de l'instance Tair s'avère inefficace. Vous pouvez recourir aux hooks de cycle de vie et aux modèles OOS pour ajouter et supprimer automatiquement les instances ECS de la liste d'autorisation de l'instance Tair.
Procédure
Ce tutoriel montre comment utiliser le modèle OOS public ACS-ESS-LifeCycleModifyRedisIPWhitelist pour ajouter une instance ECS à la liste d'autorisation d'une instance Tair lors d'un scale-out.
Pour retirer une instance ECS de la liste d'autorisation d'une instance Tair lors d'un scale-in, créez un hook de cycle de vie pour les activités de scale-in, puis déclenchez un scale-in.
Étape 1 : Accorder des autorisations au rôle RAM OOS
L'exécution du modèle OOS ACS-ESS-LifeCycleModifyRedisIPWhitelist requiert des autorisations pour les ressources Elastic Compute Service, Auto Scaling et Tair (Redis OSS-compatible) concernées.
Connectez-vous à la console RAM.
-
Créez une stratégie d'autorisation.
Dans le volet de navigation de gauche, sélectionnez .
Sur la page Policies, cliquez sur Create Policy.
-
Sur la page Create Policy, cliquez sur l'onglet JSON Editor, configurez les paramètres, puis cliquez sur OK.
Le tableau suivant décrit les paramètres. Utilisez les valeurs par défaut pour les paramètres non mentionnés.
Parameter
Description
Name
Saisissez
ESSHookPolicyForRedisWhitelist.Policy Document
Saisissez le contenu suivant :
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "kvstore:ModifySecurityIps" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
-
Attachez la stratégie d'autorisation au rôle RAM OOSServiceRole.
Dans le volet de navigation de gauche, sélectionnez .
-
Repérez le rôle RAM OOSServiceRole et cliquez sur Grant Permission dans la colonne Actions.
Ajoutez les autorisations requises pour le rôle RAM OOSServiceRole endossé par OOS afin de finaliser l'autorisation.
-
Sur la page Grant Permission, configurez l'étendue de l'autorisation et les autorisations, puis cliquez sur OK.
Le tableau suivant décrit les paramètres. Utilisez les valeurs par défaut pour les paramètres non mentionnés.
Parameter
Description
Resource Range
Sélectionnez Account.
Policies
Attachez la stratégie personnalisée nommée
ESSHookPolicyForRedisWhitelist.
Étape 2 : Créer et déclencher un hook de scale-out
Lors de la création d'un hook de cycle de vie, sélectionnez OOS Template comme méthode de notification et configurez les paramètres requis. Cela garantit qu'une instance ECS est automatiquement ajoutée à la liste d'autorisation de l'instance Tair lorsqu'un scale-out 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.
-
Repérez le groupe de mise à l'échelle que vous souhaitez gérer et ouvrez sa page de détails en procédant de l'une des façons 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 le scale-out.
En haut de la page, cliquez sur l'onglet Events and Lifecycle Hooks.
Cliquez sur Create Lifecycle Hook.
-
Configurez le hook de cycle de vie et cliquez sur OK.
Le tableau suivant décrit les paramètres. Utilisez les valeurs par défaut pour les paramètres non mentionnés.
Parameter
Description
Name
Saisissez
ESSHookForAddRedisWhitelist.Scaling Activity Type
Sélectionnez Scale-Out.
Timeout Period
Indiquez un délai d'expiration approprié, par exemple 300 secondes.
RemarqueLe délai d'expiration correspond au temps disponible pour exécuter des actions personnalisées. Si ce délai est trop court, les actions peuvent échouer. Évaluez le temps nécessaire à vos actions personnalisées et définissez un délai d'expiration approprié.
Default Execution Policy
Configurez le modèle avec les paramètres suivants :
Méthode de notification : Sélectionnez Continue.
Type de modèle OOS : Sélectionnez Send Notification When Lifecycle Hook Takes Effect.
Modèle public : Sélectionnez ACS-ESS-LifeCycleModifyRedisIPWhitelist.
Configurez les paramètres d'exécution pour
ACS-ESS-LifeCycleModifyRedisIPWhitelistavec les réglages suivants :OOS Template : Saisissez l'ID de votre instance Tair.
Public Templates : Sélectionnez
Append, ce qui correspond à un scale-out et ajoute l'instance ECS à la liste d'autorisation de l'instance Tair.RedisInstanceId : Sélectionnez OOSServiceRole. Dans la procédure, les autorisations de gestion des ressources ECS, Auto Scaling et Redis ont été ajoutées au rôle RAM OOSServiceRole. Le service OOS endosse ce rôle pour obtenir les autorisations requises.
-
Déclenchez un scale-out.
Ce tutoriel montre comment exécuter manuellement une règle de mise à l'échelle pour déclencher un scale-out. Vous pouvez également utiliser des tâches planifiées ou des tâches déclenchées par des événements pour lancer un scale-out.
RemarqueLes hooks de cycle de vie ne prennent effet que lorsqu'une règle de mise à l'échelle déclenche un scale-out ou un scale-in. Ils ne s'appliquent pas lorsque vous ajoutez ou supprimez manuellement des instances ECS existantes.
Cliquez sur l'onglet ModifyIPWhitelistMode.
Sur l'onglet RAM role assumed by OOS, cliquez sur Scaling Rules and Event-triggered Tasks.
-
Définissez les paramètres de la règle de mise à l'échelle et cliquez sur Scaling Rules.
Le tableau suivant décrit les paramètres. Utilisez les valeurs par défaut pour les paramètres non mentionnés.
Parameter
Description
Create Scaling Rule
Saisissez
Add1.OK
Sélectionnez Rule Name.
Rule Type
Définissez la valeur sur
Add 1 instance. Repérez la règle de mise à l'échelle
Add1que vous avez créée et cliquez sur Simple Scaling Rule dans la colonne Operation.Cliquez sur Perform.
Après l'exécution de la règle de mise à l'échelle, une instance ECS est automatiquement créée. Le hook de cycle de vie
ESSHookForAddRedisWhitelistmet ensuite l'instance en attente et notifie le service OOS pour exécuter les opérations définies dans le modèleACS-ESS-LifeCycleModifyRedisIPWhitelist.
Étape 3 : Consulter la liste d'autorisation de l'instance Tair
Connectez-vous à la console de Tair (Redis OSS-compatible).
Dans le volet de navigation de gauche, cliquez sur Actions.
Repérez votre instance Tair et cliquez sur son ID dans la colonne OK.
-
Dans le volet de navigation de gauche, cliquez sur Instance List.
Si l'adresse IP privée de la nouvelle instance ECS apparaît dans la liste d'autorisation de l'instance Tair, le modèle
ACS-ESS-LifeCycleModifyRedisIPWhitelista été exécuté avec succès.Si l'instance ECS existe mais que son adresse IP privée ne figure pas dans la liste d'autorisation de l'instance Tair, vérifiez l'état d'exécution de la tâche OOS dans la console OOS. Pour plus de détails, consultez la section (Facultatif) Étape 4 : Vérifier l'exécution OOS.
(Facultatif) Étape 4 : Vérifier l'exécution OOS
Connectez-vous à la console OOS.
Dans le volet de navigation de gauche, sélectionnez .
Repérez la tâche d'exécution par date et heure, puis cliquez sur Automated Task dans la colonne Task Execution Management.
-
Sur la page des détails de l'exécution, consultez les informations d'exécution.
Par exemple, vous pouvez afficher l'ID et l'état de l'exécution dans la section Details. Vous pouvez également cliquer sur un nœud de tâche dans la section Actions pour consulter ses détails. Pour plus d'informations, consultez la rubrique Afficher les détails d'une exécution de tâche.
RemarqueSi une exécution échoue, la page des détails de l'exécution affiche le message d'erreur.
FAQ
Si vous ne parvenez pas à exécuter une tâche d'exploitation et de maintenance, résolvez le problème en vous basant sur le message d'erreur figurant dans le résultat de l'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 arrêtée. |
Évaluez le délai 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. |