Ganchos do ciclo de vida do Amazon EC2 Auto Scaling
O Amazon EC2 Auto Scaling oferece a capacidade de adicionar ganchos do ciclo de vida aos seus grupos do Auto Scaling. Esses hooks permitem criar soluções que estejam ciente de eventos no ciclo de vida da instância do Auto Scaling e, em seguida, executar uma ação personalizada em instâncias quando ocorrer o evento do ciclo de vida correspondente. Um gancho do ciclo de vida fornece uma quantidade especificada de tempo (uma hora, por padrão) para esperar a ação completar antes que a instância faça a transição para o próximo estado.
Como exemplo do uso de ganchos do ciclo de vida com instâncias do Auto Scaling:
-
Quando ocorre um evento de aumento da escala na horizontal, sua instância recém-iniciada conclui a sequência de inicialização e faz a transição para um estado de espera. Enquanto a instância está em um estado de espera, ela executa um script para baixar e instalar os pacotes de software necessários para sua aplicação, garantindo que sua instância esteja totalmente pronta antes de começar a receber tráfego. Quando o script terminar de instalar o software, ele envia o comando complete-lifecycle-action para continuar.
-
Quando ocorre um evento de redução de escala na horizontal, um gancho do ciclo de vida pausa a instância antes que ela seja terminada e envia uma notificação usando o Amazon EventBridge. Enquanto a instância está em estado de espera, você pode invocar uma função AWS Lambda ou se conectar à instância para baixar logs ou outros dados antes que a instância seja totalmente terminada.
Um uso popular de ganchos do ciclo de vida é controlar quando as instâncias são registradas com o Elastic Load Balancing. Ao adicionar um gancho do ciclo de vida de execução ao seu grupo do Auto Scaling, você pode garantir que seus scripts de bootstrap foram completados com êxito e que as aplicações nas instâncias estejam prontas para aceitar tráfego antes de serem registradas no balanceador de carga no final do gancho do ciclo de vida.
Conteúdo
Disponibilidade de ganchos do ciclo de vida
A tabela a seguir lista os ganchos do ciclo de vida disponíveis para vários cenários.
| Event | Início ou término da instância¹ | Maximum Instance Lifetime (Tempo de vida máximo da instância): instâncias de substituição | Instance Refresh (Atualização ds instância): instâncias de substituição | Capacity Rebalancing (Rebalanceamento de capacidade): instâncias de substituição | Warm Pools (Grupos de alta atividade): instâncias entrando e saindo do grupo de alta atividade |
|---|---|---|---|---|---|
| Início de instâncias | ✓ | ✓ | ✓ | ✓ | ✓ |
| Término de instâncias | ✓ | ✓ | ✓ | ✓ | ✓ |
¹ Aplica-se a todos as execuções e encerramentos, sejam eles iniciados automática ou manualmente, por exemplo, quando você chama as operações SetDesiredCapacity ou TerminateInstanceInAutoScalingGroup. Não se aplica quando você anexa ou desvincula instâncias, move instâncias dentro e fora do modo de espera ou exclui o grupo com a opção force delete (forçar exclusão).
Considerações e limitações dos ganchos do ciclo de vida
Ao trabalhar com ganchos do ciclo de vida, tenha em mente as seguintes notas e limitações:
-
O Amazon EC2 Auto Scaling fornece seu próprio ciclo de vida para ajudar no gerenciamento de grupos do Auto Scaling. Esse ciclo de vida é diferente do de outras instâncias do EC2. Para obter mais informações, consulte Ciclo de vida das instâncias do Amazon EC2 Auto Scaling. As instâncias em um pool ativo também têm seu próprio ciclo de vida, conforme descrito em Transições de estado do ciclo de vida para instâncias em um pool ativo.
-
Você pode usar ganchos do ciclo de vida com instâncias spot, mas um gancho do ciclo de vida não impede que uma instância seja terminada em caso de a capacidade não estar mais disponível, o que pode acontecer a qualquer momento, com um aviso de interrupção de dois minutos. Para obter mais informações, consulte Interrupções da instância spot no Guia do usuário do Amazon EC2. No entanto, você pode habilitar o rebalanceamento de capacidade para substituir proativamente as instâncias spot que receberam uma recomendação de rebalanceamento do Amazon EC2 Spot Service, um sinal que é enviado quando uma instância spot está em risco elevado de interrupção. Para obter mais informações, consulte Rebalanceamento de capacidade no Auto Scaling para substituir instâncias spot em risco.
-
As instâncias podem permanecer em um estado de espera por um determinado período de tempo. O tempo limite padrão para um gancho do ciclo de vida é de uma hora (tempo limite de pulsação). Também há um tempo limite global que especifica a quantidade máxima de tempo que você pode manter uma instância em um estado de espera. O tempo limite global é de 48 horas ou 100 vezes o tempo limite de pulsação, o que for mais curto.
-
O resultado do gancho do ciclo de vida pode ser abandonar ou continuar. Se uma instância estiver sendo executada, continue indica que suas ações foram bem-sucedidas e que o Amazon EC2 Auto Scaling pode colocar a instância em serviço. Caso contrário, abandonar indica que suas ações personalizadas não tiveram êxito e que podemos encerrar e substituir a instância. Se uma instância estiver sendo encerrada, abandone e continue permita que a instância seja encerrada. No entanto, abandon (abandonar) interrompe quaisquer ações restantes, como outros ganchos do ciclo de vida, e continue (continuar) permite que quaisquer outros ganchos do ciclo de vida sejam concluídos.
-
O Amazon EC2 Auto Scaling limita a taxa na qual permite que as instâncias sejam iniciadas se os ganchos do ciclo de vida estiverem falhando de maneira consistente. Portanto, verifique e corrija erros permanentes em suas ações do ciclo de vida.
-
O processo de criação e atualização de ganchos do ciclo de vida usando a AWS CLI, o CloudFormation ou um SDK fornece opções não disponíveis ao criar um gancho do ciclo de vida diretamente no Console de gerenciamento da AWS. Por exemplo, o campo para especificar o ARN de um tópico do SNS ou fila SQS não aparece no console, porque o Amazon EC2 Auto Scaling já envia eventos para o Amazon EventBridge. É possível filtrar esses eventos e redirecioná-los para serviços da AWS como o Lambda, Amazon SNS e Amazon SQS conforme necessário.
-
Chamando a API CreateAutoScalingGroup usando a AWS CLI, o CloudFormation ou um SDK, você pode adicionar vários ganchos do ciclo de vida a um grupo do Auto Scaling enquanto o estiver criando. No entanto, cada hook deve ter o mesmo destino de notificação e perfil do IAM, se esses elementos forem especificados. Para criar ganchos do ciclo de vida com diferentes destinos de notificação e funções diferentes, crie cada gancho do ciclo de vida individualmente em chamadas separadas para a API PutLifecycleHook.
-
Se você adicionar um gancho do ciclo de vida para a execução da instância, o período de carência da verificação de integridade será iniciado assim que a instância atingir o estado
InService. Para obter mais informações, consulte Definir um período de carência da verificação de integridade para um grupo do Auto Scaling.
Considerações sobre dimensionamento
-
As políticas de escalabilidade dinâmica reduzem e expandem em resposta aos dados métricos do CloudWatch, como CPU e E/S de rede, que são agregados em várias instâncias. Quando há uma expansão, o Amazon EC2 Auto Scaling não conta imediatamente uma nova instância para as métricas agregadas de instância do grupo do Auto Scaling. Ele espera até que a instância atinja o estado
InServicee o aquecimento da instância seja concluído. Para obter mais informações, consulte Considerações sobre o desempenho de escalabilidade o tópico de aquecimento da instância padrão. -
Na redução da escala na horizontal, talvez as métricas agregadas da instância não reflitam instantaneamente a remoção de uma instância de encerramento. A instância de encerramento para de contabilizar as métricas agregadas de instância do grupo pouco após o início do fluxo de trabalho de encerramento do Amazon EC2 Auto Scaling.
-
Na maioria dos casos, quando os ganchos do ciclo de vida são invocados, as atividades de escalabilidade devido a políticas de escalabilidade simples são pausadas até que as ações do ciclo de vida sejam concluídas e o período de esfriamento expire. A definição de um intervalo longo para o período de desaquecimento significa que a retomada da escalabilidade levará mais tempo. Para obter mais informações, consulte Ganchos do ciclo de vida podem causar mais atrasos o tópico de resfriamento. Em geral, não recomendamos o uso de políticas de escalabilidade simples se você puder usar políticas de escalabilidade por etapas ou rastreamento de metas.
Recursos relacionados
Para obter um vídeo de introdução, consulteAWS re:Invent 2018: Capacity Management Made Easy with Amazon EC2 Auto Scaling
Também fornecemos alguns trechos de modelo JSON e YAML que você pode usar para entender como declarar ganchos do ciclo de vida em seus modelos de pilha de CloudFormation. Para obter mais informações, consulte a referência AWS::AutoScaling::LifecycleHook no Guia do usuário do AWS CloudFormation.
Você também pode visitar nosso repositório do GitHub
Para obter exemplos do uso de ganchos do ciclo de vida, consulte as seguintes postagens no blog.