Usar ganchos do ciclo de vida com um grupo de alta atividade - Amazon EC2 Auto Scaling

Usar ganchos do ciclo de vida com um grupo de alta atividade

As instâncias em um grupo de alta atividade mantêm seu próprio ciclo de vida independente para ajudar você a criar a ação personalizada apropriada para cada transição. Esse ciclo de vida foi desenvolvido para ajudar você a invocar ações em um serviço-alvo (por exemplo, uma função do Lambda) enquanto uma instância ainda está sendo inicializada e antes de ser colocada em serviço.

nota

As operações de API que você usa para adicionar e gerenciar ganchos do ciclo de vida e concluir ações de ciclo de vida não são alteradas. Somente o ciclo de vida da instância é alterado.

Para obter mais informações sobre a adição de um gancho do ciclo de vida, consulte Adicionar ganchos do ciclo de vida. Para obter mais informações sobre a conclusão de uma ação do ciclo de vida, consulte Concluir uma ação do ciclo de vida.

Para instâncias que entram no grupo de alta atividade, talvez você precise de um gancho do ciclo de vida por um dos seguintes motivos:

  • Você deseja iniciar instâncias do EC2 via uma AMI que demora muito para concluir a inicialização.

  • Você deseja executar scripts de dados do usuário para inicializar as instâncias do EC2.

Para instâncias que saem do grupo de alta atividade, talvez você precise de um gancho do ciclo de vida por um dos seguintes motivos:

  • Você pode usar algum tempo extra para preparar instâncias do EC2 para uso. Por exemplo, você pode ter serviços que devem ser iniciados quando uma instância é reiniciada antes que a aplicação possa funcionar corretamente.

  • Você deseja preencher previamente os dados de cache para que um novo servidor não seja iniciado com um cache vazio.

  • Você deseja registrar novas instâncias como instâncias gerenciadas com seu serviço de gerenciamento de configuração.

Transições de estado do ciclo de vida para instâncias em um grupo de alta atividade

Uma instância do Auto Scaling pode fazer a transição por muitos estados como parte de seu ciclo de vida.

O diagrama a seguir mostra a transição entre estados do Auto Scaling quando você usa um grupo de alta atividade:


                    As transições de estado do ciclo de vida para instâncias em um grupo de alta atividade.

¹ Esse estado varia de acordo com a configuração do estado do grupo de alta atividade. Se o estado do grupo estiver definido como Running, então esse estado será Warmed:Running, em vez disso. Se o estado do grupo estiver definido como Hibernated, então esse estado será Warmed:Hibernated, em vez disso.

Ao adicionar ganchos do ciclo de vida, considere o seguinte:

  • Quando um gancho do ciclo de vida é configurado para a ação autoscaling:EC2_INSTANCE_LAUNCHING de ciclo de vida, uma instância recém-iniciada faz uma primeira pausa para realizar uma ação personalizada quando atinge o estado Warmed:Pending:Wait e, novamente, quando a instância for reiniciada e atingir o estado Pending:Wait.

  • Quando um gancho do ciclo de vida é configurado para a ação EC2_INSTANCE_TERMINATING de ciclo de vida, uma instância em encerramento faz uma pausa para realizar uma ação personalizada quando atinge o estado Terminating:Wait. No entanto, se você especificar uma política de reutilização de instâncias para retornar instâncias ao grupo de alta atividade na operação de redução da escala horizontalmente em vez de encerrá-las, uma instância que estiver retornando ao grupo de alta atividade fará uma pausa para realizar uma ação personalizada no estado Warmed:Pending:Wait para a ação de ciclo de vida EC2_INSTANCE_TERMINATING.

  • Se a demanda em sua aplicação esgotar o grupo de alta atividade, o Amazon EC2 Auto Scaling poderá iniciar instâncias diretamente no grupo do Auto Scaling se o grupo ainda não tiver atingido sua capacidade máxima. Se as instâncias forem executadas diretamente no grupo, elas só serão pausadas para realizar uma ação personalizada no estado Pending:Wait.

  • Para controlar por quanto tempo uma instância permanece em um estado de espera antes de fazer a transição para o próximo estado, configure sua ação personalizada para usar o comando complete-lifecycle-action. Com os ganchos do ciclo de vida, as instâncias permanecem em estado de espera até que você notifique o Amazon EC2 Auto Scaling de que a ação especificada do ciclo de vida foi concluída, ou até que o período de tempo limite termine (uma hora, por padrão).

A seguir, um resumo do fluxo para um evento de aumento da escala na horizontal.


                    Um diagrama de fluxo de aumento da escala na horizontal.

Quando as instâncias atingem um estado de espera, o Amazon EC2 Auto Scaling envia uma notificação. Exemplos dessas notificações estão disponíveis na seção EventBridge deste guia. Para mais informações, consulte Tipos e padrões de eventos de grupo de alta atividade.

Destinos de notificação compatíveis

O Amazon EC2 Auto Scaling oferece suporte para definir qualquer um dos seguintes destinos como destinos de notificação para notificações de ciclo de vida:

  • Regras do EventBridge

  • Tópicos do Amazon SNS

  • Filas do Amazon SQS

Importante

Lembre-se de que, se você tiver um script de dados do usuário (cloud-init) no modelo de inicialização ou na configuração de inicialização que configura as instâncias quando elas são iniciadas, você não precisará receber notificações para realizar ações personalizadas nas instâncias que estão sendo iniciadas ou reiniciadas.

As seções a seguir contêm links para a documentação que descreve como configurar destinos de notificação:

Regras do EventBridge: para executar código quando o Amazon EC2 Auto Scaling coloca uma instância em um estado de espera, você pode criar uma regra do EventBridge e especificar uma função do Lambda como destino. Para invocar diferentes funções do Lambda com base em notificações de ciclo de vida diferentes, você pode criar várias regras e associar cada regra a um padrão de evento específico e função do Lambda. Para mais informações, consulte Criar regras do EventBridge para eventos de grupo de alta atividade.

Tópicos do Amazon SNS: para receber uma notificação quando uma instância é colocada em um estado de espera, você cria um tópico do Amazon SNS e, em seguida, configura a filtragem de mensagens do Amazon SNS para entregar notificações de ciclo de vida de forma diferente com base em um atributo de mensagem. Para mais informações, consulte Receba notificações usando o Amazon SNS.

Filas do Amazon SQS: para configurar um ponto de entrega para notificações de ciclo de vida em que um consumidor relevante possa buscá-las e processá-las, você pode criar uma fila do Amazon SQS e um consumidor de fila que processe mensagens da fila SQS. Se você quiser que o consumidor da fila processe notificações de ciclo de vida de forma diferente com base em um atributo da mensagem, você também deverá configurar o consumidor da fila para analisar a mensagem e, em seguida, agir sobre a mensagem quando um atributo específico corresponder ao valor desejado. Para mais informações, consulte Receba notificações usando o Amazon SQS.