Todos os produtos
Search
Central de documentação

Auto Scaling:Automatically manage ECS instances in a MongoDB IP whitelist

Última atualização: Oct 14, 2026

Este tópico descreve como combinar o recurso de lifecycle hook do Auto Scaling e um modelo do CloudOps Orchestration Service (OOS) para, primeiro, colocar as instâncias do Elastic Compute Service (ECS) no estado Pending e, em seguida, automatizar a adição ou a remoção dos endereços IP das instâncias nas listas de permissões de endereços IP das instâncias do ApsaraDB for MongoDB (MongoDB).

Pré-requisitos

  • Certifique-se de que um grupo de dimensionamento foi criado e está no estado Enabled.

  • Crie uma instância MongoDB.

  • Crie uma função do Resource Access Management (RAM) para o OOS. A entidade confiável da função RAM deve ser Alibaba Cloud Service, o serviço confiável deve ser o CloudOps Orchestration Service e a função RAM deve ter permissões para executar operações no modelo do OOS. Para mais informações, consulte Create a RAM role for OOS and grant permissions.

    Nota

    Neste tópico, a função RAM OOSServiceRole é usada como exemplo. Também é possível usar outras funções.

Informações de contexto

Atualmente, o Auto Scaling oferece suporte apenas à integração com o Server Load Balancer (SLB) e o ApsaraDB RDS. Se os dados do seu aplicativo estiverem armazenados em uma instância MongoDB, a atualização manual da lista de permissões de endereços IP da instância MongoDB com os endereços IP privados das instâncias ECS torna a operação ineficiente. Para aumentar a eficiência operacional, considere automatizar as atualizações da lista de permissões de endereços IP da instância MongoDB. Para isso, combine o recurso de lifecycle hook do Auto Scaling com um modelo do OOS. Observe as seguintes notas de uso:

  • Se o grupo de dimensionamento já contiver instâncias ECS, adicione manualmente os endereços IP privados dessas instâncias à lista de permissões de endereços IP da instância MongoDB. Caso contrário, ocorrerá um erro ao remover um endereço IP de instância dessa lista de permissões.

  • Use o NotificationMetadata (ou simplesmente metadata) para especificar os parâmetros necessários para criar execuções do OOS.

    • O metadata deve estar no formato de string JSON.

    • As chaves no metadata devem corresponder aos parâmetros do modelo do OOS.

    • Especifique valores para os parâmetros que não possuem configurações padrão no modelo do OOS. Para os parâmetros que já possuem configurações padrão, escolha se deseja sobrescrevê-las.

Procedimento

Neste exemplo, o modelo público do OOS chamado LifeCycleModifyMongoDBIPWhitelist é usado para demonstrar como automatizar a adição de endereços IP de instâncias à lista de permissões de endereços IP de uma instância MongoDB durante um evento de scale-out. Execute as etapas a seguir:

Nota

Para automatizar a remoção de endereços IP de instâncias da lista de permissões de endereços IP da instância MongoDB, crie um lifecycle hook para scale-in e aplique-o durante um evento de scale-in.

Etapa 1: Conceder permissões de OOS a uma função RAM

São necessárias permissões para executar modelos do OOS. O modelo ACS-ESS-LifeCycleModifyMongoDBIPWhitelist inclui os recursos do ECS, Auto Scaling e MongoDB necessários para executar tarefas de O&M.

  1. Faça login no RAM console.

  2. Crie uma política.

    1. No painel de navegação à esquerda, escolha Permissions > Policies.

    2. Na página Policies, clique em Create Policy.

    3. Na página Create Policy, clique na aba JSON Editor, defina os parâmetros e clique em OK.

      A tabela a seguir descreve as configurações usadas neste exemplo. Os parâmetros não mencionados mantêm suas configurações predefinidas.

      Parâmetro

      Descrição

      Policy name

      Insira ESSHookPolicyForMongoDBWhitelist.

      Policy Document

      Insira o seguinte conteúdo:

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "ecs:DescribeInstances"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "dds:ModifySecurityIps"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "ess:CompleteLifecycleAction"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }
  3. Anexe a política à função RAM OOSServiceRole.

    1. No painel de navegação à esquerda, escolha Identities > Roles.

    2. Encontre a função RAM OOSServiceRole e clique em Grant Permission na coluna Actions.

      Adicione as permissões necessárias à função RAM OOSServiceRole assumida pelo OOS para concluir a autorização.

    3. Na página Grant Permission, especifique o escopo do recurso e a política e, em seguida, clique em OK.

      A tabela a seguir descreve as configurações usadas neste exemplo. Os parâmetros não mencionados mantêm suas configurações predefinidas.

      Parâmetro

      Descrição

      Authorized scope

      Selecione Account.

      Policy

      Selecione a seguinte política personalizada: ESSHookPolicyForMongoDBWhitelist.

Etapa 2: Criar um lifecycle hook para scale-out e acionar um evento de scale-out

  1. Faça login no Auto Scaling console.

  2. No painel de navegação à esquerda, clique em Scaling Groups.

  3. Na barra de navegação superior, selecione uma região.

  4. Encontre o grupo de dimensionamento que deseja gerenciar e abra a página de detalhes dele de uma das seguintes maneiras:

    • Na coluna Scaling Group Name/ID, clique no ID do grupo de dimensionamento.

    • Na coluna Actions, clique em Details.

  5. Crie um lifecycle hook.

    1. Na parte superior da página, clique na aba Events and Lifecycle Hooks.

    2. Clique em Create Lifecycle Hook.

    3. Configure o lifecycle hook e clique em OK.

      A tabela a seguir descreve as configurações usadas neste exemplo. Os parâmetros não mencionados mantêm suas configurações predefinidas.

      Parâmetro

      Descrição

      Name

      Insira ESSHookForAddMongoDBWhitelist.

      Scaling Activity Type

      Selecione Scale-Out.

      Timeout Period

      Configure o Timeout Period com base nos requisitos do seu negócio. Neste exemplo, defina o valor como 300. Unidade: segundos.

      Nota

      O tempo limite é o período durante o qual é possível executar operações personalizadas nas instâncias. Se o tempo limite for menor que o período necessário para executar as operações personalizadas, as operações poderão falhar. Recomendamos estimar o tempo necessário para executar operações personalizadas nas instâncias e configurar o Timeout Period com base nessas estimativas.

      Default Execution Policy

      Selecione Continue.

      Send Notification When Lifecycle Hook Takes Effect

      Configure os seguintes parâmetros para o modelo:

      • Notification Method: Selecione OOS Template.

      • OOS Template Type: Selecione Public Templates.

      • Selecione LifeCycleModifyMongoDBIPWhitelist.

      No modelo público ACS-ESS-LifeCycleModifyMongoDBIPWhitelist, também é necessário configurar os seguintes parâmetros:

      • MongoDB instance ID: Insira o ID da sua instância do ApsaraDB for MongoDB. Este tutorial usa uma instância de conjunto de réplicas como exemplo.

      • Whitelist modification method: Selecione Append. Isso corresponde a um evento de scale-out e adiciona a instância ECS à lista de permissões de endereços IP da instância do ApsaraDB for MongoDB.

      • The RAM role assumed by OOS. : Selecione OOSServiceRole. Na seção Procedure, você concedeu à função RAM OOSServiceRole as permissões necessárias para gerenciar recursos do ECS, Auto Scaling e ApsaraDB for MongoDB. O OOS pode assumir essa função RAM para obter as permissões necessárias.

  6. Acione um evento de scale-out.

    Neste exemplo, um evento de scale-out é acionado manualmente pela execução de uma regra de dimensionamento. Também é possível acionar eventos de scale-out por meio de tarefas agendadas ou acionadas por eventos.

    Nota

    Se os eventos de dimensionamento forem acionados durante a execução manual de regras de dimensionamento, os lifecycle hooks entrarão em vigor. No entanto, os lifecycle hooks não entram em vigor quando você adiciona ou remove manualmente instâncias ECS de um grupo de dimensionamento.

    1. Na parte superior da página, clique na aba Scaling Rules and Event-triggered Tasks.

    2. Na aba Scaling Rules, clique em Create Scaling Rule.

    3. Defina as propriedades da regra de dimensionamento e clique em OK.

      A tabela a seguir descreve as configurações usadas neste exemplo. Os parâmetros não mencionados mantêm suas configurações predefinidas.

      Parâmetro

      Descrição

      Rule Name

      Insira Add1.

      Rule Type

      Selecione Simple Scaling Rule.

      Operation

      Defina o valor como Add 1 Instances.

    4. Na lista de regras de dimensionamento, encontre a regra Add1 recém-criada e clique em Recurrently na coluna Actions.

    5. Clique em OK.

    Após a execução da regra de dimensionamento, o Auto Scaling adiciona uma instância ECS ao grupo de dimensionamento. No entanto, a instância ECS entra no estado Pending Add devido ao lifecycle hook ESSHookForAddMongoDBWhitelist em vigor. Durante o tempo limite do lifecycle hook, o Auto Scaling notifica o OOS para executar as tarefas de O&M definidas no modelo público ACS-ESS-LifeCycleModifyMongoDBIPWhitelist.

Etapa 3: Verificar a lista de permissões de endereços IP da instância MongoDB

  1. Faça login no MongoDB console.

  2. No painel de navegação à esquerda, clique em Replica Set Instances.

  3. Encontre a instância do ApsaraDB for MongoDB e clique no ID dela na coluna Instance ID/Name.

  4. No painel de navegação à esquerda, escolha Data Security > Whitelist Settings.

    • Se o endereço IP privado da instância ECS for adicionado à lista de permissões de endereços IP da instância MongoDB, o modelo público ACS-ESS-LifeCycleModifyMongoDBIPWhitelist entrará em vigor conforme o esperado.

    • Se a instância ECS for criada, mas o endereço IP privado dela não for adicionado à lista de permissões de endereços IP da instância MongoDB, acesse o console do OOS para visualizar a execução das tarefas de O&M. Para mais informações, consulte (Optional) Step 4: View the OOS execution.

(Opcional) Etapa 4: Visualizar a execução do OOS

  1. Faça login no OOS console.

  2. No painel de navegação à esquerda, escolha Automated Task > Task Execution Management.

  3. Encontre a tarefa de execução por tempo e clique em Details na coluna Actions.

  4. Na página de detalhes da execução exibida, visualize as informações relacionadas.

    Por exemplo, visualize o ID e o status da execução na seção Basic Information. Também é possível clicar em um nó de tarefa na seção Execution Steps and Results para visualizar os detalhes dele. Para mais informações, consulte View execution details.

    Nota

    Se a execução falhar, uma mensagem de erro será exibida na página de detalhes da execução.

Perguntas frequentes

Se houver falha ao executar uma tarefa de O&M, solucione o problema com base na mensagem de erro no resultado da execução. Para mais informações, consulte FAQ.

A tabela a seguir descreve as mensagens de erro mais comuns.

Mensagem de erro

Causa

Solução

Forbidden.Unauthorized message: A required authorization for the specified action is not supplied.

O Auto Scaling não foi autorizado a executar a ação atual.

Verifique se a função RAM OOSServiceRole possui as permissões necessárias.

Forbidden.RAM message: User not authorized to operate on the specified resource, or this API doesn't support RAM.

O usuário RAM ou a função RAM não tem permissões para operar os recursos correspondentes.

Verifique se a função RAM OOSServiceRole possui as permissões necessárias. Por exemplo, conceda as permissões do OOS à função RAM. Antes que o OOS possa gerenciar os recursos declarados no modelo do OOS, é necessário conceder as permissões necessárias à função RAM.

LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken and lifecycleActionId you provided does not match any in process lifecycle action.

A ação do lifecycle hook em andamento foi encerrada ou interrompida.

Avalie o período de tempo limite do lifecycle hook para garantir que as tarefas de O&M especificadas no modelo do OOS possam ser concluídas dentro do limite de tempo estipulado.