Ganchos do ciclo de vida do Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

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 ganchos 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 de 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.

Para obter um vídeo de introdução, consulteAWS re:Invent 2018: Capacity Management Made Easy with Amazon EC2 Auto Scaling (Capacidade de gerenciamento facilitada com o Amazon EC2 Auto Scaling) no YouTube.

Considerações e limitações dos ganchos do ciclo de vida

Ao usar ganchos do ciclo de vida, lembre-se dos seguintes fatores 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 mais informações, consulte Ciclo de vida das instâncias do Amazon EC2 Auto Scaling.

  • As instâncias em um grupo de alta atividade 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 grupo de alta atividade.

  • 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ção de instâncias spot no Manual do usuário do Amazon EC2 para instâncias do Linux. 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 mais informações, consulte Usar o rebalanceamento de capacidade para lidar com interrupções de spot do Amazon EC2.

  • Quando há uma redução da escala, o Amazon EC2 Auto Scaling não conta uma nova instância para as métricas agregadas de instância do CloudWatch do grupo do Auto Scaling (como CPUUtilization, NetworkIn, NetworkOut e assim por diante) até depois que o gancho do ciclo de vida de execução terminar. Quando o aquecimento padrão de instância não estiver ativado ou estiver ativado, mas definido como 0, as instâncias do Auto Scaling começarão a contribuir com dados de uso para as métricas agregadas de instância assim que atingirem o estado InService. Para mais informações, consulte Definir o aquecimento padrão da instância para um grupo do Auto Scaling.

    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.

  • Quando um grupo do Auto Scaling inicia ou encerra instâncias, as ações de escalabilidade iniciadas por políticas simples de escalabilidade são pausadas. Se os ganchos do ciclo de vida forem invocados, as ações de escalabilidade decorrentes de políticas simples de escalabilidade serão pausadas até que as ações do ciclo de vida tenham sido concluídas e o período de desaquecimento tenha expirado. A definição de um intervalo longo para o período de desaquecimento significa que a retomada da escalabilidade levará mais tempo. Para mais informações, consulte Desaquecimento de escalabilidade para o Amazon EC2 Auto Scaling.

  • 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.

Ao criar ganchos do ciclo de vida, lembre-se dos seguintes pontos:

  • Você pode configurar um gancho do ciclo de vida de início para abandonar o início se uma falha inesperada ocorrer. Nesse caso, o Amazon EC2 Auto Scaling terminará e substituirá automaticamente a instância.

  • 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 de ciclo de vida.

  • O processo de criação e atualização de ganchos do ciclo de vida usando a AWS CLI, o AWS CloudFormation ou um SDK fornece opções não disponíveis ao criar um gancho do ciclo de vida diretamente no AWS Management Console. 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 AWS 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 gancho deve ter o mesmo destino de notificação e função 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.

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.

Evento 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 instâncias iniciadas ou terminadas quando o grupo é criado ou excluído, quando o grupo é escalado automaticamente ou quando você ajusta manualmente a capacidade desejada do grupo. 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).

Exemplos

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 AWS 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 baixar modelos de exemplo e scripts de dados de usuários para ganchos do ciclo de vida.

Para obter outros exemplos de uso de ganchos do ciclo de vida, consulte as seguintes postagens no blog: Criação de um sistema de backup para instâncias escaladas usando o Lambda e o comando de execução do Amazon EC2 e Executar código antes de terminar uma instância do EC2 Auto Scaling.