Este tutorial descreve como usar um lifecycle hook do Auto Scaling para colocar uma instância ECS em espera e utilizar um modelo do CloudOps Orchestration Service (OOS) para adicionar ou remover automaticamente a instância da lista de permissões de uma instância Tair.
Pré-requisitos
Um grupo de dimensionamento criado e no estado Enabled.
Uma instância 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, o service confiável deve ser **CloudOps Orchestration Service** e a função RAM deve ter permissões para executar operações no modelo 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. Você também pode 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 Tair. Se você armazena dados de negócios em uma instância Tair, adicionar ou remover manualmente instâncias ECS da lista de permissões da instância Tair é ineficiente. Use lifecycle hooks e modelos OOS para adicionar e remover automaticamente instâncias ECS da lista de permissões da instância Tair.
Procedimento
Este tutorial mostra como usar o modelo público OOS ACS-ESS-LifeCycleModifyRedisIPWhitelist para adicionar uma instância ECS à lista de permissões de uma instância Tair durante um scale-out.
Para remover uma instância ECS da lista de permissões de uma instância 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 OOS ACS-ESS-LifeCycleModifyRedisIPWhitelist requer permissões para os recursos envolvidos do Elastic Compute Service, Auto Scaling e Tair (Redis OSS-compatible).
Faça logon no console 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 na aba JSON Editor, configure os parâmetros e clique em OK.
A tabela a seguir descreve os parâmetros. Utilize 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 .
-
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.
-
Na página Grant Permission, configure o escopo de autorização e as permissões e clique em OK.
A tabela a seguir descreve os parâmetros. Utilize os valores padrão para os parâmetros não mencionados.
Parâmetro
Descrição
Resource Range
Selecione Account.
Policies
Anexe a política personalizada chamada
ESSHookPolicyForRedisWhitelist.
Etapa 2: Criar e acionar 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 uma instância ECS seja adicionada automaticamente à lista de permissões da instância Tair quando um scale-out for acionado.
Faça logon 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 deseja gerenciar e abra sua página de detalhes 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 para o scale-out.
No topo da página, clique na aba Event and adhesive hook.
Clique em Create Lifecycle Hook.
-
Configure o lifecycle hook e clique em OK.
A tabela a seguir descreve os parâmetros. Utilize os valores padrão para os parâmetros não mencionados.
Parâmetro
Descrição
Name
Insira
ESSHookForAddRedisWhitelist.Scaling Activity Type
Selecione Scale-Out.
Timeout Period
Insira um período de timeout apropriado, como 300 segundos.
NotaO período de timeout é o tempo disponível para executar ações personalizadas. Se esse período for muito curto, as ações podem falhar. Avalie o tempo necessário para suas ações personalizadas e defina um período de timeout adequado.
Default Execution Policy
Selecione Continue.
Send Notification When Lifecycle Hook Takes Effect
Configure o modelo com as seguintes definiçõ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 para
ACS-ESS-LifeCycleModifyRedisIPWhitelistcom as seguintes definições:RedisInstanceId: Insira o ID da sua instância Tair.
ModifyIPWhitelistMode: Selecione
Append, que corresponde a um scale-out e adiciona a instância ECS à lista de permissões da instância Tair.RAM role assumed by OOS: Selecione OOSServiceRole. No procedimento, as permissões para gerenciar recursos ECS, Auto Scaling e Redis foram adicionadas à função RAM OOSServiceRole. O service 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. Você também pode usar tarefas agendadas ou tarefas acionadas por eventos para acionar um scale-out.
NotaOs lifecycle hooks entram em vigor apenas quando uma regra de dimensionamento aciona um scale-out ou scale-in. Eles não entram em vigor quando você adiciona ou remove manualmente instâncias ECS existentes.
Clique na 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.
A tabela a seguir descreve os parâmetros. Utilize os valores padrão para os parâmetros não mencionados.
Parâmetro
Descrição
Rule Name
Insira
Add1.Rule Type
Selecione Simple Scaling Rule.
Operation
Defina o valor como
Add 1 instance. Localize a regra de dimensionamento
Add1criada e clique em Perform na coluna Actions.Clique em OK.
Após a execução da regra de dimensionamento, uma instância ECS é criada automaticamente. O lifecycle hook
ESSHookForAddRedisWhitelistcoloca a instância em espera e notifica o service OOS para executar as operações definidas no modeloACS-ESS-LifeCycleModifyRedisIPWhitelist.
Etapa 3: Visualizar a lista de permissões da instância Tair
Faça logon no console do Tair (Redis OSS-compatible).
No painel de navegação à esquerda, clique em Instance List.
Localize sua instância Tair e clique no respectivo ID 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 ECS aparecer na lista de permissões da instância Tair, o modelo
ACS-ESS-LifeCycleModifyRedisIPWhitelistfoi executado com sucesso.Caso a instância ECS exista, mas seu endereço IP privado não esteja na lista de permissões da instância Tair, verifique o status de execução da tarefa OOS no console OOS. Para mais detalhes, consulte (Optional) Step 4: Check the OOS execution.
(Opcional) Etapa 4: Verificar a execução do OOS
Faça logon no console OOS.
No painel de navegação à esquerda, escolha .
Localize a tarefa de execução por horário e clique em Details na coluna Actions.
-
Na página de detalhes da execução, visualize as informações de execução.
Por exemplo, visualize o ID e o status da execução na seção Basic information. Clique também em um nó de tarefa na seção Execution Result para visualizar seus detalhes. Para mais informações, consulte View the details of a task execution.
NotaSe uma execução falhar, a página de detalhes da execução 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 a mensagem de erro comum.
|
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 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 as permissões para operar nos 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, você deve 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 terminou ou foi interrompida. |
Avalie o período de timeout do lifecycle hook para garantir que as tarefas de O&M especificadas no modelo OOS possam ser concluídas dentro do limite de tempo estipulado. |