Este tutorial mostra como usar um lifecycle hook do Auto Scaling para colocar uma instância ECS em estado de espera e usar um modelo do CloudOps Orchestration Service (OOS) para adicionar ou remover automaticamente a instância da lista de permissões de IP de um cluster AnalyticDB for MySQL.
Pré-requisitos
Um grupo de dimensionamento foi criado e está no estado Ativado.
-
Um cluster AnalyticDB for MySQL foi criado.
Uma função do Resource Access Management (RAM) foi criada 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 OOS. Para mais informações, consulte Criar uma função RAM para o OOS e conceder permissões.
NotaNeste tópico, a função RAM OOSServiceRole é usada como exemplo. Você também pode usar outras funções.
Contexto
Um grupo de dimensionamento pode ser associado a instâncias do Server Load Balancer (SLB) e do ApsaraDB RDS, mas não a clusters AnalyticDB for MySQL. Se os dados do seu negócio estão em um cluster AnalyticDB for MySQL, gerenciar manualmente a lista de permissões de IP para instâncias ECS é ineficiente. Para automatizar esse processo, use um lifecycle hook e um modelo OOS.
Procedimento
Este tutorial mostra como usar o modelo público OOS ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist para adicionar uma instância ECS à lista de permissões de IP de um cluster AnalyticDB for MySQL durante um evento de scale-out. Execute as seguintes etapas:
Para remover automaticamente uma instância ECS da lista de permissões de IP de um cluster AnalyticDB for MySQL durante um evento de scale-in, crie um lifecycle hook para o evento de scale-in e acione um scale-in.
Etapa 1: Conceder permissões do OOS a uma função RAM
Você precisa ter permissões para executar modelos OOS. O modelo ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist requer permissões para executar operações em recursos ECS, Auto Scaling e AnalyticDB for MySQL.
Faça login no console RAM.
-
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, configure os parâmetros e clique em OK.
A tabela a seguir descreve os parâmetros usados neste tutorial. Use os valores padrão para os demais parâmetros.
Parâmetro
Descrição
Name
Insira ESSHookPolicyForAnalyticDBWhitelist.
Policy Document
Insira o seguinte conteúdo:
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "adb:ModifyDBClusterAccessWhiteList" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
-
Anexe a política à função RAM OOSServiceRole.
No painel de navegação à esquerda, escolha .
Localize a função RAM OOSServiceRole e clique em Grant Permission na coluna Actions.
Adicione as permissões necessárias para a função RAM OOSServiceRole assumida pelo OOS para concluir a autorização.
-
Na página Grant Permission, configure os parâmetros e clique em OK.
A tabela a seguir descreve os parâmetros usados neste tutorial. Use os valores padrão para os demais parâmetros.
Parâmetro
Descrição
Authorized scope
Selecione Alibaba Cloud Account.
Policy
Selecione a política personalizada ESSHookPolicyForAnalyticDBWhitelist.
Etapa 2: Criar e acionar um lifecycle hook de scale-out
Faça login no console do Auto Scaling.
No painel de navegação à esquerda, clique em Scaling Groups.
Na barra de navegação superior, selecione uma região.
Localize o grupo de dimensionamento que você deseja gerenciar e abra a 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.
-
Crie um lifecycle hook para o evento de scale-out.
No topo da página, clique na aba Events and Lifecycle Hooks.
-
Clique em Create Lifecycle Hook.
-
Configure os parâmetros do lifecycle hook e clique em OK.
A tabela a seguir descreve os parâmetros usados neste tutorial. Use os valores padrão para os demais parâmetros.
Parâmetro
Descrição
Name
Insira ESSHookForAddAnalyticDBWhitelist.
Scaling Activity Type
Selecione Scale-Out.
Timeout Period
Insira um período de timeout adequado, por exemplo, 300 segundos.
NotaO período de timeout é o tempo permitido para a execução da ação personalizada. Avalie o tempo necessário para a ação e defina um timeout adequado para evitar falhas.
Default Execution Policy
Selecione Continue.
Send Notification When Lifecycle Hook Takes Effect
Configure o modelo da seguinte forma:
-
Notification Method: Selecione OOS Template.
-
OOS Template Type: Selecione Public Templates.
-
Public Template: Selecione ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist.
Configure os parâmetros de execução do ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist da seguinte forma:
-
dbClusterId: Insira o ID do cluster AnalyticDB for MySQL.
-
modifyMode: Selecione Append. Aplica-se a um evento de scale-out e adiciona a instância ECS à lista de permissões de IP do cluster AnalyticDB for MySQL.
-
RAM role assumed by OOS: Selecione OOSServiceRole. No procedimento, a função RAM OOSServiceRole recebeu permissões para gerenciar ECS, Auto Scaling e AnalyticDB for PostgreSQL. O serviço OOS assume essa função para obter essas permissões.
-
-
Acione um evento de scale-out.
Este tutorial usa uma regra de dimensionamento executada manualmente como exemplo, mas você também pode acionar um evento de scale-out com uma tarefa agendada ou acionada por evento.
NotaSe atividades de dimensionamento forem acionadas ao executar regras de dimensionamento manualmente, os lifecycle hooks entram em vigor. Os lifecycle hooks não entram em vigor quando você adiciona ou remove instâncias ECS de um grupo de dimensionamento manualmente.
-
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 os parâmetros usados neste tutorial. Use os valores padrão para os demais parâmetros.
Parâmetro
Descrição
Rule Name
Insira Add1.
Rule Type
Selecione Simple Scaling Rule.
Operation
Defina como Add 1 Instances.
-
Na lista de regras de dimensionamento, localize a regra Add1 que você criou e clique em Recurrently na coluna Actions.
-
Clique em OK.
Após a execução da regra de dimensionamento, uma instância ECS é criada automaticamente. Como o lifecycle hook ESSHookForAddAnalyticDBWhitelist foi criado no grupo de dimensionamento, a instância entra em estado de espera. O OOS é notificado para executar as operações definidas no modelo ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist.
-
Etapa 3: Verificar a lista de permissões do AnalyticDB for MySQL
-
Faça login no console do AnalyticDB for MySQL.
-
No painel de navegação à esquerda, clique em Clusters.
-
Localize o cluster de destino e clique no ID na coluna Cluster ID/Description.
-
No painel de navegação à esquerda, clique em Data Security.
-
Se o endereço IP privado da nova instância ECS aparecer na lista de permissões de IP do cluster AnalyticDB for MySQL, o modelo público ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist está funcionando corretamente.
-
Se uma instância ECS for criada, mas o endereço IP privado não aparecer na lista de permissões de IP, verifique o status de execução da tarefa no console OOS. Para mais informações, consulte (Opcional) Etapa 4: Visualizar detalhes de execução do OOS.
-
(Opcional) Etapa 4: Visualizar detalhes de execução do OOS
Faça login no console OOS.
No painel de navegação à esquerda, escolha .
Localize a tarefa de execução por data e hora e clique em Details na coluna Actions.
-
Na página de detalhes de execução, visualize as informações da execução.
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 Result para visualizar seus detalhes. Para mais informações, consulte Visualizar os detalhes de uma execução.
NotaSe a execução falhar, uma mensagem de erro correspondente será exibida na página de detalhes de execução.
FAQ
Se não conseguir 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 comuns.
Mensagem de erro | Causa | Solução |
Forbidden.Unauthorized message: A required authorization for the specified action is not supplied. | Você não autorizou o Auto Scaling 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 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 timeout do lifecycle hook para garantir que as tarefas de O&M especificadas no modelo OOS sejam concluídas dentro do limite de tempo definido. |