Ce tutoriel explique comment utiliser un hook de cycle de vie Auto Scaling pour placer une instance ECS en attente, puis exploiter un modèle CloudOps Orchestration Service (OOS) afin d'ajouter ou de supprimer automatiquement cette instance de la liste d'autorisation d'adresses IP d'un cluster AnalyticDB for MySQL.
Prérequis
Un groupe de mise à l'échelle est créé et se trouve à l'état Activé.
Un cluster AnalyticDB for MySQL est créé.
-
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 clusters AnalyticDB for MySQL. Si vos données métier résident dans un cluster AnalyticDB for MySQL, la gestion manuelle de la liste d'autorisation d'adresses IP pour les instances ECS s'avère inefficace. Pour automatiser ce processus, utilisez un hook de cycle de vie combiné à un modèle OOS.
Procédure
Ce tutoriel illustre l'utilisation du modèle public OOS ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist pour ajouter une instance ECS à la liste d'autorisation d'adresses IP d'un cluster AnalyticDB for MySQL lors d'une opération de scale-out. Suivez les étapes ci-dessous :
Pour supprimer automatiquement une instance ECS de la liste d'autorisation d'adresses IP d'un cluster AnalyticDB for MySQL lors d'une opération de scale-in, créez un hook de cycle de vie dédié au scale-in, puis déclenchez une opération de scale-in.
Étape 1 : Accorder des autorisations OOS à un rôle RAM
Vous devez disposer des autorisations nécessaires pour exécuter des modèles OOS. Le modèle ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist requiert des autorisations pour gérer les ressources ECS, Auto Scaling et AnalyticDB for MySQL.
Connectez-vous à la console RAM.
-
Créez une stratégie.
Dans le volet de navigation de gauche, sélectionnez .
Sur la page Policies, cliquez sur Create Policy.
-
Sur la page Create Policy, accédez à l'onglet JSON, configurez les paramètres, puis cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans ce tutoriel. Conservez les valeurs par défaut pour les autres paramètres.
Parameter
Description
Name
Saisissez ESSHookPolicyForAnalyticDBWhitelist.
Policy Document
Saisissez le contenu suivant :
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "adb:ModifyDBClusterAccessWhiteList" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
-
Attachez la stratégie 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, assumé par OOS afin de finaliser l'autorisation.
-
Sur la page Grant Permission, configurez les paramètres, puis cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans ce tutoriel. Conservez les valeurs par défaut pour les autres paramètres.
Parameter
Description
Authorized scope
Sélectionnez Alibaba Cloud Account.
Policy
Sélectionnez la stratégie personnalisée ESSHookPolicyForAnalyticDBWhitelist.
Étape 2 : Créer et déclencher un hook de cycle de vie pour le scale-out
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 à 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 scale-out.
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, puis cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans ce tutoriel. Conservez les valeurs par défaut pour les autres paramètres.
Parameter
Description
Name
Saisissez ESSHookForAddAnalyticDBWhitelist.
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 alloué à l'exécution de l'action personnalisée. Évaluez la durée nécessaire à l'action et définissez un délai approprié pour éviter les échecs.
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-LifeCycleModifyAnalyticDBIPWhitelist.
Configurez les paramètres d'exécution pour ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist comme suit :
-
dbClusterId : Saisissez l'ID de votre cluster AnalyticDB for MySQL.
-
modifyMode : Sélectionnez Append. Cette option s'applique à un événement de scale-out et ajoute l'instance ECS à la liste d'autorisation d'adresses IP du cluster AnalyticDB for MySQL.
-
RAM role assumed by OOS : Sélectionnez OOSServiceRole. Dans la procédure, le rôle RAM OOSServiceRole a reçu les autorisations nécessaires pour gérer ECS, Auto Scaling et AnalyticDB for PostgreSQL. Le service OOS assume ce rôle pour obtenir ces autorisations.
-
-
Déclenchez un événement de scale-out.
Ce tutoriel utilise une règle de mise à l'échelle exécutée manuellement à titre d'exemple, mais vous pouvez également déclencher un événement de scale-out via une tâche planifiée ou basée sur un événement.
RemarqueSi des activités de mise à l'échelle sont déclenchées lors de l'exécution manuelle des règles de mise à l'échelle, les hooks de cycle de vie prennent effet. Les hooks de cycle de vie ne prennent pas effet lorsque vous ajoutez ou supprimez manuellement des instances ECS dans ou depuis un 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 propriétés de la règle de mise à l'échelle, puis cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans ce tutoriel. Conservez 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 cette option sur Add 1 Instances.
Dans la liste des règles de mise à l'échelle, repérez la règle Add1 que vous avez créée 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 ESSHookForAddAnalyticDBWhitelist est configuré dans le groupe de mise à l'échelle, l'instance passe à l'état d'attente. OOS est alors notifié pour exécuter les opérations définies dans le modèle ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist.
Étape 3 : Vérifier la liste d'autorisation d'AnalyticDB for MySQL
Connectez-vous à la console AnalyticDB for MySQL.
Dans le volet de navigation de gauche, cliquez sur Clusters.
Repérez le cluster cible et cliquez sur son ID dans la colonne Cluster ID/Description.
-
Dans le volet de navigation de gauche, cliquez sur Data Security.
Si l'adresse IP privée de la nouvelle instance ECS apparaît dans la liste d'autorisation d'adresses IP du cluster AnalyticDB for MySQL, le modèle public ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist fonctionne correctement.
Si une instance ECS est créée mais que son adresse IP privée n'apparaît pas dans la liste d'autorisation d'adresses IP, vérifiez l'état d'exécution de la tâche dans la console OOS. Pour plus d'informations, consultez la section (Facultatif) Étape 4 : Afficher les détails d'exécution OOS.
(Facultatif) Étape 4 : Afficher les détails d'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 Details dans la colonne Actions.
-
Sur la page des détails d'exécution, consultez les informations d'exécution.
Par exemple, vous pouvez afficher l'ID et l'état d'exécution 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, un 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 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. |