Cette rubrique explique comment combiner la fonctionnalité de hook de cycle de vie d'Auto Scaling et un modèle CloudOps Orchestration Service (OOS) afin de placer les instances Elastic Compute Service (ECS) dans l'état En attente, puis d'automatiser l'ajout ou la suppression des adresses IP de ces instances dans les listes d'autorisation d'adresses IP des clusters PolarDB.
Prérequis
Un groupe de mise à l'échelle est créé et se trouve dans l'état Activé.
Un cluster PolarDB est créé.
-
Un rôle Resource Access Management (RAM) 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 page 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.
Contexte
Actuellement, Auto Scaling prend uniquement en charge l'intégration avec Server Load Balancer (SLB) et ApsaraDB RDS. Si vous stockez les données de votre application dans un cluster PolarDB, la mise à jour manuelle de la liste d'autorisation d'adresses IP du cluster avec les adresses IP privées de vos instances ECS entraîne une inefficacité opérationnelle. Pour améliorer l'efficacité opérationnelle, vous pouvez automatiser les mises à jour de la liste d'autorisation d'adresses IP de votre cluster PolarDB en combinant la fonctionnalité de hook de cycle de vie d'Auto Scaling et un modèle OOS.
Procédure
Dans cet exemple, un modèle OOS public nommé ACS-ESS-LifeCycleModifyPolarDBIPWhitelist est utilisé pour illustrer comment automatiser l'ajout des adresses IP des instances à la liste d'autorisation d'adresses IP d'un cluster PolarDB lors d'un événement de mise à l'échelle horizontale. Suivez les étapes ci-dessous :
Si vous souhaitez automatiser la suppression des adresses IP des instances de la liste d'autorisation d'adresses IP de votre cluster PolarDB, vous pouvez créer un hook de cycle de vie destiné à la mise à l'échelle verticale et l'appliquer lors d'un événement de mise à l'échelle verticale.
Étape 1 : Accorder à un rôle RAM les autorisations sur OOS
Vous devez disposer des autorisations nécessaires pour exécuter les modèles OOS. Le modèle ACS-ESS-LifeCycleModifyPolarDBIPWhitelist inclut les ressources ECS, Auto Scaling et PolarDB requises pour effectuer les tâches d'exploitation et de maintenance.
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, cliquez sur l'onglet JSON, configurez les paramètres, puis cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans cet exemple. Tous les paramètres non mentionnés dans le tableau conservent leurs valeurs par défaut prédéfinies.
Parameter
Description
Name
Saisissez ESSHookPolicyForPolarDBWhitelist.
Policy Document
Saisissez le contenu suivant :
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "polardb:DescribeDBClusterAccessWhitelist", "polardb: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 .
-
Recherchez 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 l'étendue des ressources et la stratégie, puis cliquez sur Grant Permission.
Le tableau suivant décrit les paramètres utilisés dans cet exemple. Tous les paramètres non mentionnés dans le tableau conservent leurs valeurs par défaut prédéfinies.
Parameter
Description
Resource Scope
Définissez la valeur sur Account.
Policies
Sélectionnez la stratégie personnalisée suivante : ESSHookPolicyForPolarDBWhitelist.
Étape 2 : Créer un hook de cycle de vie pour la mise à l'échelle horizontale et déclencher un événement de mise à l'échelle horizontale
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.
-
Recherchez le groupe de mise à l'échelle que vous souhaitez gérer et ouvrez 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.
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 cet exemple. Tous les paramètres non mentionnés dans le tableau conservent leurs valeurs par défaut prédéfinies.
Parameter
Description
Name
Saisissez ESSHookForAddPolarDBWhitelist.
Scaling Activity Type
Sélectionnez Scale-Out.
Timeout Period
Configurez Timeout Period en fonction de vos besoins métier. Dans cet exemple, définissez la valeur sur 300. Unité : secondes.
RemarqueLa période de délai d'expiration correspond à la durée pendant laquelle vous pouvez effectuer des opérations personnalisées sur les instances. Si la période de délai d'expiration est inférieure au temps nécessaire pour effectuer les opérations personnalisées, celles-ci peuvent échouer. Nous vous recommandons d'estimer la durée requise pour effectuer les opérations personnalisées sur les instances et de configurer Timeout Period en fonction de vos estimations.
Default Execution Policy
Sélectionnez Continue.
Send Notification When Lifecycle Hook Takes Effect
Configurez les paramètres suivants pour le modèle :
-
Méthode de notification : Sélectionnez OOS Template.
-
Type de modèle OOS : Sélectionnez Public Templates.
Sélectionnez ACS-ESS-LifeCycleModifyPolarDBIPWhitelist.
Dans le modèle public ACS-ESS-LifeCycleModifyPolarDBIPWhitelist, vous devez également configurer les paramètres suivants :
dbClusterId : Saisissez l'ID du cluster PolarDB.
modifyMode : Sélectionnez Append. Cette valeur s'applique à l'événement de mise à l'échelle horizontale durant lequel Auto Scaling ajoute les adresses IP privées de vos instances ECS à la liste d'autorisation d'adresses IP du cluster PolarDB.
OOSAssumeRole : Sélectionnez OOSServiceRole. À l'étape 1, le rôle OOSServiceRole reçoit les autorisations sur les ressources ECS, Auto Scaling et PolarDB. OOS obtient les autorisations précédentes après avoir assumé le rôle RAM.
-
-
Déclenchez un événement de mise à l'échelle horizontale.
Dans cet exemple, un événement de mise à l'échelle horizontale est déclenché manuellement en exécutant une règle de mise à l'échelle. Vous pouvez également déclencher des événements de mise à l'échelle horizontale à l'aide de tâches planifiées ou déclenchées par des événements.
RemarqueSi des événements de mise à l'échelle sont déclenchés lorsque vous exécutez manuellement des règles de mise à l'échelle, les hooks de cycle de vie prennent effet. Toutefois, les hooks de cycle de vie ne prennent pas effet lorsque vous ajoutez ou supprimez manuellement des instances ECS dans ou d'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 et cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans cet exemple. Tous les paramètres non mentionnés dans le tableau conservent leurs valeurs par défaut prédéfinies.
Parameter
Description
Rule Name
Saisissez Add1.
Rule Type
Sélectionnez Simple Scaling Rule.
Operation
Définissez la valeur sur Add 1 Instances.
Dans la liste des règles de mise à l'échelle, recherchez 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, Auto Scaling ajoute une instance ECS au groupe de mise à l'échelle. Toutefois, l'instance ECS passe à l'état Pending Add en raison du hook de cycle de vie ESSHookForAddPolarDBWhitelist qui est actif. Pendant la période de délai d'expiration du hook de cycle de vie, Auto Scaling notifie OOS pour qu'il exécute les tâches d'exploitation et de maintenance définies dans le modèle public ACS-ESS-LifeCycleModifyPolarDBIPWhitelist.
Étape 3 : Vérifier la liste d'autorisation d'adresses IP du cluster PolarDB
Connectez-vous à la console PolarDB.
Dans le volet de navigation de gauche, cliquez sur Clusters.
Recherchez le cluster PolarDB et cliquez sur son ID dans la colonne Cluster ID/Name.
-
Dans le volet de navigation de gauche, sélectionnez .
Si l'adresse IP privée de l'instance ECS est ajoutée à la liste d'autorisation d'adresses IP du cluster PolarDB, le modèle public ACS-ESS-LifeCycleModifyPolarDBIPWhitelist prend effet.
Si l'instance ECS est créée mais que son adresse IP privée n'est pas ajoutée à la liste d'autorisation d'adresses IP du cluster PolarDB, accédez à la console OOS pour consulter l'exécution des tâches d'exploitation et de maintenance. Pour plus d'informations, consultez la section Étape 4 : (Facultatif) Afficher l'exécution OOS.
Étape 4 : (Facultatif) Afficher l'exécution OOS
Connectez-vous à la console OOS.
Dans le volet de navigation de gauche, sélectionnez .
Recherchez 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 qui s'affiche, consultez les informations connexes.
Par exemple, vous pouvez afficher l'ID d'exécution et l'état dans la section Basic Information. Dans la section Execution Result, vous pouvez cliquer sur un nœud de tâche pour afficher ses détails. Pour plus d'informations, consultez la page Afficher les détails d'une exécution.
RemarqueSi l'exécution échoue, un message d'erreur s'affiche sur la page des détails d'exécution.
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 d'exécution. Pour plus d'informations, consultez la page 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 les 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 requises 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 période de délai d'expiration du hook de cycle de vie pour 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. |