Este tutorial descreve como usar um lifecycle hook do Auto Scaling para suspender uma instância ECS e aplicar automaticamente uma política de snapshot automático à instância por meio de um modelo do CloudOps Orchestration Service (OOS).
Pré-requisitos
Crie um grupo de dimensionamento no estado Enabled. Para mais informações, consulte Manage scaling groups.
Crie uma política de snapshot automático. Para mais informações, consulte Create an automatic snapshot policy.
-
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 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.
NotaNeste tópico, a função RAM OOSServiceRole é usada como exemplo. Você também pode usar outras funções.
Contexto
Uma política de snapshot automático cria snapshots periodicamente para suas instâncias ECS, o que melhora a segurança dos dados e a tolerância a falhas operacionais. Embora não seja possível associar uma política de snapshot automático durante a criação de uma configuração de dimensionamento, você pode usar um lifecycle hook e um modelo do OOS para automatizar esse processo. Esse método é mais eficiente do que aplicar manualmente uma política a cada nova instância ECS.
Uma política de snapshot automático cria snapshots em horários agendados para proteger os dados em seus discos de sistema e discos de dados. Para mais informações, consulte Automatic snapshot policies.
Procedimento
Este tutorial usa o modelo público do OOS ACS-ESS-LifeCycleApplyAutoSnapshotPolicy como exemplo para descrever como aplicar automaticamente uma política de snapshot automático a instâncias ECS durante um scale-out. O procedimento é o seguinte:
Etapa 1: Conceder permissões à função RAM do OOS
Você precisa ter as permissões adequadas para executar modelos do OOS. A execução das operações de O&M definidas em ACS-ESS-LifeCycleApplyAutoSnapshotPolicy envolve recursos do Elastic Compute Service (ECS) e do Auto Scaling.
Faça login no console do RAM.
-
Crie uma política de permissão.
No painel de navegação à esquerda, escolha .
Na página Policies, clique em Create Policy.
-
Na página Create Policy, clique na aba JSON, insira o conteúdo da política abaixo e clique em OK.
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeDisks", "ecs:ApplyAutoSnapshotPolicy", "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] } -
Na caixa de diálogo Create Policy, insira um nome para a política.
O nome da política é
ESSHookPolicyForApplyAutoSnapshotPolicy.NotaSe precisar modificar o conteúdo da política, clique em Cancel para continuar editando a política de permissão.
Clique em OK.
-
Anexe a política de permissão à 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.
<!--@div {"id":"info_c6u_4fp_95i","data-tag="info"}-->
Adicione as permissões necessárias à função RAM OOSServiceRole assumida pelo OOS para concluir a autorização.
-
Na página Grant Permission, configure as definições e clique em OK.
A tabela a seguir descreve os parâmetros usados neste tutorial. Use os valores padrão para quaisquer parâmetros não mencionados.Basic Information
Parâmetro
Descrição
Grant Scope
Selecione Alibaba Cloud Account.
Policies
Adicione a política personalizada
ESSHookPolicyForApplyAutoSnapshotPolicy.
Etapa 2: Criar um lifecycle hook e 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.
-
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.
-
Crie um lifecycle hook para o evento de 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.
<!--@div {"id":"info_5mw_4ww_2zr","data-tag="info"}-->
A tabela a seguir descreve os parâmetros usados neste tutorial. Use os valores padrão para quaisquer parâmetros não mencionados.
Parâmetro
Descrição
Name
Insira
ESSHookForApplyAutoSnapshotPolicy.Scaling Activity Type
Selecione Scale-Out.
Timeout Period
Insira um período de timeout apropriado, por exemplo, 300 segundos.
NotaO período de timeout é o tempo máximo permitido para a conclusão da ação personalizada. Se a ação não terminar dentro desse período, ela falhará. Defina um timeout suficientemente longo para que sua ação seja executada com sucesso.
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-LifeCycleApplyAutoSnapshotPolicy.
Os parâmetros de execução para
ACS-ESS-LifeCycleApplyAutoSnapshotPolicysão os seguintes:-
autoSnapshotPolicyId: Insira o ID da sua política de snapshot automático.
-
OOSAssumeRole: Selecione
OOSServiceRole. Na Etapa 1, você concedeu a esta função RAM as permissões necessárias para gerenciar recursos do ECS e do Auto Scaling. O OOS assume essa função para obter tais permissões.
-
-
Acione um evento de scale-out.
<!--@div {"id":"info_5ym_cyu_vn6","data-tag="info"}-->
Neste tutorial, executamos manualmente uma regra de dimensionamento para acionar o evento de scale-out. Você também pode usar outros métodos, como tarefas agendadas ou acionadas por eventos.
NotaOs lifecycle hooks são acionados quando você executa uma regra de dimensionamento, mas não são acionados quando adiciona ou remove manualmente instâncias ECS existentes de um grupo de dimensionamento.
No topo da página, clique na aba Scaling Rules and Event-triggered Tasks.
Na aba Scaling Rules, clique em Create Scaling Rule.
-
Configure a regra de dimensionamento e clique em OK.
<!--@div {"id":"info_o5u_5ai_lkt","data-tag="info"}-->
A tabela a seguir descreve os parâmetros usados neste tutorial. Use os valores padrão para quaisquer parâmetros não mencionados.
Parâmetro
Descrição
Rule Name
Insira
Add1.Rule Type
Selecione Simple Scaling Rule.
Operation
Defina para adicionar 1 instância.
Na lista de regras de dimensionamento, localize a regra
Add1e clique em Actions na coluna Recurrently.Clique em OK.
<!--@div {"id":"stepresult_fd9_t8f_0ao","data-tag="stepresult"}-->
Após a execução da regra de dimensionamento, uma instância ECS é criada automaticamente. O lifecycle hook
ESSHookForApplyAutoSnapshotPolicyno grupo de dimensionamento suspende a instância ECS e notifica simultaneamente o service OOS para executar as operações de O&M definidas emACS-ESS-LifeCycleApplyAutoSnapshotPolicy. -
Verifique se a política de snapshot automático foi aplicada à nova instância ECS.
No topo da página, clique na aba Instance Management.
Localize a instância ECS recém-criada e clique em seu ID na coluna ECS Instance ID/Name.
Na página Instance Details, clique na aba Block Storage.
-
Localize o disco em cloud e, na coluna Actions, clique em Set Snapshot Policy.
<!--@div {"id":"info_jeg_5ou_4fw","data-tag="info"}-->
A figura abaixo mostra que uma política de snapshot automático está ativada para o disco em cloud. Essa política corresponde ao Automatic Snapshot Policy ID definido durante a criação do lifecycle hook, comportamento esperado ao usar o modelo público
ACS-ESS-LifeCycleApplyAutoSnapshotPolicy.
Caso a instância ECS tenha sido criada, mas a política de snapshot automático não tenha sido aplicada, acesse o console do OOS para verificar o status de execução da tarefa.
(Opcional) Etapa 3: Visualizar o status de execução do OOS
Faça login no console do 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 da execução.
<!--@div {"id":"info_j6e_bwp_p51","data-tag="info"}-->
Por exemplo, é possível visualizar o ID e o status da execução na seção Basic Information. Você também pode clicar em um nó de tarefa na seção Task Execution para ver detalhes dessa etapa. Para mais informações, consulte View the details of an execution.
NotaSe uma execução falhar, a página de detalhes da execução exibirá uma 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 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 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, você pode conceder 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 exigidas à 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. |
Tópicos relacionados
Você também pode usar um lifecycle hook do Auto Scaling e um modelo do CloudOps Orchestration Service (OOS) para executar scripts automaticamente em uma instância ECS durante um evento de scale-in ou scale-out. Para mais informações, consulte Automatically execute scripts on ECS instances.