Use o rebalanceamento de capacidade para lidar com interrupções no Amazon Spot 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á.

Use o rebalanceamento de capacidade para lidar com interrupções no Amazon Spot EC2

Você pode configurar o Amazon EC2 Auto Scaling para monitorar e responder automaticamente às mudanças que afetam a disponibilidade de suas Instâncias Spot. O rebalanceamento de capacidade ajuda você a manter a disponibilidade da carga de trabalho aumentando proativamente sua frota com uma nova instância spot antes que uma instância em execução seja interrompida pela Amazon. EC2

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

Quando você ativa o rebalanceamento de capacidade para seu grupo de Auto Scaling, o Amazon Auto EC2 Scaling tenta substituir proativamente as Instâncias Spot em seu 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. Sua carga de trabalho pode continuar processando o trabalho enquanto o Amazon EC2 Auto Scaling lança novas instâncias spot antes que suas instâncias existentes sejam interrompidas.

Quando você não usa o Capacity Rebalancing, o Amazon Auto EC2 Scaling não substitui as Instâncias Spot até que o serviço EC2 Amazon Spot interrompa as instâncias e sua verificação de integridade falhe. Antes de interromper uma instância, a Amazon EC2 sempre dá uma recomendação de rebalanceamento da EC2 instância e um aviso Spot de interrupção da instância 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 obter 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 da sua aplicação dentro das instâncias que recebem a notificação de rebalanceamento. Para obter 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 da aplicação 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 Capacity Rebalancing, o Amazon Auto EC2 Scaling se comporta da seguinte forma quando uma instância recebe uma recomendação de rebalanceamento:

  • Quando a nova instância spot é iniciada, o Amazon EC2 Auto Scaling espera até que a nova instância passe pela 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 encerrar as anteriores, estar na capacidade máxima especificada ou próxima dela pode impedir ou interromper 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 de ciclo de vida ao seu grupo de Auto Scaling, o Amazon Auto EC2 Scaling começará a encerrar as instâncias anteriores assim que as novas instâncias passarem pela verificação de saúde.

  • 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 gancho 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 atividade de escalabilidade estiver em andamento e seu grupo de Auto Scaling estiver abaixo da nova capacidade desejada, o Amazon Auto EC2 Scaling se expande primeiro antes de encerrar 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 continua tentando iniciar instâncias spot em outras zonas de disponibilidade habilitadas até que seja bem-sucedido.

Na pior das hipóteses, se novas instâncias falharem na inicialização ou suas verificações de saúde 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 sua aplicação para ser tolerante a interrupções pontuais

Sua aplicação 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 seu grupo de Auto Scaling estiver por trás de um balanceador de carga do Elastic Load Balancing, o Amazon Auto EC2 Scaling espera que a instância cancele o registro do balanceador de carga antes de chamar seu gancho de 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 Auto Scaling EC2 aguarda a conclusão da ação do ciclo de vida antes de encerrar a instância.

Nem sempre é possível para a 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 iniciar 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 a mesma 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ó lançará uma nova instância se a nova instância fornecer a mesma disponibilidade ou melhor 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 lançará 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 lançará 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 lance proativamente uma nova instância. Quando isso acontece, o Amazon EC2 Auto Scaling tenta iniciar 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 você ativa o rebalanceamento de capacidade, isso não aumenta sua taxa de interrupção de instância spot (o número de instâncias spot que são recuperadas quando a EC2 Amazon precisa da capacidade de volta). No entanto, se o Capacity Rebalancing detectar que uma instância está em risco de interrupção, o Amazon Auto EC2 Scaling tentará imediatamente iniciar uma nova instância. Portanto, mais instâncias podem 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 da aplicação. 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, por exemplo A. O Amazon Auto EC2 Scaling tenta imediatamente iniciar a instância B de substituição, dando a você tempo para iniciar seus procedimentos de desligamento.

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