Todos os produtos
Search
Central de documentação

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

Última atualização: Aug 25, 2026

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

Pré-requisitos

  • Um grupo de dimensionamento criado e no estado Enabled.

  • Uma instância MongoDB criada.

  • Uma função do Resource Access Management (RAM) criada para o OOS. A entidade confiável da função RAM deve ser Alibaba Cloud Service, o service confiável deve ser **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 serve como exemplo. Também é possível usar outras funções.

Informações básicas

Atualmente, o Auto Scaling oferece integração apenas com Server Load Balancer (SLB) e ApsaraDB RDS. Se você armazena dados de aplicativos em uma instância MongoDB, atualizar manualmente a lista de permissões de endereços IP dessa instância com os endereços IP privados das suas 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 sua instância MongoDB combinando o recurso de lifecycle hook do Auto Scaling com um modelo do OOS. Observe as seguintes notas de uso:

  • Se o grupo de dimensionamento contiver instâncias ECS existentes, 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 da lista de permissões de endereços IP da instância MongoDB.

  • Use NotificationMetadata (abreviado como 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 no modelo do OOS.

    • Para parâmetros sem configurações padrão no modelo do OOS, especifique valores. Para parâmetros com configurações padrão no modelo do OOS, escolha se deseja substituí-las.

Procedimento

Neste exemplo, utiliza-se o modelo público do OOS chamado LifeCycleModifyMongoDBIPWhitelist 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 sua instância MongoDB, crie um lifecycle hook para fins de scale-in e aplique-o durante um evento de scale-in.

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

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

  1. Faça login no console do RAM.

  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. Parâmetros não mencionados mantêm suas configurações predefinidas.

      Parâmetro

      Descrição

      Nome da política

      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. Localize 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 clique em OK.

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

      Parâmetro

      Descrição

      Escopo autorizado

      Selecione Account.

      Política

      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 console do Auto Scaling.

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

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

  4. Localize o grupo de dimensionamento que deseja gerenciar e abra sua página de detalhes de uma das seguintes formas:

    • 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 Event and adhesive hook.

    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. 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 conforme seus requisitos de negócio. Neste exemplo, defina o valor como 300. Unidade: segundos.

      Nota

      O período de timeout é o intervalo durante o qual é possível executar operações personalizadas nas instâncias. Se esse período for menor que o tempo necessário para concluir as operações personalizadas, elas poderão falhar. Recomendamos estimar o tempo necessário para executar as operações personalizadas nas instâncias e configurar o Timeout Period com base nessa estimativa.

      Default Execution Policy

      Selecione Continue.

      Send Notification When Lifecycle Hook Takes Effect

      Configure os seguintes parâmetros para o modelo:

      • Método de notificação: Selecione OOS Template.

      • Tipo de modelo OOS: Selecione Public Templates.

      • Selecione LifeCycleModifyMongoDBIPWhitelist.

      No modelo público ACS-ESS-LifeCycleModifyMongoDBIPWhitelist, também configure os seguintes parâmetros:

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

      • Método de modificação da lista de permissões: 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, foram concedidas à 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, aciona-se manualmente um evento de scale-out executando uma regra de dimensionamento. Também é possível acionar eventos de scale-out usando tarefas agendadas ou acionadas por eventos.

    Nota

    Os lifecycle hooks entram em vigor quando eventos de dimensionamento são acionados pela execução manual de regras de dimensionamento. No entanto, os lifecycle hooks não entram em vigor quando instâncias ECS são adicionadas ou removidas manualmente 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. 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, localize 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 período de timeout 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 console do MongoDB.

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

  3. Localize a instância do ApsaraDB for MongoDB e clique no respectivo ID 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 tiver sido adicionado à lista de permissões de endereços IP da instância MongoDB, o modelo público ACS-ESS-LifeCycleModifyMongoDBIPWhitelist funcionou conforme esperado.

    • Se a instância ECS foi criada, mas seu endereço IP privado não foi 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 console do OOS.

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

  3. Localize a tarefa de execução por horário 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 ver seus detalhes. 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

Em caso de falha na execução de 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 mensagens de erro 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 realizar 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 nos recursos correspondentes.

Verifique se a função RAM OOSServiceRole possui as permissões necessárias. Por exemplo, conceda 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 adequadas à 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 terminou ou foi interrompida.

Avalie o período de timeout 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.