Usar o rebalanceamento de capacidade para lidar com interrupções de spot do Amazon EC2 - Amazon EC2 Auto Scaling

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar o rebalanceamento de capacidade para lidar com interrupções de spot do Amazon EC2

Você pode configurar o Amazon EC2 Auto Scaling para monitorar e responder automaticamente a alterações que afetam a disponibilidade de suas instâncias spot. O rebalanceamento de capacidade ajuda a manter a disponibilidade da workload aumentando proativamente sua frota com uma nova instância spot antes que uma instância em execução seja interrompida por Amazon EC2.

O objetivo do rebalanceamento de capacidade é continuar processando sua workload sem interrupção. Quando as instâncias spot apresentam risco elevado de interrupção, o Amazon EC2 Spot Service notifica o Amazon EC2 Auto Scaling com uma recomendação de rebalanceamento de instância do EC2.

Quando você habilita o rebalanceamento de capacidade do grupo do Auto Scaling, o Amazon EC2 Auto Scaling tenta substituir proativamente as instâncias spot do grupo que receberam uma recomendação de rebalanceamento. Você pode decidir rebalancear sua workload em instâncias spot novas ou existentes que não tenham risco elevado de interrupção. A workload pode continuar processando o trabalho enquanto o Amazon EC2 Auto Scaling inicia novas instâncias spot antes que instâncias existentes sejam interrompidas.

Quando você não usa o rebalanceamento de capacidade, o Amazon EC2 Auto Scaling não substitui as instâncias spot até que o serviço spot do Amazon EC2 interrompa as instâncias e sua verificação de integridade falhe. Antes de interromper uma instância, o Amazon EC2 sempre fornece uma recomendação de rebalanceamento de instância do EC2 e um aviso de interrupção de instância spot de dois minutos.

Visão geral

Para usar o rebalanceamento de capacidade com seu grupo do Auto Scaling, as etapas básicas são:

  1. Configure seu grupo do Auto Scaling para usar vários tipos de instância e zonas de disponibilidade. Dessa forma, o Amazon EC2 Auto Scaling pode analisar a capacidade disponível para instâncias spot em cada zona de disponibilidade. Para ter mais informações, consulte Grupos do Auto Scaling com vários tipos de instâncias e opções de compra.

  2. Adicione ganchos do ciclo de vida conforme necessário para realizar um desligamento suave do seu aplicativo dentro das instâncias que recebem a notificação de rebalanceamento. Para ter mais informações, consulte Ganchos do ciclo de vida do Amazon EC2 Auto Scaling.

    A seguir estão alguns motivos pelos quais você pode usar um gancho do ciclo de vida:

    • Para o encerramento suave de operadores do Amazon SQS

    • Para concluir o cancelamento do registro do sistema de nomes de domínio (DNS)

    • Para extrair logs do sistema ou do aplicativo e carregá-los no Amazon Simple Storage Service (Amazon S3)

  3. Desenvolva uma ação personalizada para o gancho do ciclo de vida. Para invocar sua ação personalizada o mais rápido possível, você precisa saber quando uma instância está pronta para ser encerrada. Descubra isso detectando o estado do ciclo de vida da instância.

    • Para invocar uma ação fora da instância, escreva uma EventBridge regra e automatize a ação a ser tomada quando um padrão de evento corresponder à regra.

    • Para invocar uma ação dentro da instância, configure a instância para executar um script de desligamento e recuperar o estado do ciclo de vida por meio dos metadados da instância.

    É fundamental projetar a ação personalizada para ser concluída em menos de dois minutos. Isso garante que haja tempo suficiente para concluir as tarefas antes do encerramento da instância.

Depois de concluir essas etapas, será possível começar a usar o rebalanceamento de capacidade.

Comportamento de rebalanceamento de capacidade

Com o rebalanceamento de capacidade, o Amazon EC2 Auto Scaling se comporta da seguinte maneira quando uma instância recebe uma recomendação de rebalanceamento:

  • Quando a nova instância spot é iniciada, o Amazon EC2 Auto Scaling aguarda até que a nova instância passe na verificação de integridade antes de encerrar a instância anterior. Ao substituir mais de uma instância, o término de cada instância anterior é iniciado depois que a nova instância foi iniciada e aprovada na verificação de integridade.

  • Como o Amazon EC2 Auto Scaling tenta iniciar novas instâncias antes de terminar as anteriores, estar na capacidade máxima especificada ou próximo a ela pode impedir ou parar completamente as atividades de rebalanceamento. Para evitar esse problema, o Amazon EC2 Auto Scaling pode exceder temporariamente o tamanho máximo do grupo em até 10% da capacidade desejada.

  • Se você não adicionou um gancho do ciclo de vida ao grupo do Auto Scaling, o Amazon EC2 Auto Scaling começará a encerrar as instâncias anteriores assim que as novas instâncias passarem na verificação de integridade.

  • Se você adicionou um gancho do ciclo de vida, isso aumenta o tempo necessário até começarmos a encerrar as instâncias anteriores pelo valor de tempo limite especificado para o hook do ciclo de vida.

  • Se você estiver usando políticas de escalabilidade ou escalabilidade agendada, as atividades de escalabilidade serão executadas em paralelo. Se uma ação de escalabilidade estiver em andamento e seu grupo do Auto Scaling estiver abaixo da nova capacidade desejada, o Amazon EC2 Auto Scaling aumentará a escala na horizontal antes de terminar as instâncias anteriores.

Se não houver capacidade para seus tipos de instância em uma zona de disponibilidade, o Amazon EC2 Auto Scaling continuará tentando executar instâncias spot em outras zonas de disponibilidade habilitadas até que ela seja bem-sucedida.

Na pior das hipóteses, se as novas instâncias falharem na inicialização ou se suas verificações de integridade falharem, o Amazon EC2 Auto Scaling continuará tentando reiniciá-las. Enquanto ele tenta iniciar novas instâncias, as anteriores serão eventualmente interrompidas e encerradas à força com um aviso de interrupção de dois minutos.

Considerações

Considere o seguinte ao usar o reequilíbrio de capacidade:

Projete seu aplicativo para ser tolerante a interrupções pontuais

Seu aplicativo deve ser capaz de lidar com alterações dinâmicas no número de instâncias e com a possibilidade de uma instância spot ser interrompida antecipadamente. Por exemplo, se o seu grupo do Auto Scaling estiver atrás de um balanceador de carga do Elastic Load Balancing, o Amazon EC2 Auto Scaling aguardará o cancelamento do registro da instância no balanceador de carga antes de chamar o gancho do ciclo de vida. Se o tempo para cancelar o registro da instância e concluir a ação do ciclo de vida demorar muito, a instância poderá ser interrompida enquanto o Amazon EC2 Auto Scaling aguarda a conclusão da ação do ciclo de vida antes de encerrar a instância.

Nem sempre é possível para o Amazon EC2 enviar o sinal de recomendação de rebalanceamento antes do aviso de interrupção da instância spot de dois minutos. Às vezes, o sinal de recomendação de reequilíbrio chega ao mesmo tempo que o aviso de interrupção de dois minutos. Quando isso acontece, o Amazon EC2 Auto Scaling chama o gancho do ciclo de vida e tenta executar uma nova instância spot imediatamente.

Evitar um risco elevado de interrupção das instâncias spot substitutas

Suas instâncias spot de substituição poderão correr um risco elevado de interrupção se você usar a estratégia de alocaçãolowest-price. Isso ocorre porque lançamos instâncias no pool de menor preço que tem capacidade disponível naquele momento, mesmo que suas instâncias spot substitutas possam ser interrompidas logo após serem lançadas. Para evitar um alto risco de interrupção, recomendamos fortemente que não use a estratégia de alocaçãolowest-price. Em vez disso, recomendamos a estratégia de alocaçãoprice-capacity-optimized. Essa estratégia executa instâncias spot de substituição em grupos spot com menor probabilidade de interrupção e com o preço mais baixo possível. Portanto, é menos provável que sejam interrompidos em um futuro próximo.

O Amazon EC2 Auto Scaling só lançará uma nova instância se a disponibilidade for igual ou melhor

Um dos objetivos do rebalanceamento de capacidade é melhorar a disponibilidade de uma instância spot. Se uma instância spot existente receber uma recomendação de rebalanceamento, o Amazon EC2 Auto Scaling só iniciará uma nova instância se a nova instância fornecer a mesma ou melhor disponibilidade do que a instância existente. Se o risco de interrupção de uma nova instância for pior do que a instância existente, o Amazon EC2 Auto Scaling não iniciará uma nova instância. No entanto, o Amazon EC2 Auto Scaling continuará avaliando os pools de capacidade Spot com base nas informações fornecidas pelo serviço Amazon EC2 Spot e iniciará uma nova instância se a disponibilidade melhorar.

Há uma chance de que sua instância existente seja interrompida sem que o Amazon EC2 Auto Scaling inicie proativamente uma nova instância. Quando isso acontece, o Amazon EC2 Auto Scaling tenta executar uma nova instância assim que recebe o aviso de interrupção da instância spot. Isso acontece independentemente de a nova instância ter um alto risco de interrupção.

O Rebalanceamento da capacidade não aumenta a taxa de interrupção de instâncias Spot

Quando o Rebalanceamento da capacidade é habilitado, ele não aumenta a Taxa de interrupção de instâncias Spot (o número de instâncias Spot que são recuperadas quando o Amazon EC2 precisa novamente de capacidade). Porém, se o Rebalanceamento da capacidade detectar que uma instância está sob risco de interrupção, o Amazon EC2 Auto Scaling tentará iniciar imediatamente uma nova instância. Portanto, mais instâncias poderão ser substituídas do que se você esperasse que o Amazon EC2 Auto Scaling iniciasse uma nova instância após a interrupção da instância em risco.

Embora você possa substituir mais instâncias com o Rebalanceamento de capacidade habilitado, você se beneficia por ser proativo em vez de reativo. Isso lhe dá mais tempo para agir antes que suas instâncias sejam interrompidas. Com um Aviso de interrupção de instâncias Spot, normalmente você só tem até dois minutos para encerrar sua instância sem problemas. Com o Rebalanceamento da capacidade iniciando uma nova instância com antecedência, os processos existentes têm maiores chances de serem concluídos na instância em risco. Além disso, você pode iniciar os procedimentos de desligamento da instância, impedir que novos trabalhos sejam agendados na instância em risco e preparar a instância recém-executada para assumir o controle do aplicativo. Com a substituição proativa no reequilíbrio de capacidade, você se beneficia de uma continuidade tranquila.

O exemplo teórico a seguir demonstra os riscos e benefícios do uso do Rebalanceamento de Capacidade:

  • 14h – Uma recomendação de rebalanceamento é recebida para a instância A. O Amazon EC2 Auto Scaling tenta imediatamente iniciar a instância de substituição B, dando a você tempo para iniciar seus procedimentos de encerramento.

  • 14h30 – Uma recomendação de rebalanceamento é recebida para a instância B, que é substituída pela instância C. Isso lhe dá tempo para iniciar seus procedimentos de desligamento.

  • 14h32 – Se o reequilíbrio de capacidade não estiver ativado e se um aviso de interrupção da instância spot tiver sido recebido às 14h32, para a instância A, você terá apenas dois minutos para agir. Porém, a instância A teria continuado em execução até esse momento.