Grupos do Auto Scaling com vários tipos de instâncias e opções de compra - Amazon EC2 Auto Scaling

Grupos do Auto Scaling com vários tipos de instâncias e opções de compra

Você pode iniciar e escalar automaticamente uma frota de instâncias sob demanda e instâncias spot em um único grupo do Auto Scaling. Além de receber descontos pelo uso de instâncias spot, você pode usar instâncias reservadas ou um Savings Plan para receber taxas de desconto da definição de preço normal de instância sob demanda. Todos esses fatores combinados ajudam você a otimizar sua economia para instâncias do EC2 e, ao mesmo tempo, garantem que você obtenha a escala e a performance desejadas para sua aplicação.

Especifique primeiro os parâmetros de configuração comuns em um modelo de execução e escolha-o ao criar um grupo do Auto Scaling. Ao configurar o grupo do Auto Scaling, é possível:

  • Escolher um ou mais tipos de instância para o grupo (opcionalmente substituindo o tipo de instância que é especificado pelo modelo de execução)

  • Definir vários modelos de execução para permitir que instâncias com arquiteturas de CPU diferentes (por exemplo, Arm e x86) sejam iniciadas no mesmo grupo do Auto Scaling.

  • Atribua a cada tipo de instância um peso individual. Fazer isso poderá ser útil, por exemplo, se os tipos de instância oferecerem diferentes capacidades de vCPU, memória, armazenamento ou largura de banda de rede.

  • Priorizar os tipos de instância que podem se beneficiar dos preços com desconto do Savings Plan ou da instância reservada.

  • Especificar as quantidades de capacidade sob demanda e spot a serem executadas, além de especificar uma parte base opcional sob demanda.

  • Definir como o Amazon EC2 Auto Scaling deve distribuir sua capacidade spot e sob demanda entre os tipos de instância.

  • Habilite o rebalanceamento de capacidade. Quando você ativa o rebalanceamento de capacidade, o Amazon EC2 Auto Scaling tenta iniciar uma instância spot sempre que o Amazon EC2 Spot Service notificar que uma instância spot está em um risco elevado de interrupção. Depois de iniciar uma nova instância, ele então termina uma instância antiga. Para mais informações, consulte Usar o rebalanceamento de capacidade para lidar com interrupções spot do Amazon EC2.

Aprimore a disponibilidade ao implantar sua aplicação em vários tipos de instâncias em execução em várias zonas de disponibilidade. Você pode usar apenas um tipo de instância, mas é uma melhor prática usar alguns tipos de instância para permitir que o Amazon EC2 Auto Scaling inicie outro tipo de instância se não houver capacidade de instância suficiente nas zonas de disponibilidade escolhidas. Com as instâncias spot, se houver capacidade de instância insuficiente, o Amazon EC2 Auto Scaling continuará tentando em outros grupos de instâncias spot (determinados pela sua escolha de tipos de instância e estratégia de alocação) em vez de iniciar instâncias sob demanda, para que você possa aproveitar a redução de custo das instâncias spot.

Existem duas maneiras de associar vários tipos de instância à configuração do grupo do Auto Scaling:

  • Adicionar manualmente os tipos de instância conforme descrito neste tópico.

  • Escolher um conjunto de atributos de instância para usar como critério de seleção dos tipos de instância que o grupo do Auto Scaling usa. Isso é conhecido como seleção de tipo de instância baseada em atributos. Para mais informações, consulte Using attribute-based instance type selection (Usar a seleção de tipo de instância baseada em atributo).

Estratégias de alocação

As seguintes estratégias de alocação determinam como o grupo do Auto Scaling cumpre sua capacidade sob demanda e spot a partir dos possíveis tipos de instância.

O Amazon EC2 Auto Scaling primeiro tenta garantir que as instâncias sejam distribuídas uniformemente entre as zonas de disponibilidade especificadas. Depois, ele executa tipos de instância de acordo com a estratégia de alocação especificada.

Instâncias spot

O Amazon EC2 Auto Scaling fornece as seguintes estratégias de alocação que podem ser usadas para instâncias spot:

capacity-optimized

O Amazon EC2 Auto Scaling aloca suas instâncias do grupo de instâncias spot com capacidade ideal para o número de instâncias que estão sendo iniciadas. Esse modo de implantação ajuda você a fazer o uso mais eficiente da capacidade extra do EC2.

Com as instâncias spot, a definição de preço muda lentamente ao longo do tempo com base em tendências de longo prazo na oferta e na demanda, mas a capacidade oscila em tempo real. A estratégia capacity-optimized executa Instâncias spot automaticamente nos grupos mais disponíveis observando dados de capacidade em tempo real e prevendo quais são os mais disponíveis. Isso funciona bem para workloads como big data e análises, renderização de imagens e mídia e machine learning. Também funciona bem para a computação de alta performance que pode ter um custo mais alto de interrupção associado ao reinício de trabalho e ao ponto de verificação. Ao oferecer a possibilidade de menos interrupções, a estratégia capacity-optimized pode reduzir o custo geral da workload.

Como alternativa, você pode usar a estratégia de alocação capacity-optimized-prioritized e definir a ordem dos tipos de instância na lista de substituições de modelo de execução da prioridade mais alta para a mais baixa (da primeira para a última na lista). O Amazon EC2 Auto Scaling respeita as prioridades de tipo de instância com base no melhor esforço, mas primeiro otimiza a capacidade. Essa é uma boa opção para workloads em que a possibilidade de interrupção deve ser minimizada, mas em que também a preferência por determinados tipos de instância for importante.

lowest-price

O Amazon EC2 Auto Scaling aloca as instâncias spot de acordo com o número N de grupos por zona de disponibilidade especificados e com os grupos de instâncias spot com o menor preço em cada zona de disponibilidade.

Por exemplo, se você especificar quatro tipos de instância e quatro zonas de disponibilidade, o grupo do Auto Scaling terá acesso a até 16 grupos spot (quatro em cada zona de disponibilidade). Se você especificar dois grupos spot (N=2) para a estratégia de alocação, o grupo do Auto Scaling poderá aproveitar os dois grupos mais baratos por zona de disponibilidade para atender à capacidade spot.

Observe que o Amazon EC2 Auto Scaling tenta extrair instâncias spot com base no número N de grupos que você especifica com base no melhor esforço. Se um grupo ficar sem capacidade spot antes de cumprir sua capacidade desejada, o Amazon EC2 Auto Scaling continuará atendendo sua solicitação usando o próximo grupo mais barato. Para garantir que sua capacidade desejada seja atendida, é possível receber instâncias spot de mais do que o número N de grupos especificado. Da mesma forma, se a maioria dos grupos não tiver capacidade spot, é possível receber sua capacidade desejada total de menos do que o número N de grupos especificado.

Para começar, recomendamos optar pela estratégia de alocação capacity-optimized e especificar alguns tipos de instância que são apropriados para a aplicação. Além disso, é possível definir um intervalo de zonas de disponibilidade para que o Amazon EC2 Auto Scaling escolha ao iniciar instâncias.

Se preferir, você poderá especificar um preço máximo para as instâncias spot. Se você não especificar um preço máximo, o preço máximo padrão será o preço sob demanda, mas você ainda receberá os descontos consideráveis fornecidos pelas instâncias spot. Esses descontos são possíveis devido à definição de preço spot estável disponibilizada com o novo modelo de definição de preço spot.

Para obter mais informações sobre as estratégias de alocação para instâncias spot, consulte Apresentação da estratégia de alocação otimizada para capacidade para instâncias spot do Amazon EC2 no blog da AWS.

On-Demand Instances

O Amazon EC2 Auto Scaling fornece as seguintes estratégias de alocação que podem ser usadas para instâncias sob-demanda:

lowest-price

O Amazon EC2 Auto Scaling implanta automaticamente o tipo de instância mais barato em cada zona de disponibilidade com base no preço sob demanda atual.

Para garantir que a capacidade desejada seja atendida, você pode receber instâncias sob demanda de mais de um tipo de instância em cada zona de disponibilidade, dependendo da capacidade solicitada.

nota

No momento, o Amazon EC2 Auto Scaling não honra a estratégia de alocação lowest-price para instâncias sob demanda ao implementar as termination policies (políticas de encerramento) durante eventos para reduzir a escala na horizontal.

prioritized

O Amazon EC2 Auto Scaling usa a ordem de tipos de instâncias na lista de substituições do modelo de execução para determinar qual tipo de instância usar primeiro ao atender à capacidade sob demanda. Por exemplo, vamos supor que você especificou três substituições do modelo de execução na seguinte ordem: c5.large, c4.large e c3.large. Quando suas instâncias sob demanda são iniciadas, o grupo do Auto Scaling atende à capacidade sob demanda iniciando c5.large, depois c4.large e depois c3.large.

Considere o seguinte ao gerenciar a ordem de prioridade de suas instâncias sob demanda:

Você pode pagar pelo uso antecipadamente para obter descontos significativos para instâncias sob demanda usando Savings Plans ou instâncias reservadas. Para obter mais informações sobre Savings Plans ou instâncias reservadas, consulte a página Definição de preço do Amazon EC2.

  • Com instâncias reservadas, sua taxa de desconto da definição de preço normal da instância sob demanda se aplicará se o Amazon EC2 Auto Scaling iniciar tipos de instância correspondentes. Isso significa que, se tiver instâncias reservadas não utilizadas para c4.large, você poderá definir a prioridade de tipo de instância para dar a prioridade mais alta de suas instâncias reservadas para um tipo de instância c4.large. Quando uma instância c4.large é ativada, você recebe os preços de instância reservada.

  • Com os Savings Plans, sua taxa de desconto da definição de preço normal da instância sob demanda é aplicada ao usar os Amazon EC2 Instance Savings Plans ou Compute Savings Plans. Devido à natureza flexível dos Savings Plans, você tem maior flexibilidade na priorização dos tipos de instância. Desde que use tipos de instância que sejam cobertos pelo seu Savings Plan, você poderá defini-los em qualquer ordem de prioridade e até, ocasionalmente, alterar sua ordem inteiramente, e continuar a receber a taxa de desconto fornecida pelo seu Savings Plan. Para obter mais informações sobre os Savings Plans, consulte o Manual do usuário dos Savings Plans.

Controlar a proporção de instâncias sob demanda

Você tem controle total sobre a proporção de instâncias do grupo do Auto Scaling que são iniciadas como instâncias sob demanda. Para garantir que você sempre tenha capacidade de instância, designe uma porcentagem do grupo a ser iniciado como instâncias sob demanda e, opcionalmente, um número base de instâncias sob demanda com o qual começar. Se você optar por especificar uma capacidade básica de instâncias sob demanda, o Amazon EC2 Auto Scaling só executará instâncias spot após a execução dessa capacidade básica de instâncias sob demanda quando o grupo aumentar a escala na horizontal. 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. Você pode especificar qualquer número de 0 a 100 para a porcentagem sob demanda.

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, o Amazon EC2 Auto Scaling arredonda para o próximo inteiro em favor das instâncias sob demanda.

O comportamento do grupo do Auto Scaling à medida que ele aumenta de tamanho é o seguinte:

Exemplo: comportamento de escalabilidade
Distribuição de instâncias Número total de instâncias em execução nas opções de compra
10 20 30 40
Exemplo 1
On-Demand base: 10 10 10 10 10
On-Demand percentage above base: 50% 0 5 10 15
Spot percentage: 50% 0 5 10 15
Exemplo 2
On-Demand base: 0 0 0 0 0
On-Demand percentage above base: 0% 0 0 0 0
Spot percentage: 100% 10 20 30 40
Exemplo 3
On-Demand base: 0 0 0 0 0
On-Demand percentage above base: 60% 6 12 18 24
Spot percentage: 40% 4 8 12 16
Exemplo 4
On-Demand base: 0 0 0 0 0
On-Demand percentage above base: 100% 10 20 30 40
Spot percentage: 0% 0 0 0 0
Exemplo 5
On-Demand base: 12 10 12 12 12
On-Demand percentage above base: 0% 0 0 0 0
Spot percentage: 100% 0 8 18 28

Melhores práticas para instâncias spot

Antes de criar o grupo do Auto Scaling para solicitar instâncias spot, consulte Melhores práticas para o EC2 Spot no Manual do usuário do Amazon EC2 para instâncias do Linux. Use essas melhores práticas ao planejar a solicitação para que você possa provisionar o tipo de instância desejado com o menor preço possível. Também recomendamos fazer o seguinte:

  • Use o preço máximo padrão, que é o preço sob demanda. Você pagará apenas o preço spot pelas instâncias spot que iniciar. Se o preço spot estiver dentro de seu preço máximo, o atendimento da sua solicitação dependerá da disponibilidade da instância spot. Para obter mais informações, consulte Preços e economia no Manual do usuário do Amazon EC2 para instâncias do Linux.

  • Crie seu grupo do Auto Scaling com vários tipos de instâncias. 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 flexibilidade de tipo de instância.

  • Da mesma forma, não se limite a apenas os tipos de instâncias mais populares. Como os preços oscilam com base na demanda de longo prazo, tipos de instância populares (como as famílias de instância lançadas recentemente) tendem a apresentar mais ajustes de preços. A escolha de tipos de instância de gerações mais antigas e menos populares tende a resultar em custos mais baixos e menos interrupções.

  • Recomendamos usar a estratégia de alocação capacity-optimized ou capacity-optimized-prioritized. Isso significa que o Amazon EC2 Auto Scaling iniciará instâncias usando grupos spot escolhidos de forma ideal com base na capacidade spot disponível, o que ajuda a reduzir a possibilidade de uma interrupção spot.

  • Se você escolheu a estratégia de alocação lowest-price e executa um serviço da Web, especifique um número alto de grupos spot, por exemplo, N=10. A especificação de um número elevado de grupos spot reduzirá o impacto das interrupções de instâncias spot se um grupo em uma das zonas de disponibilidade ficar temporariamente indisponível. Se você executar o processamento em lote ou outras aplicações não críticas, especifique um número menor de grupos spot, por exemplo, N = 2. Isso ajuda a garantir que você provisione instâncias spot apenas de grupos com o menor preço disponível por zona de disponibilidade.

Se você pretende especificar um preço máximo, use a AWS CLI ou um SDK para criar o grupo do Auto Scaling, mas seja cuidadoso. Se o seu preço máximo for inferior ao preço spot dos tipos de instâncias selecionados por você, as Instâncias spot não serão executadas.

Pré-requisitos

Criar um modelo de execução. Para mais informações, consulte Criar um modelo de execução para um grupo do Auto Scaling.

Verifique se você tem as permissões necessárias para usar um modelo de execução. Suas permissões ec2:RunInstances são conferidas ao usar um modelo de execução. Suas permissões iam:PassRole também são conferidas se o modelo de execução especificar uma função do IAM. Para mais informações, consulte Suporte a modelo de execução.

Criar um grupo do Auto Scaling com instâncias spot e sob demanda (console)

Siga as etapas seguintes para criar uma frota de instâncias spot e instâncias sob demanda que você possa escalar.

Antes de começar, confirme que você criou um modelo de execução, conforme descrito em Pré-requisitos.

Verifique se o modelo de execução já não solicita instâncias spot.

Para criar um grupo do Auto Scaling com instâncias spot e sob demanda

  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. Na barra de navegação na parte superior da tela, selecione a mesma Região da AWS usada na criação do modelo de execução.

  3. Selecione Criar um grupo do Auto Scaling.

  4. Na página Choose launch template or configuration (Escolher modelo de execução ou configuração) faça o seguinte:

    1. Em Auto Scaling group name (Nome do grupo do Auto Scaling), insira um nome para o seu grupo do Auto Scaling.

    2. Em Launch template (Modelo de execução), escolha um modelo de execução existente.

    3. Em Launch template version (Versão do modelo de execução), indique se o grupo do Auto Scaling usará a versão padrão, a mais recente ou uma versão específica do modelo de execução no aumento da escala na horizontal.

    4. Verifique se o modelo de execução oferece suporte a todas as opções que você está planejando usar e escolha Next (Próximo).

  5. Na página Choose instance launch options (Escolher as opções de execução da instância) em Network (Rede), para VPC, selecione uma VPC. O grupo do Auto Scaling deve ser criado na mesma VPC do grupo de segurança especificado no modelo de execução.

  6. Para Availability Zones and subnets (Zonas de disponibilidade e sub-redes), selecione uma ou mais sub-redes na VPC especificada. Use sub-redes em várias zonas de disponibilidade para alta disponibilidade. Para mais informações, consulte Considerações sobre a escolha de sub-redes da VPC.

  7. Para Instance type requirements (Requisitos de tipo de instância), selecione Override launch template (Substituir modelo de execução), Manually add instance types (Adicionar tipos de instância manualmente).

    1. Em Instance Types (Tipos de instância), escolha os tipos de instâncias que podem ser executadas. Você pode usar nossas recomendações como ponto de partida.

    2. (Opcional) Para alterar a ordem dos tipos de instância, use as setas. A ordem na qual os tipos de instância são definidos dita a prioridade de execução deles se você escolher uma estratégia de alocação baseada em prioridade.

    3. (Opcional) Para usar ponderação de instâncias, atribua a cada tipo de instância um peso relativo correspondente a quanto a instância deve representar em termos da capacidade do grupo do Auto Scaling.

  8. Em Instance purchase options (Opções de compra de instância), faça atualizações nas opções de compra conforme necessário para reduzir o custo da aplicação usando instâncias spot.

    1. Para Instances distribution (Distribuição de instâncias), especifique as porcentagens das instâncias sob demanda para as instâncias spot a serem executadas para o grupo do Auto Scaling. Se a aplicação for sem estado, tolerante a falhas e puder lidar com uma interrupção de instância, você poderá especificar uma porcentagem maior de instâncias spot.

    2. Dependendo se você optou por executar instâncias spot, você pode marcar a caixa de seleção ao lado de Include On-Demand base capacity (Incluir capacidade básica sob demanda) e, em seguida, especificar o valor mínimo da capacidade inicial do grupo do Auto Scaling que deve ser atendido pelas instâncias sob demanda. Se a capacidade básica for ultrapassada, as configurações Instances distribution (Distribuição de instâncias) serão usadas para determinar quantas instâncias spot e instâncias sob demanda serão executadas.

  9. Em Allocation strategies (Estratégias de alocação), para On-Demand allocation strategy (Estratégia de alocação sob demanda), selecione uma estratégia de alocação.

  10. Para Spot allocation strategy (Estratégia de alocação spot), selecione uma estratégia de alocação. Recomendamos que você mantenha a configuração padrão de Capacity optimized (Capacidade otimizada). Se preferir não manter o padrão, escolha Lowest price (Preço mais baixo), e insira o número de grupos de instâncias spot de preço mais baixo para diversificar.

  11. Em Capacity rebalance (Rebalanceamento de capacidade), escolha se você deseja habilitar ou desabilitar o rebalanceamento de capacidade. Para mais informações, consulte Usar o rebalanceamento de capacidade para lidar com interrupções spot do Amazon EC2.

  12. Escolha Next (Próximo).

    Ou é possível aceitar o restante dos padrões e escolher Skip to review (Avançar para análise).

  13. Na página Configure advanced options (Configurar opções avançadas), configure as seguintes opções como desejar e, em seguida, selecione Next (Próximo):

  14. (Opcional) Na página Configure group size and scaling policies (Configurar o tamanho do grupo e as políticas de escalabilidade), configure as seguintes opções e escolha Next (Próximo):

    1. Em Desired capacity (Capacidade desejada), insira o número inicial de instâncias a serem executadas. Quando esse número é alterado para um valor fora dos limites de capacidade mínima ou máxima, é necessário atualizar os valores de Minimum capacity (Capacidade mínima) ou Maximum capacity (Capacidade máxima). Para mais informações, consulte Definir limites de capacidade no grupo do Auto Scaling.

    2. Para escalar automaticamente o tamanho do grupo do Auto Scaling, escolha Target tracking scaling policy (Política de escalabilidade com monitoramento do objetivo) e siga as instruções. Para mais informações, consulte Políticas de escalabilidade com monitoramento do objetivo para o Amazon EC2 Auto Scaling.

    3. Em Instance scale-in protection (Proteção de redução de instâncias), escolha se deseja habilitar a proteção de redução de instâncias. Para mais informações, consulte Usar proteção de redução na escala na horizontal de instâncias.

  15. (Opcional) Para receber notificações, em Add notification (Adicionar notificação), configure a notificação e, depois, escolha Next (Próximo). Para mais informações, consulte Receber notificações do Amazon SNS quando o grupo do Auto Scaling escala.

  16. (Opcional) Para adicionar tags, escolha Add tag (Adicionar tag), forneça uma chave e um valor para cada tag e, depois, escolha Next (Próximo). Para mais informações, consulte Etiquetar grupos e instâncias do Auto Scaling.

  17. Na página Review (Revisão), escolha Create Auto Scaling group (Criar grupo do Auto Scaling).

Configurar estratégias de alocação spot (AWS CLI)

As configurações de exemplo a seguir mostram como iniciar instâncias spot usando as diferentes estratégias de alocação spot.

nota

Esses exemplos mostram como usar um arquivo de configuração formatado em JSON ou YAML. Se você usar a AWS CLI versão 1, será necessário especificar um arquivo de configuração formatado em JSON. Se você usar a AWS CLI versão 2, poderá especificar um arquivo de configuração formatado em YAML ou JSON.

Exemplo 1: Iniciar instâncias spot usando a estratégia de alocação capacity-optimized

O seguinte comando create-auto-scaling-group cria um grupo do Auto Scaling que especifica o seguinte:

  • A porcentagem do grupo a ser executado como instâncias sob demanda (0) e um número base de instâncias sob demanda com as quais começar (1)

  • Os tipos de instância a serem iniciadas em ordem de prioridade (c5.large, c5a.large, m5.large, m5a.large, c4.large, m4.large, c3.large, m3.large)

  • As sub-redes nas quais iniciar as instâncias (subnet-5ea0c127, subnet-6194ea3b, subnet-c934b782), cada uma correspondente a uma zona de disponibilidade diferente

  • O modelo de execução (my-launch-template) e a versão do modelo de execução ($Default)

Quando o Amazon EC2 Auto Scaling tenta atender à sua capacidade sob demanda, ele executa o tipo de instância c5.large primeiro. As instâncias spot vêm do grupo spot ideal em cada zona de disponibilidade com base na capacidade da instância spot.

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

Veja a seguir um exemplo de arquivo config.json.

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] }, "InstancesDistribution": { "OnDemandBaseCapacity": 1, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

Como alternativa, você pode usar o comando create-auto-scaling-group a seguir para criar o grupo do Auto Scaling fazendo referência a um arquivo YAML como o único parâmetro para o grupo do Auto Scaling em vez de um arquivo JSON.

aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

Veja a seguir um exemplo de arquivo config.yaml.

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large InstancesDistribution: OnDemandBaseCapacity: 1 OnDemandPercentageAboveBaseCapacity: 0 SpotAllocationStrategy: capacity-optimized MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

Exemplo 2: Iniciar instâncias spot usando a estratégia de alocação capacity-optimized-prioritized

O seguinte comando create-auto-scaling-group cria um grupo do Auto Scaling que especifica o seguinte:

  • A porcentagem do grupo a ser executado como instâncias sob demanda (0) e um número base de instâncias sob demanda com as quais começar (1)

  • Os tipos de instância a serem iniciadas em ordem de prioridade (c5.large, c5a.large, m5.large, m5a.large, c4.large, m4.large, c3.large, m3.large)

  • As sub-redes nas quais iniciar as instâncias (subnet-5ea0c127, subnet-6194ea3b, subnet-c934b782), cada uma correspondente a uma zona de disponibilidade diferente

  • O modelo de execução (my-launch-template) e a versão do modelo de execução ($Latest)

Quando o Amazon EC2 Auto Scaling tenta atender à sua capacidade sob demanda, ele executa o tipo de instância c5.large primeiro. Quando o Amazon EC2 Auto Scaling tenta atender à sua capacidade spot, ele respeita as prioridades de tipo de instância com base no melhor esforço, mas primeiro otimiza a capacidade.

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

Veja a seguir um exemplo de arquivo config.json.

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] }, "InstancesDistribution": { "OnDemandBaseCapacity": 1, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized-prioritized" } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

Como alternativa, você pode usar o comando create-auto-scaling-group a seguir para criar o grupo do Auto Scaling fazendo referência a um arquivo YAML como o único parâmetro para o grupo do Auto Scaling em vez de um arquivo JSON.

aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

Veja a seguir um exemplo de arquivo config.yaml.

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large InstancesDistribution: OnDemandBaseCapacity: 1 OnDemandPercentageAboveBaseCapacity: 0 SpotAllocationStrategy: capacity-optimized-prioritized MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

Exemplo 3: Iniciar instâncias spot usando a estratégia de alocação lowest-price diversificada em dois grupos

O seguinte comando create-auto-scaling-group cria um grupo do Auto Scaling que especifica o seguinte:

  • A porcentagem do grupo a ser executado como instâncias sob demanda (50) sem também especificar um número base de instâncias sob demanda com as quais começar

  • Os tipos de instância a serem iniciadas em ordem de prioridade (c5.large, c5a.large, m5.large, m5a.large, c4.large, m4.large, c3.large, m3.large)

  • As sub-redes nas quais iniciar as instâncias (subnet-5ea0c127, subnet-6194ea3b, subnet-c934b782), cada uma correspondente a uma zona de disponibilidade diferente

  • O modelo de execução (my-launch-template) e a versão do modelo de execução ($Latest)

Quando o Amazon EC2 Auto Scaling tenta atender à sua capacidade sob demanda, ele executa o tipo de instância c5.large primeiro. Para sua capacidade spot, o Amazon EC2 Auto Scaling tenta iniciar as instâncias spot uniformemente nos dois grupos de menor preço em cada zona de disponibilidade.

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

Veja a seguir um exemplo de arquivo config.json.

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "lowest-price", "SpotInstancePools": 2 } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

Como alternativa, você pode usar o comando create-auto-scaling-group a seguir para criar o grupo do Auto Scaling fazendo referência a um arquivo YAML como o único parâmetro para o grupo do Auto Scaling em vez de um arquivo JSON.

aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

Veja a seguir um exemplo de arquivo config.yaml.

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 50 SpotAllocationStrategy: lowest-price SpotInstancePools: 2 MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

Verificar se o grupo do Auto Scaling está configurado corretamente e se o grupo iniciou instâncias (AWS CLI)

Para verificar se o grupo do Auto Scaling está configurado corretamente e se ele iniciou instâncias, use o comando describe-auto-scaling-groups. Verifique se a política de instâncias mistas e a lista de sub-redes existem e estão configuradas corretamente. Se as instâncias foram iniciadas, você observará uma lista das instâncias e seus status. Para visualizar as atividades de escalabilidade que resultam do início das instâncias, use o comando describe-scaling-activities. Você pode monitorar atividades de escalabilidade que estão em andamento e que foram concluídas recentemente.