Este tutorial descreve como usar um lifecycle hook do Auto Scaling para colocar uma instância do ECS em espera e utilizar um modelo do CloudOps Orchestration service (OOS) para adicionar ou remover automaticamente a instância de uma lista de permissões de instância do Tair.
Pré-requisitos
Um grupo de dimensionamento criado e no estado Enabled.
Uma instância do Tair 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 e o serviço confiável deve ser o CloudOps Orchestration service. Além disso, a função RAM precisa 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, usamos a função RAM OOSServiceRole como exemplo. Também é possível usar outras funções.
Contexto
É possível associar um grupo de dimensionamento a instâncias do Server Load Balancer (slb) e do ApsaraDB RDS, mas não a instâncias do Tair. Se você armazena dados de negócios em uma instância do Tair, adicionar ou remover manualmente instâncias do ECS da lista de permissões da instância do Tair é ineficiente. Use lifecycle hooks e modelos do OOS para adicionar e remover instâncias do ECS da lista de permissões da instância do Tair automaticamente.
Procedimento
Este tutorial mostra como usar o modelo público do OOS ACS-ESS-LifeCycleModifyRedisIPWhitelist para adicionar uma instância do ECS à lista de permissões de uma instância do Tair durante um scale-out.
Para remover uma instância do ECS da lista de permissões de uma instância do Tair durante um scale-in, crie um lifecycle hook para atividades de scale-in e acione um scale-in.
Etapa 1: Conceder permissões à função RAM do OOS
A execução do modelo do OOS ACS-ESS-LifeCycleModifyRedisIPWhitelist requer permissões para os recursos envolvidos do Elastic Compute Service, do Auto Scaling e do Tair (Redis OSS-compatible).
Faça login no console do RAM.
-
crie uma política de permissões.
No painel de navegação à esquerda, escolha .
Na página Policies, clique em Create Policy.
-
Na página Create Policy, clique em aba JSON Editor, configure os parâmetros e clique em OK.
A tabela a seguir descreve os parâmetros. Use os valores padrão para os parâmetros não mencionados.
Parâmetro
Descrição
Name
insira
ESSHookPolicyForRedisWhitelist.Policy Document
insira o seguinte conteúdo:
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "kvstore:ModifySecurityIps" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
-
Anexe a política de permissões à 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, configure o escopo e as permissões de autorização e clique em OK.
A tabela abaixo detalha os parâmetros. Mantenha os valores padrão para os campos não mencionados.
Parâmetro
Descrição
Resource Range
selecione Account.
Policies
Anexe a política personalizada chamada
ESSHookPolicyForRedisWhitelist.
Etapa 2: crie e acione um hook de scale-out
Ao criar um lifecycle hook, selecione OOS Template como método de notificação e configure os parâmetros necessários. Isso garante que o sistema adicione a instância do ECS automaticamente à lista de permissões da instância do Tair ao acionar um 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.
-
Encontre o grupo de dimensionamento desejado e abra a página de detalhes dele de uma das seguintes maneiras:
Na coluna Scaling Group Name/ID, clique em ID do grupo de dimensionamento.
Na coluna Actions, clique em Details.
-
crie um lifecycle hook para o scale-out.
Na parte superior da página, clique em aba Events and Lifecycle Hooks.
clique em Create Lifecycle Hook.
-
configure o lifecycle hook e clique em OK.
Consulte a tabela a seguir para ver a descrição dos parâmetros. Utilize os valores padrão para os campos não mencionados.
Parâmetro
Descrição
Name
insira
ESSHookForAddRedisWhitelist.Scaling Activity Type
selecione Scale-Out.
Timeout Period
insira um tempo limite adequado, como 300 segundos.
NotaO tempo limite é o período disponível para executar ações personalizadas. Se for muito curto, as ações poderão falhar. Avalie o tempo necessário para as suas ações personalizadas e defina um tempo limite adequado.
Default Execution Policy
selecione Continue.
Send Notification When Lifecycle Hook Takes Effect
configure o modelo com as seguintes configurações:
Notification Method: selecione OOS Template.
OOS Template Type: selecione Public Templates.
Public Template: selecione ACS-ESS-LifeCycleModifyRedisIPWhitelist.
configure os parâmetros de execução de
ACS-ESS-LifeCycleModifyRedisIPWhitelistcom as seguintes definições:RedisInstanceId: insira o ID da sua instância do Tair.
ModifyIPWhitelistMode: selecione
Append, que corresponde a um scale-out e adiciona a instância do ECS à lista de permissões da instância do Tair.RAM role assumed by OOS: selecione OOSServiceRole. No procedimento, você adicionou as permissões para gerencie recursos do ECS, do Auto Scaling e do Redis à função RAM OOSServiceRole. O serviço OOS assume essa função para obter as permissões necessárias.
-
Acione um scale-out.
Este tutorial mostra como executar manualmente uma regra de dimensionamento para acionar um scale-out. Também é possível usar tarefas agendadas ou acionadas por eventos para isso.
NotaOs lifecycle hooks só entram em vigor quando uma regra de dimensionamento aciona um scale-out ou scale-in, e não quando você adiciona ou remove manualmente instâncias do ECS existentes.
clique em aba Scaling Rules and Event-triggered Tasks.
Na aba Scaling Rules, clique em Create Scaling Rule.
-
defina os parâmetros da regra de dimensionamento e clique em OK.
Os parâmetros estão descritos na tabela abaixo. Use as configurações padrão para os parâmetros omitidos.
Parâmetro
Descrição
Rule Name
insira
Add1.Rule Type
selecione Simple Scaling Rule.
Operation
defina o valor como
Add 1 instance. Encontre a regra de dimensionamento
Add1criada e clique em Perform na coluna Actions.clique em OK.
Após a execução da regra de dimensionamento, o sistema cria uma instância do ECS automaticamente. O lifecycle hook
ESSHookForAddRedisWhitelistentão coloca a instância em espera e notifica o serviço OOS para executar as operações definidas no modeloACS-ESS-LifeCycleModifyRedisIPWhitelist.
Etapa 3: visualize a lista de permissões da instância do Tair
Faça login no console do Tair (Redis OSS-compatible).
No painel de navegação à esquerda, clique em Instance List.
Encontre a sua instância do Tair e clique em ID dela na coluna Instance ID/Name.
-
No painel de navegação à esquerda, clique em Whitelist Settings.
Se o endereço ip privado da nova instância do ECS aparecer na lista de permissões da instância do Tair, significa que o modelo
ACS-ESS-LifeCycleModifyRedisIPWhitelistfoi executado com sucesso.Se a instância do ECS existir, mas o endereço ip privado dela não estiver na lista de permissões da instância do Tair, verifique o status de execução da tarefa no console do OOS. Para mais detalhes, consulte (Opcional) Etapa 4: Verificar a execução do OOS.
(Opcional) Etapa 4: Verificar a execução do OOS
Faça login no console do OOS.
No painel de navegação à esquerda, escolha .
Encontre a tarefa de execução pelo horário e clique em Details na coluna Actions.
-
Na página de detalhes da execução, visualize as informações.
Por exemplo, você pode 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 ver os detalhes dele. Para mais informações, consulte View the details of a task execution.
NotaSe uma execução falhar, a página de detalhes exibirá a mensagem de erro.
Perguntas frequentes
Se você 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 mais 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 tem 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 ou a função RAM não tem permissões para operar os recursos correspondentes. |
Verifique se a função RAM OOSServiceRole tem 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, a função RAM precisa ter as permissões necessárias. |
|
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 tempo limite do lifecycle hook para garantir que as tarefas de O&M especificadas no modelo do OOS sejam concluídas dentro do tempo alocado. |