Visão geral da configuração para criar um grupo de instâncias mistas - Amazon EC2 Auto Scaling

Visão geral da configuração para criar um grupo de instâncias mistas

Este tópico fornece uma visão geral e as melhores práticas para criar um grupo de instâncias mistas.

Visão geral

Para criar um grupo de instâncias mistas, você tem duas opções:

Manual selection

As etapas a seguir descrevem como criar um grupo de instâncias mistas escolhendo manualmente os tipos de instância:

  1. Escolha um modelo de execução que tenha os parâmetros para iniciar uma instância do EC2. Os parâmetros nos modelos de execução são opcionais, mas o Amazon EC2 Auto Scaling não pode iniciar uma instância se o ID da amilong; (AMI) estiver ausente do modelo de execução.

  2. Escolha a opção de substituir o modelo de execução.

  3. Escolha manualmente os tipos de instância adequados ao seu workload.

  4. Especifique as porcentagens de instâncias sob demanda e de instâncias spot a serem iniciadas.

  5. Escolha estratégias de alocação que determinem como o Amazon EC2 Auto Scaling atenderá à capacidade sob demanda e spot com os tipos de instância possíveis.

  6. Escolha as zonas de disponibilidade e sub-redes VPC nas quais iniciar suas instâncias.

  7. Especifique o tamanho inicial do grupo (a capacidade desejada) e o tamanho mínimo e máximo do grupo.

As substituições são necessárias para substituir o tipo de instância declarado no modelo de execução e usar vários tipos de instâncias incorporados na própria definição de recursos do grupo do Auto Scaling. Para obter mais informações sobre os tipos de instâncias disponíveis, consulte Tipos de instância no Manual do usuário do Amazon EC2 para instâncias do Linux.

Você também pode configurar os seguintes parâmetros opcionais para cada tipo de instância:

  • LaunchTemplateSpecification — Você pode atribuir um modelo de execução diferente a um tipo de instância, conforme necessário. Essa opção não está disponível atualmente no console. Para obter mais informações, consulte Usar vários modelos de execução.

  • WeightedCapacity — Você decide o quanto a instância conta para a capacidade desejada em relação ao resto das instâncias do seu grupo. Se você especificar um valor WeightedCapacity para um tipo de instância, deverá especificar um valor WeightedCapacity para todos os tipos. Por padrão, cada instância conta como uma para a capacidade desejada. Para obter mais informações, consulte Configurar um grupo do Auto Scaling para usar ponderação da instância.

Attribute-based selection

Para permitir que o Amazon EC2 Auto Scaling escolha seus tipos de instância automaticamente com base em seus atributos de instância específicos, use as seguintes etapas para criar um grupo misto de instâncias especificando seus requisitos computacionais:

  1. Escolha um modelo de execução que tenha os parâmetros para iniciar uma instância do EC2. Os parâmetros nos modelos de execução são opcionais, mas o Amazon EC2 Auto Scaling não pode iniciar uma instância se o ID da amilong; (AMI) estiver ausente do modelo de execução.

  2. Escolha a opção de substituir o modelo de execução.

  3. Especifique atributos de instância que correspondam aos requisitos de computação, como requisitos de vCPUs e memória.

  4. Especifique as porcentagens de instâncias sob demanda e de instâncias spot a serem iniciadas.

  5. Escolha estratégias de alocação que determinem como o Amazon EC2 Auto Scaling atenderá à capacidade sob demanda e spot com os tipos de instância possíveis.

  6. Escolha as zonas de disponibilidade e sub-redes VPC nas quais iniciar suas instâncias.

  7. Especifique o tamanho inicial do grupo (a capacidade desejada) e o tamanho mínimo e máximo do grupo.

As substituições são necessárias para substituir o tipo de instância declarado no modelo de execução e usar um conjunto de atributos de instância que descrevam seus requisitos de computação. Para os atributos compatíveis, consulte InstanceRequirements na Referência da API do Amazon EC2 Auto Scaling. Como alternativa, é possível usar um modelo de execução que já tenha sua definição de atributos de instância.

Você também pode configurar o parâmetro LaunchTemplateSpecification na estrutura de substituições para atribuir um modelo de execução diferente a um conjunto de requisitos de instância, conforme necessário. Essa opção não está disponível atualmente no console. Para obter mais informações, consulte LaunchTemplateOverrides na Referência da API do Amazon EC2 Auto Scaling.

Por padrão, você definiu o número de instâncias como da capacidade desejada do seu grupo do Auto Scaling.

Como alternativa, você pode definir o valor da capacidade desejada como o número de vCPUs ou a quantidade de memória. Para fazer isso, use a propriedade DesiredCapacityType na operação da API CreateAutoScalingGroup ou o campo suspenso Tipo de capacidade desejada no Console de gerenciamento da AWS. Essa é uma alternativa útil aos pesos de instância.

Flexibilidade de tipo da instância

Para aumentar a disponibilidade, implemente sua aplicação em vários tipos de instância. É uma prática recomendada usar vários tipos de instância para atender aos requisitos de capacidade. Dessa forma, o Amazon EC2 Auto Scaling pode iniciar outro tipo de instância se houver capacidade de instância insuficiente nas zonas de disponibilidade escolhidas.

Se houver capacidade de instância insuficiente com instâncias spot, o Amazon EC2 Auto Scaling continuará tentando iniciar a partir de outros pools de instâncias spot. (Os pools usados são determinados por sua escolha de tipos de instância e estratégia de alocação.) O Amazon EC2 Auto Scaling ajuda você a aproveitar a economia de custo das instâncias spot ao iniciá-las em vez de instâncias sob demanda.

Recomendamos ser flexível para pelo menos 10 tipos de instância para cada workload. Ao escolher seus tipos de instância, não se limite aos novos tipos de instância mais usados. Escolher tipos de instância de gerações mais antigas tende a resultar em menos interrupções spot, pois há menos demanda de clientes sob demanda.

Flexibilidade da zona de disponibilidade

Recomendamos fortemente que estenda seu grupo do Auto Scaling em várias zonas de disponibilidade. Com várias zonas de disponibilidade, você pode criar aplicações que executam o failover automaticamente entre as zonas para obter maior resiliência.

Como benefício adicional, você pode acessar um pool de capacidade mais profundo do Amazon EC2 em comparação com grupos em uma única zona de disponibilidade. Como a capacidade oscila independentemente para cada tipo de instância na zona de disponibilidade, é frequentemente possível obter maior capacidade computacional quando você tem tanto a flexibilidade de tipo de instância quanto da zona de disponibilidade.

Para ter mais informações sobre como usar várias Zonas de disponibilidade, consulte Exemplo: distribuir instâncias entre zonas de disponibilidade.

Preço máximo do spot

Quando você cria o grupo do Auto Scaling usando a AWS CLI ou um SDK, é possível especificar o parâmetro SpotMaxPrice. O parâmetro SpotMaxPrice determina o preço máximo que você está disposto a pagar por uma hora de instância spot.

Quando você especifica o parâmetro WeightedCapacity em suas substituições (ou "DesiredCapacityType": "vcpu" ou "DesiredCapacityType": "memory-mib" no nível do grupo), o preço máximo representa o preço unitário máximo, não o preço máximo de uma instância inteira.

É altamente recomendável que você não especifique um preço máximo. Talvez sua aplicação não seja executada se você não receber suas instâncias spot, como quando o preço máximo é muito baixo. Se você não especificar um preço máximo, o padrão será o preço sob demanda. Você pagará apenas o preço spot pelas instâncias spot que iniciar. Você ainda recebe os grandes descontos oferecidos pelas Instâncias spot. Esses descontos são possíveis devido ao preço spot estável disponível com o modelo de preço spot. Para obter mais informações, consulte Preços e economia no Manual do usuário do Amazon EC2 para instâncias do Linux.

Rebalanceamento proativo de capacidade

Se o seu caso de uso permitir, recomendamos o rebalanceamento de capacidade. O rebalanceamento de capacidade ajuda você a manter a disponibilidade da workload ao substituir proativamente as instâncias spot com risco de interrupção.

Quando a capacidade de rebalanceamento está habilitada, o Amazon EC2 Auto Scaling tenta substituir proativamente as instâncias spot que receberam uma recomendação de rebalanceamento de instância do EC2. É possível decidir rebalancear sua workload em instâncias spot novas ou existentes que não tenham um risco elevado de interrupção.

Para obter mais informações, consulte Rebalanceamento de capacidade no Auto Scaling para substituir instâncias spot em risco.

Comportamento do ajuste de escala

Quando você cria um grupo misto de instâncias, ele usa instâncias sob demanda por padrão. Para usar as instâncias spot, é necessário modificar a porcentagem do grupo a ser iniciada como instâncias sob demanda. Você pode especificar qualquer número de 0 a 100 para a porcentagem sob demanda.

Opcionalmente, você também pode designar um número base de instâncias sob demanda para começar. Se você fizer isso, o Amazon EC2 Auto Scaling aguardará para iniciar instâncias spot até depois de iniciar a capacidade básica de instâncias sob demanda quando o grupo for aumentado na escala horizontalmente. Depois de ultrapassada a capacidade básica, é usada a porcentagem sob demanda para determinar o número de instâncias spot e sob demanda que serão executadas.

O Amazon EC2 Auto Scaling converte o percentual para o número equivalente de instâncias. Se o resultado criar um número fracionário, ele arredonda para o próximo inteiro em favor das instâncias sob demanda.

A tabela a seguir demonstra o comportamento do grupo do Auto Scaling à medida que aumenta e diminui de tamanho.

Exemplo: comportamento de escalabilidade
Opções de compra Tamanho de grupo e número total de instâncias em execução nas opções de compra
10 20 30 40

Exemplo 1: base de 10, 50/50% sob demanda/spot

On-Demand Instances (base amount) 10 10 10 10
On-Demand Instances 0 5 10 15
Spot Instances 0 5 10 15

Exemplo 2: base de 0, 0/100% sob demanda/spot

On-Demand Instances (base amount) 0 0 0 0
On-Demand Instances 0 0 0 0
Spot Instances 10 20 30 40

Exemplo 3: base de 0, 60/40% sob demanda/spot

On-Demand Instances (base amount) 0 0 0 0
On-Demand Instances 6 12 18 24
Spot Instances 4 8 12 16

Exemplo 4: base de 0, 100/0% sob demanda/spot

On-Demand Instances (base amount) 0 0 0 0
On-Demand Instances 10 20 30 40
Spot Instances 0 0 0 0

Exemplo 5: base de 12, 0/100% sob demanda/spot

On-Demand Instances (base amount) 10 12 12 12
On-Demand Instances 0 0 0 0
Spot Instances 0 8 18 28

Quando o tamanho do grupo aumenta, o Amazon EC2 Auto Scaling tenta equilibrar sua capacidade uniformemente em suas zonas de disponibilidade especificadas. Em seguida, ele inicia os tipos de instância de acordo com a estratégia de alocação especificada.

Quando o tamanho do grupo diminui, o Amazon EC2 Auto Scaling primeiro identifica qual dos dois tipos (spot ou sob demanda) deve ser encerrado. Em seguida, ele tenta encerrar as instâncias de forma balanceada nas zonas de disponibilidade especificadas. Também favorece o encerramento de instâncias de uma forma que se alinhe mais às suas estratégias de alocação. Para obter mais informações sobre políticas de encerramento, consulte Trabalhar com políticas de término do Amazon EC2 Auto Scaling.

Disponibilidade regional dos tipos de instância

A disponibilidade dos tipos de instância do EC2 varia de acordo com sua Região da AWS. Por exemplo, os tipos de instância de geração mais recente podem ainda não estar disponíveis em uma determinada região. Devido às variações na disponibilidade de instâncias entre regiões, você pode encontrar problemas ao fazer solicitações programáticas se vários tipos de instância em suas substituições não estiverem disponíveis em sua região. Usar vários tipos de instância que não estão disponíveis na sua região pode fazer com que a solicitação falhe completamente. Para resolver o problema, repita a solicitação com diferentes tipos de instância, certificando-se de que cada tipo de instância esteja disponível na região. Para pesquisar tipos de instâncias oferecidos por localidade, use o comando describe-instance-type-offerings. Para obter mais informações, consulte Tipos de nomes do host de instâncias do Amazon EC2 no Guia do usuário do Amazon EC2.

Para obter as práticas recomendadas para Instâncias spot, consulte Práticas recomendadas para o EC2 Spot no Guia do usuário do Amazon EC2 para instâncias do Linux.

Limitações

Depois de adicionar substituições a um grupo do Auto Scaling usando uma política de instâncias mistas, você pode atualizar as substituições com a UpdateAutoScalingGroupchamada de API, mas não excluí-las. Para remover completamente as substituições, é necessário primeiro mudar o grupo do Auto Scaling para usar um modelo de execução ou uma configuração de execução em vez de uma política de instâncias mistas. Em seguida, você pode adicionar uma política de instâncias mistas novamente sem nenhuma substituição.