Práticas recomendadas para instâncias spot do Amazon EC2 - Amazon Elastic Compute Cloud

Práticas recomendadas para instâncias spot do Amazon EC2

O Amazon EC2 fornece acesso à capacidade computacional sobressalente do EC2 na Nuvem AWS que está disponível por meio de instâncias spot com um desconto de até 90% em comparação com os preços de instâncias sob demanda. A única diferença entre instâncias sob demanda e instâncias spot é que as instâncias spot poderão ser interrompidas pelo Amazon EC2, com dois minutos de notificação, se o Amazon EC2 precisar recuperar capacidade. Para garantir a melhor experiência com instâncias Spot, é importante entender e aplicar as práticas recomendadas de uso.

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. As instâncias spot também não são recomendadas para workloads que não sejam tolerantes a períodos ocasionais em que a capacidade-alvo não está totalmente disponível. Seguir as práticas recomendadas para spot de ser flexível em termos de tipos de instância e zonas de disponibilidade é a melhor chance de ter alta disponibilidade, mas isso não garante que haverá capacidade disponível, pois os picos na demanda de instâncias sob demanda podem perturbar as workloads nas instâncias spot.

Não é recomendável usar instâncias spot para essas workloads nem tentar fazer failover para instâncias sob demanda como forma de lidar com interrupções ou períodos de indisponibilidade. Fazer failover para instâncias sob demanda pode inadvertidamente causar interrupções em outras instâncias spot. Além disso, se as instâncias spot de uma combinação de tipo de instância e zona de disponibilidade forem interrompidas, poderá ser difícil obter instâncias sob demanda com a mesma combinação.

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.

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

Usando a seleção de tipo de instância baseada em atributos

Com a seleção do tipo de instância baseada em atributos, você pode especificar atributos de instância, como vCPUs, memória e armazenamento, para a workload que você quer executar. O EC2 Auto Scaling ou a frota do EC2 automaticamente identificará e inicializará instâncias que correspondam aos atributos especificados. Isso elimina o esforço necessário para selecionar manualmente tipos de instância específicos, o que exige um entendimento profundo da oferta de cada tipo de instância.

Além disso, a seleção do tipo de instância baseada em atributos permite que você use automaticamente tipos de instância recém-inicializados à medida que eles se tornam disponíveis. Isso garante acesso contínuo a uma gama cada vez mais ampla de capacidade de instância spot.

A seleção de tipo de instância baseada em atributos é ideal para workloads e frameworks que podem ser flexíveis em relação aos tipos de instância que são executadas, como workloads de computação de alta performance (HPC) e de big data.

Para obter mais informações, consulte Create mixed instances group using attribute-based instance type selection no Guia do usuário do Amazon EC2 Auto Scaling e Especificar atributos para seleção de tipo de instância para frota do EC2 ou frota spot neste guia.

Usar pontuações de posicionamento spot para identificar regiões e zonas de disponibilidade ideais

As instâncias spot são a capacidade não utilizada do EC2, e essa capacidade flutua com base na oferta e na demanda do EC2. Como resultado, talvez você nem sempre obtenha a capacidade spot exata de que precisa em um local específico e em um horário específico. Para mitigar essa imprevisibilidade, você pode usar o recurso de pontuação de posicionamento spot. Esse recurso fornece recomendações para regiões ou zonas de disponibilidade com maior probabilidade de ter capacidade suficiente para atender às suas necessidades de capacidade spot sem exigir que você inicialize primeiro instâncias spot nestes locais.

A pontuação de posicionamento spot é mais bem usada para workloads que podem ser flexíveis quanto aos tipos de instância e à região ou zona de disponibilidade que elas podem usar. Tudo que você precisa fazer é especificar a capacidade spot necessária, seus requisitos de tipo de instância e se você quer recomendações para regiões ou zonas de disponibilidade. Em troca, você recebe uma pontuação que varia de 1 a 10 para cada região ou zona de disponibilidade, indicando a probabilidade do provisionamento com êxito da capacidade spot solicitada naquele local. Uma pontuação de 10 indica que a solicitação de spot tem alta probabilidade de êxito.

É importante observar que a pontuação de posicionamento spot é uma recomendação pontual, pois a capacidade pode variar com o tempo. Ela não garante capacidade disponível nem prevê o risco de interrupção.

Você pode usar o recurso de pontuação de posicionamento spot no console do Amazon EC2, na AWS CLI ou em um SDK. Para ter mais informações, consulte Pontuação de posicionamento de spot.

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.

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