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.
NotaNeste 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:
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.
Faça login no RAM console.
-
Crie uma política.
No painel de navegação à esquerda, escolha .
Na página Policies, clique em Create Policy.
-
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" } ] }
-
Anexe a política à função RAM OOSServiceRole.
No painel de navegação à esquerda, escolha .
-
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.
-
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
Faça login no Auto Scaling console.
No painel de navegação à esquerda, clique em Scaling Groups.
Na barra de navegação superior, selecione uma região.
-
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.
-
Crie um lifecycle hook.
Na parte superior da página, clique na aba Events and Lifecycle Hooks.
Clique em Create Lifecycle Hook.
-
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.
NotaO 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 RAMOOSServiceRoleas 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.
-
-
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.
NotaSe 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.
Na parte superior da página, clique na aba Scaling Rules and Event-triggered Tasks.
Na aba Scaling Rules, clique em Create Scaling Rule.
-
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.
Na lista de regras de dimensionamento, encontre a regra
Add1recém-criada e clique em Recurrently na coluna Actions.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
Faça login no MongoDB console.
No painel de navegação à esquerda, clique em Replica Set Instances.
Encontre a instância do ApsaraDB for MongoDB e clique no ID dela na coluna Instance ID/Name.
-
No painel de navegação à esquerda, escolha .
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
Faça login no OOS console.
No painel de navegação à esquerda, escolha .
Encontre a tarefa de execução por tempo e clique em Details na coluna Actions.
-
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.
NotaSe 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. |