Trabalhar com políticas de término do Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

Trabalhar com políticas de término do Amazon EC2 Auto Scaling

Este tópico fornece informações detalhadas sobre a política padrão de encerramento e as opções disponíveis para escolher políticas de encerramento diferentes para grupos específicos do Auto Scaling. Usando políticas de término, você pode controlar quais instâncias prefere terminar primeiro quando ocorre um evento de redução de escala na horizontal. Por exemplo, você pode escolher uma política de término diferente para que o Amazon EC2 Auto Scaling priorize o término das instâncias mais antigas primeiro.

Quando o Amazon EC2 Auto Scaling encerra instâncias, ele tenta manter o equilíbrio entre as zonas de disponibilidade que são usadas pelo grupo do Auto Scaling. A manutenção do equilíbrio entre as zonas de disponibilidade tem precedência sobre as políticas de encerramento. Se uma zona de disponibilidade tiver mais instâncias que as outras zonas de disponibilidade que são usadas pelo grupo, o Amazon EC2 Auto Scaling aplicará sua política de término especificada nas instâncias da zona de disponibilidade desbalanceada. Se as zonas de disponibilidade usadas pelo grupo estiverem balanceadas, o Amazon EC2 Auto Scaling aplicará a política de término a todas as zonas de disponibilidade do grupo.

Política de término padrão

A política de término padrão aplica vários critérios de terminação antes de selecionar uma instância a ser terminada. Quando o Amazon EC2 Auto Scaling termina instâncias, ele primeiro determina quais zonas de disponibilidade têm a maioria das instâncias, e pelo menos uma instância que não esteja protegida contra redução de escala na horizontal. Na zona de disponibilidade selecionada, aplica-se o seguinte comportamento de política de término padrão:

  1. Determinar se alguma das instâncias elegíveis para encerramento usa a configuração de execução ou o modelo de execução mais antigo:

    1. [Para grupos do Auto Scaling que usem um modelo de execução]

      Determinar se alguma das instâncias usa o modelo de execução mais antigo, a menos que haja instâncias que usem configuração de execução. O Amazon EC2 Auto Scaling termina instâncias que usem uma configuração de execução antes de terminar instâncias que usem um modelo de execução.

    2. [Para grupos do Auto Scaling que usem uma configuração de execução]

      Determine se qualquer uma das instâncias usa a configuração de execução mais antiga.

  2. Depois de aplicar os critérios anteriores, se houver várias instâncias desprotegidas a serem terminadas, determinar quais instâncias estão mais perto da próxima hora de faturamento. Se houver várias instâncias desprotegidas mais perto da próxima hora de faturamento, encerre uma delas aleatoriamente.

    (Observe que encerrar a instância mais perto da próxima hora de faturamento ajuda você a maximizar o uso das suas instâncias que têm uma cobrança por hora.) Se o seu grupo do Auto Scaling usar Amazon Linux, Windows ou o Ubuntu, seu uso do EC2 será cobrado em incrementos de um segundo. Para obter mais informações, consulte Definição de preço do Amazon EC2.

Política de término padrão e grupos de instâncias mistas

Quando um grupo do Auto Scaling com uma política de instâncias mistas reduz a escala na horizontal, o Amazon EC2 Auto Scaling ainda usa políticas de término para priorizar quais instâncias serão terminadas, mas primeiro ele identifica quais dos dois tipos (spot ou sob demanda) devem ser terminados. Em seguida, aplica as políticas de término em cada zona de disponibilidade individualmente. Ele também identifica quais instâncias (dentro da opção de compra identificada) em que zonas de disponibilidade serão terminadas, o que resultará no equilíbrio das zonas de disponibilidade. A mesma lógica se aplica aos grupos do Auto Scaling que usem uma configuração de instâncias mistas com pesos definidos para os tipos de instância.

A política de término padrão muda ligeiramente devido a diferenças em como as políticas de instâncias mistas são implementadas. Aplica-se o seguinte novo comportamento da política de término padrão:

  1. Determinar quais instâncias são qualificáveis para término a fim de alinhar as instâncias restantes à estratégia de alocação da instância sob demanda ou spot que está sendo terminada.

    Por exemplo, após a execução das suas instâncias, você pode alterar a ordem de prioridade dos tipos de instância preferenciais. Quando ocorre um evento de redução de escala na horizontal, o Amazon EC2 Auto Scaling tenta afastar gradualmente as instâncias sob demanda dos tipos de instância com prioridade mais baixa.

  2. Determinar se alguma das instâncias usa o modelo de execução mais antigo, a menos que haja instâncias que usem configuração de execução. O Amazon EC2 Auto Scaling termina instâncias que usem uma configuração de execução antes de terminar instâncias que usem um modelo de execução.

  3. Depois de aplicar os critérios anteriores, se houver várias instâncias desprotegidas a serem terminadas, determinar quais instâncias estão mais perto da próxima hora de faturamento. Se houver várias instâncias desprotegidas mais perto da próxima hora de faturamento, encerre uma delas aleatoriamente.

Usar políticas de término diferentes

Para especificar os critérios de término a serem aplicados antes que o Amazon EC2 Auto Scaling escolha uma instância para término, você pode escolher uma das seguintes políticas de término predefinidas:

  • Default. Terminar instâncias de acordo com a política de término padrão. Essa política é útil quando você deseja que sua estratégia de alocação spot seja avaliada antes de qualquer outra política, de modo que toda vez que suas instâncias spot forem terminadas ou substituídas, você continue fazendo uso de instâncias spot nos grupos ideais. Também é útil, por exemplo, quando você deseja sair das configurações de execução e começar a usar modelos de execução.

  • AllocationStrategy. Terminar as instâncias no grupo do Auto Scaling para alinhar as instâncias restantes com a estratégia de alocação para o tipo de instância que está sendo terminada (uma instância spot ou uma instância sob demanda). Essa política é útil quando seus tipos de instância preferidos foram alterados. Se a estratégia de alocação spot for lowest-price, você poderá rebalancear gradualmente a distribuição de instâncias spot nos seus N grupos spot mais econômicos. Se a estratégia de alocação spot for capacity-optimized, você poderá rebalancear gradualmente a distribuição de instâncias spot nos grupos spot onde há mais capacidade spot disponível. Você também pode substituir gradualmente instâncias sob demanda de um tipo de prioridade mais baixo por instâncias sob demanda de um tipo de prioridade mais alto.

  • OldestLaunchTemplate. Terminar as instâncias que têm o modelo de execução mais antigo. Com essa política, as instâncias que usam o modelo de execução que não é o atual são encerradas primeiro, seguidas pelas instâncias que usam a versão mais antiga do modelo de execução atual. Essa política é útil quando você está atualizando um grupo e descontinuando as instâncias de uma configuração anterior.

  • OldestLaunchConfiguration. Terminar as instâncias que têm a configuração de execução mais antiga. Essa política é útil quando você está atualizando um grupo e descontinuando as instâncias de uma configuração anterior. Com essa política, as instâncias que usem a configuração de execução que não seja a atual são encerradas primeiro.

  • ClosestToNextInstanceHour. Terminar as instâncias que estão mais perto da próxima hora de faturamento. Essa política ajuda a maximizar o uso de suas instâncias que têm uma taxa por hora. (Apenas instâncias que usam Amazon Linux, Windows ou Ubuntu são cobradas em incrementos de um segundo.)

  • NewestInstance. Terminar a instância mais recente do grupo. Essa política é útil quando você está testando uma nova configuração de ativação, mas não deseja mantê-la em produção.

  • OldestInstance. Terminar a instância mais antiga do grupo. Essa opção é útil quando você está atualizando as instâncias no grupo do Auto Scaling para um novo tipo de instância do EC2. Você pode substituir instâncias do tipo antigo gradualmente por instâncias do tipo novo.

    nota

    O Amazon EC2 Auto Scaling sempre equilibra as instâncias entre as zonas de disponibilidade primeiro, independentemente da política de término usada. Como resultado, você pode encontrar situações em que algumas instâncias mais recentes são terminadas antes de instâncias mais antigas. Por exemplo, quando há uma zona de disponibilidade adicionada mais recentemente ou quando uma zona de disponibilidade tiver mais instâncias que as outras zonas de disponibilidade que sejam usadas pelo grupo.

Usar políticas de término diferentes (console)

Depois que o grupo do Auto Scaling tiver sido criado, você poderá atualizar as políticas de término do grupo. A política de término padrão é usada automaticamente. Você tem a opção de substituir a política padrão por uma política de término diferente (como OldestLaunchTemplate) ou várias políticas de término listadas na ordem em que elas devem ser aplicadas.

Para escolher diferentes políticas de término
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha grupos do Auto Scaling no painel de navegação.

  2. Marque a caixa de seleção ao lado do grupo do Auto Scaling.

    Um painel dividido é aberto na parte inferior da página Auto Scaling groups (Grupos do Auto Scaling).

  3. Na guia Detalhes, escolha Configurações avançadas, Editar.

  4. Em Políticas de encerramento, escolha uma ou mais políticas de encerramento. Se escolher várias políticas, coloque-as na ordem em que você deseja que elas sejam avaliadas.

    Você tem a opção de escolher Custom termination policy (Política personalizada de encerramento) e, em seguida, escolhe uma função Lambda que atenda às suas necessidades. Se tiver criado versões e aliases para sua função Lambda, é possível escolher uma versão ou alias no menu suspenso Version/Alias (Versão/alias). Para usar a versão não publicada da sua função Lambda, mantenha Version/Alias (Versão/alias) definido como padrão. Para mais informações, consulte Criar uma política de término personalizada com o Lambda.

    nota

    Ao usar várias políticas, a ordem delas devem ser definida corretamente:

    • Se você usar a política Default (Padrão), coloque-a em último lugar na lista.

    • Se você usar uma Custom termination policy (Política personalizada de encerramento), ela deve ser a primeira política na lista.

  5. Escolha Update (Atualizar).

Usar políticas de término diferentes (AWS CLI)

A política de término padrão é usada automaticamente, a menos que uma política diferente seja especificada.

Para usar uma política de término diferente

Use um dos seguintes comandos:

Você pode usar as políticas de término individualmente ou combiná-las em uma lista de políticas. Por exemplo, use o comando a seguir para atualizar um grupo do Auto Scaling a fim de usar primeiro a política OldestLaunchConfiguration e, depois disso, usar a política ClosestToNextInstanceHour.

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --termination-policies "OldestLaunchConfiguration" "ClosestToNextInstanceHour"

Se você usar a política de encerramento Default, coloque-a no final da lista de políticas de encerramento. Por exemplo, --termination-policies "OldestLaunchConfiguration" "Default".

Para usar uma política de término personalizada, você deve primeiro criar sua política de término usando o AWS Lambda. Para especificar a função do Lambda a ser usada como política de término, torne-a a primeira na lista de políticas de término. Por exemplo, --termination-policies "arn:aws:lambda:us-west-2:123456789012:function:HelloFunction:prod" "OldestLaunchConfiguration". Para mais informações, consulte Criar uma política de término personalizada com o Lambda.