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 d'abord les instances Elastic Compute Service (ECS) dans l'état Pending, puis d'automatiser l'ajout ou la suppression des adresses IP des instances dans les listes d'autorisation IP des instances ApsaraDB for MongoDB (MongoDB).
Prérequis
Un groupe de mise à l'échelle est créé et se trouve dans l'état Enabled.
Une instance MongoDB est créée.
-
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 approuvé 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 section 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
Auto Scaling prend actuellement en charge uniquement l'intégration avec Server Load Balancer (SLB) et ApsaraDB RDS. Si vous stockez les données de votre application sur une instance MongoDB, la mise à jour manuelle de la liste d'autorisation IP de l'instance MongoDB avec les adresses IP privées de vos instances ECS entraîne une inefficacité opérationnelle. Pour améliorer l'efficacité opérationnelle, envisagez d'automatiser les mises à jour de la liste d'autorisation IP de votre instance MongoDB en combinant la fonctionnalité de hook de cycle de vie d'Auto Scaling et un modèle OOS. Tenez compte des remarques d'utilisation suivantes :
Si votre groupe de mise à l'échelle contient des instances ECS existantes, vous devez ajouter manuellement les adresses IP privées des instances ECS à la liste d'autorisation IP de l'instance MongoDB. Sinon, une erreur se produit lors de la suppression d'une adresse IP d'instance de la liste d'autorisation IP de l'instance MongoDB.
-
Vous devez utiliser NotificationMetadata (metadata pour faire court) pour spécifier les paramètres requis pour créer des exécutions OOS.
Les metadata doivent être au format de chaîne JSON.
Les clés dans les metadata doivent correspondre aux paramètres du modèle OOS.
Pour les paramètres qui n'ont pas de valeurs par défaut dans le modèle OOS, vous devez spécifier des valeurs. Pour les paramètres qui ont des valeurs par défaut dans le modèle OOS, vous pouvez choisir de remplacer ou non ces valeurs par défaut.
Procédure
Dans cet exemple, un modèle OOS public nommé LifeCycleModifyMongoDBIPWhitelist est utilisé pour montrer comment automatiser l'ajout des adresses IP des instances à la liste d'autorisation IP d'une instance MongoDB lors d'un événement de mise à l'échelle horizontale (scale-out). Effectuez les étapes suivantes :
Si vous souhaitez automatiser la suppression des adresses IP des instances de la liste d'autorisation IP de votre instance MongoDB, vous pouvez créer un hook de cycle de vie à des fins de réduction de capacité (scale-in) et appliquer ce hook lors d'un événement de scale-in.
Étape 1 : Accorder à un rôle RAM les autorisations sur OOS
Vous devez disposer des autorisations pour exécuter des modèles OOS. Le modèle ACS-ESS-LifeCycleModifyMongoDBIPWhitelist inclut les ressources ECS, Auto Scaling et MongoDB requises pour effectuer des tâches d'exploitation et de maintenance (O&M).
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 Editor, définissez 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 couverts dans le tableau suivant conservent leurs paramètres prédéfinis par défaut.
Parameter
Description
Policy name
Saisissez ESSHookPolicyForMongoDBWhitelist.
Policy Document
Saisissez le contenu suivant :
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "dds:ModifySecurityIps" ], "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, spécifiez l'étendue des ressources et la stratégie, puis cliquez sur OK.
Le tableau suivant décrit les paramètres utilisés dans cet exemple. Tous les paramètres non couverts dans le tableau suivant conservent leurs paramètres prédéfinis par défaut.
Parameter
Description
Authorized scope
Sélectionnez Account.
Policy
Sélectionnez la stratégie personnalisée suivante : ESSHookPolicyForMongoDBWhitelist.
Étape 2 : Créer un hook de cycle de vie à des fins de scale-out et déclencher un événement de 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.
-
Recherchez le groupe de mise à l'échelle que vous souhaitez gérer et ouvrez sa page de détails de l'une des manières 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 le 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 couverts dans le tableau suivant conservent leurs paramètres prédéfinis par défaut.
Parameter
Description
Name
Saisissez ESSHookForAddMongoDBWhitelist.
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 à la durée nécessaire pour effectuer des opérations personnalisées, les opérations peuvent échouer. Nous vous recommandons d'estimer la durée nécessaire pour effectuer des 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 :
-
Notification Method : sélectionnez OOS Template.
-
OOS Template Type : sélectionnez Public Templates.
Sélectionnez LifeCycleModifyMongoDBIPWhitelist.
Dans le modèle public ACS-ESS-LifeCycleModifyMongoDBIPWhitelist, vous devez également configurer les paramètres suivants :
-
MongoDB instance ID : saisissez l'ID de votre instance ApsaraDB for MongoDB. Ce tutoriel utilise une instance de type Replica Set à titre d'exemple.
-
Whitelist modification method : sélectionnez Append. Cela correspond à un événement de scale-out et ajoute l'instance ECS à la liste d'autorisation IP de l'instance ApsaraDB for MongoDB.
-
The RAM role assumed by OOS. : sélectionnez
OOSServiceRole. Dans la section Procédure, vous avez accordé au rôle RAMOOSServiceRoleles autorisations requises pour gérer les ressources ECS, Auto Scaling et ApsaraDB for MongoDB. OOS peut assumer ce rôle RAM pour obtenir les autorisations nécessaires.
-
-
Déclenchez un événement de scale-out.
Dans cet exemple, un événement de scale-out est déclenché manuellement en exécutant une règle de mise à l'échelle. Vous pouvez également déclencher des événements de scale-out à 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. Cependant, 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.
En haut de la page, 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 couverts dans le tableau suivant conservent leurs paramètres prédéfinis par défaut.
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
Add1nouvellement 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. Cependant, l'instance ECS entre dans l'état Pending Add en raison du hook de cycle de vie ESSHookForAddMongoDBWhitelist qui est actif. Pendant la période de délai d'expiration du hook de cycle de vie, Auto Scaling notifie OOS pour exécuter les tâches d'O&M définies dans le modèle public ACS-ESS-LifeCycleModifyMongoDBIPWhitelist.
Étape 3 : Vérifier la liste d'autorisation IP de l'instance MongoDB
Connectez-vous à la console MongoDB.
Dans le volet de navigation de gauche, cliquez sur Replica Set Instances.
Recherchez l'instance ApsaraDB for MongoDB et cliquez sur son ID dans la colonne Instance 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 IP de l'instance MongoDB, le modèle public ACS-ESS-LifeCycleModifyMongoDBIPWhitelist prend effet comme prévu.
Si l'instance ECS est créée mais que son adresse IP privée n'est pas ajoutée à la liste d'autorisation IP de l'instance MongoDB, accédez à la console OOS pour afficher l'exécution des tâches d'O&M. Pour plus d'informations, consultez la section (Facultatif) Étape 4 : Afficher l'exécution OOS.
(Facultatif) Étape 4 : 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 heure et cliquez sur Details dans la colonne Actions.
-
Sur la page de détails d'exécution qui s'affiche, consultez les informations connexes.
Par exemple, vous pouvez afficher l'ID d'exécution et le statut dans la section Basic Information. Vous pouvez également cliquer sur un nœud de tâche dans la section Execution Steps and Results pour afficher ses détails. Pour plus d'informations, consultez la section Afficher les détails d'exécution.
RemarqueSi l'exécution échoue, un message d'erreur s'affiche sur la page de détails d'exécution.
FAQ
Si vous ne parvenez pas à exécuter une tâche d'O&M, 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 section 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'O&M spécifiées dans le modèle OOS peuvent être achevées dans le délai imparti. |