Melhores práticas para o EC2 Spot - Amazon Elastic Compute Cloud

Melhores práticas para o EC2 Spot

As instâncias spot do Amazon EC2 são a capacidade computacional sobressalente do EC2 na Nuvem AWS que está disponível para você com um desconto de até 90% em comparação com os preços de instâncias spot sob demanda. A única diferença entre Instâncias on-demand e Instâncias spot é que as Instâncias spot podem ser interrompidas pelo Amazon EC2, com dois minutos de notificação, quando o Amazon EC2 precisa da capacidade de volta.

As Instâncias spot são recomendadas para aplicações flexíveis, tolerantes a falhas e sem estado. Por exemplo, as Instâncias spot funcionam bem para big data, workloads em contêineres, CI/CD, servidores Web sem estado, computação de alta performance (HPC) e workloads de renderização.

Durante a execução, as Instâncias spot são exatamente as mesmos que as Instâncias on-demand. No entanto, o Spot não garante que você possa manter as instâncias em execução tempo suficiente para concluir as workloads. O Spot também não garante que você possa obter disponibilidade imediata das instâncias que está procurando, nem que sempre possa obter a capacidade agregada solicitada. Além disso, as interrupções e a capacidade da instância spot podem mudar ao longo do tempo porque a disponibilidade da instância spot varia de acordo com a oferta e a demanda, e a performance passada não é uma garantia de resultados futuros.

As Instâncias spot não são adequadas para workloads que são inflexíveis, com estado, intolerantes a falhas ou fortemente acopladas entre nós de instância. Elas também não são recomendadas para workloads intolerantes a períodos ocasionais quando a capacidade de destino não estiver completamente disponível. Não recomendamos o uso de Instâncias spot para essas workloads nem a tentativa de executar failover para Instâncias on-demand a fim de lidar com interrupções.

Independentemente de você ser um usuário spot experiente ou iniciante na utilização de instâncias spot, se estiver enfrentando problemas com interrupções ou disponibilidade de instâncias spot no momento, recomendamos que siga essas práticas recomendadas para ter a melhor experiência usando o serviço spot.

Preparar instâncias individuais para interrupções

A melhor maneira de lidar com interrupções de instâncias spot com tranquilidade é arquitetar a aplicação para que ela seja tolerante a falhas. Para fazer isso, é possível aproveitar as recomendações de rebalanceamento de instâncias do EC2 e avisos de interrupção de instâncias spot.

Uma recomendação de rebalanceamento de uma instância do EC2 é um sinal que notifica você quando uma instância spot corre grande risco de interrupção. O sinal oferece a oportunidade de gerenciar proativamente a instância spot antes do aviso de interrupção de dois minutos da instância spot. É possível decidir rebalancear sua workload em Instâncias spot novas ou existentes que não tenham risco elevado de interrupção. Tornamos mais fácil para você usar esse sinal por meio do atributo de rebalanceamento de capacidade nos grupos do Auto Scaling e na Frota do EC2. Para ter mais informações, consulte Usar rebalanceamento proativo de capacidade.

Um aviso de interrupção da instância spot é um aviso emitido dois minutos antes de o Amazon EC2 interromper uma instância spot. Se a workload tiver “flexibilidade de tempo”, também é possível configurar as instâncias Spot para serem interrompidas ou para hibernarem, em vez de serem encerradas, quando forem interrompidas. O Amazon EC2 interrompe ou hiberna automaticamente suas instâncias spot durante a interrupção e retoma automaticamente as instâncias quando tivermos capacidade disponível.

Recomendamos que você crie uma regra no Amazon EventBridge que capture as recomendações de rebalanceamento e os avisos de interrupção e acione um ponto de verificação para o andamento da workload ou lide tranquilamente com a interrupção. Para ter mais informações, consulte Monitorar os sinais de recomendação de rebalanceamento. Para obter um exemplo detalhado que orienta você sobre como criar e usar regras de evento, consulte Aproveitar os avisos de interrupção de instância spot do Amazon EC2.

Para obter mais informações, consulte Recomendações de rebalanceamento de instâncias do EC2 e Interrupções de instâncias spot.

Ser flexível sobre tipos de instância e zonas de disponibilidade

Um grupo de capacidade spot é um conjunto de instâncias do EC2 não utilizadas, com o mesmo tipo de instância (por exemplo, m5.large) e a zona de disponibilidade (por exemplo, us-east-1a). É necessário ser flexível sobre quais tipos de instância solicita e em quais zonas de disponibilidade pode implantar a workload. Isso dá ao Spot uma chance melhor de encontrar e alocar a quantidade necessária de capacidade computacional. Por exemplo, não peça apenas c5.large se você está disposto a usar grandes das famílias c4, m5 e m4.

Dependendo de suas necessidades específicas, é possível avaliar para quais tipos de instância é possível ter flexibilidade para atender aos requisitos de computação. Se uma workload puder ser dimensionada verticalmente, é necessário incluir tipos de instância maiores (mais vCPUs e memória) nas solicitações. Se você puder dimensionar somente horizontalmente, deverá incluir tipos de instância de geração mais antiga, pois eles têm menos demanda de clientes sob demanda.

Uma boa regra geral é ser flexível para pelo menos 10 tipos de instância para cada workload. Além disso, verifique se todas as zonas de disponibilidade estão configuradas para uso na VPC e selecionadas para a workload.

Usar grupos do Auto Scaling ou a Frota do EC2 para gerenciar a capacidade agregada

O spot permite que você pense em termos de capacidade agregada, ou seja, em unidades que incluem vCPUs, memória, armazenamento ou throughput de rede, em vez de pensar em termos de instâncias individuais. Os grupos do Auto Scaling e a Frota do EC2 permitem iniciar e manter uma capacidade pretendida, e solicitar recursos para substituir automaticamente os que forem interrompidos ou encerrados manualmente. Ao configurar um grupo do Auto Scaling ou uma Frota do EC2, você só precisa especificar os tipos de instância e a capacidade pretendida de acordo com as necessidades da aplicação. Para obter mais informações, consulte Grupos de Auto Scaling no Guia do usuário do Amazon EC2 Auto Scaling e Criar uma Frota do EC2. neste guia do usuário.

Usar a estratégia de alocação otimizada para preço e capacidade

As estratégias de alocação nos grupos de Auto Scaling ajudam a provisionar a capacidade prevista sem a necessidade de procurar manualmente os grupos de capacidade spot com capacidade adicional. Recomendamos o uso da estratégia price-capacity-optimized, pois ela provisiona automaticamente as instâncias dos grupos de capacidade spot mais disponíveis que também têm o menor preço possível. Também é possível aproveitar a estratégia de alocação de price-capacity-optimized na Frota do EC2. Como a capacidade da instância spot é proveniente de grupos com capacidade ideal, isso diminui a possibilidade de que as instâncias spot sejam recuperadas. Para obter mais informações sobre estratégias de alocação, consulte Instâncias spot no Guia do usuário do Amazon EC2 Auto Scaling e Quando as workloads têm um alto custo de interrupção neste guia do usuário.

Usar rebalanceamento proativo de capacidade

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 spot em execução receba o aviso de interrupção de dois minutos. Quando o rebalanceamento de capacidade está habilitado, o ajuste de escala automático ou a Frota do EC2 tentam substituir proativamente as instâncias spot que receberam uma recomendação de rebalanceamento, oferecendo a oportunidade de rebalancear a workload para novas instâncias spot que não apresentam grande risco de interrupção.

O rebalanceamento de capacidade complementa a estratégia de alocação otimizada de capacidade (criada para ajudar a encontrar a capacidade de reserva ideal) e a política de instâncias mistas (criada para aumentar a disponibilidade ao implantar instâncias de vários tipos executadas em várias zonas de disponibilidade).

Para ter mais informações, consulte Rebalanceamento de capacidade.

Use serviços integrados da AWS para gerenciar as instâncias spot

Outros serviços da AWS integram-se ao Spot para reduzir os custos gerais de computação sem a necessidade de gerenciar instâncias ou frotas individuais. Recomendamos considerar as seguintes soluções para as workloads aplicáveis: Amazon EMR, Amazon Elastic Container Service, AWS Batch, Amazon Elastic Kubernetes Service, Amazon SageMaker, AWS Elastic Beanstalk e Amazon GameLift. Para saber mais sobre as melhores práticas do Spot com esses serviços, consulte o Site de workshops de Instâncias spot do Amazon EC2.

Qual é o melhor método de solicitação spot para usar?

Use a tabela a seguir para determinar qual API usar ao solicitar instâncias spot.

API Quando usar? Caso de uso Devo usar esta API?

CreateAutoScalingGroup

  • Você precisa de várias instâncias com uma só configuração ou uma configuração mista.

  • Você deseja automatizar o gerenciamento do ciclo de vida por meio de uma API configurável.

Crie um grupo do Auto Scaling que gerencie o ciclo de vida de suas instâncias enquanto mantém o número desejado de instâncias. Compatível com dimensionamento horizontal da escala (adição de mais instâncias) entre os limites mínimo e máximo especificados.

Sim
CreateFleet
  • Você precisa de várias instâncias com uma só configuração ou uma configuração mista.

  • Você deseja gerenciar por conta própria o ciclo de vida da instância.

  • Se não precisar de autoescalabilidade, recomendamos que use um tipo instant de frota.

Crie uma frota de instâncias sob demanda e instâncias spot em uma única solicitação, com várias especificações de execução, que variam de acordo com o tipo de instância, a AMI, a zona de disponibilidade ou a sub-rede. Por padrão, a estratégia de alocação de instância spot usa o lowest-price por unidade, mas é possível alterá-la para price-capacity-optimized , capacity-optimized ou diversified.

Sim. No modo instant se não houver necessidade de autoescalabilidade

RunInstances
  • Você já está usando a API RunInstances para executar instâncias sob demanda e simplesmente deseja mudar para a execução de instâncias spot alterando um só parâmetro.

  • Você não precisa de várias instâncias com diferentes tipos de instância.

Execute um número especificado de instâncias usando uma AMI e um tipo de instância.

Não. Porque RunInstances não permite tipos de instâncias mistas em uma única solicitação

RequestSpotFleet
  • Desencorajamos fortemente o uso da API RequestSpotFleet por ser uma API herdada e sem investimento planejado.

  • Se quiser gerenciar o ciclo de vida da sua instância, use a API CreateFleet.

  • Se não quiser gerenciar o ciclo de vida da sua instância, use a API CreateAutoScalingGroup.

NÃO USE. RequestSpotFleet é uma API herdada e sem investimento planejado.

Não
RequestSpotInstances
  • Desencorajamos fortemente o uso da API RequestSpotInstances por ser uma API herdada e sem investimento planejado.

NÃO USE. RequestSpotInstances é uma API herdada e sem investimento planejado.

Não