Criar um grupo do Auto Scaling usando seleção de tipo de instância baseada em atributos - Amazon EC2 Auto Scaling

Criar um grupo do Auto Scaling usando seleção de tipo de instância baseada em atributos

Ao criar um grupo do Auto Scaling, você deverá especificar as informações necessárias para configurar as instâncias do Amazon EC2, as zonas de disponibilidade e sub-redes VPC para as instâncias, a capacidade desejada e os limites de capacidade mínimo e máximo.

Como alternativa à escolha manual de tipos de instância ao criar um grupo de instâncias mistas, é possível especificar um conjunto de atributos de instância que descrevem seus requisitos de computação. À medida que o Amazon EC2 Auto Scaling inicia as instâncias, todos os tipos de instância usados pelo grupo do Auto Scaling devem corresponder aos atributos de instância exigidos. Isso é conhecido como seleção de tipo de instância baseada em atributos.

O grupo do Auto Scaling ou o modelo de execução especifica os atributos de instância, incluindo a capacidade de memória e potência computacional necessária para as aplicações que você pretende executar nas instâncias. Além disso, seu grupo do Auto Scaling ou seu modelo de execução especifica dois limites de proteção de preço para Instâncias sob-demanda e Spot, que você tem a opção de personalizar, para que você possa impedir que o Amazon EC2 Auto Scaling inicie tipos de instância mais caros se você não precisar deles.

Essa abordagem é ideal para workloads e frameworks que podem ser flexíveis sobre quais tipos de instância são usadas, como contêineres, big data e CI/CD.

Os benefícios da seleção de tipo de instância baseada em atributos são os seguintes:

  • O Amazon EC2 Auto Scaling pode selecionar entre uma ampla variedade de tipos de instância para iniciar instâncias Spot. Isso atende à prática recomendada do Spot de ser flexível em relação aos tipos de instância, o que dá ao serviço Spot do Amazon EC2 uma chance melhor de encontrar e alocar a quantidade necessária de capacidade computacional.

  • Com tantas opções disponíveis, encontrar os tipos de instância certos para o seu workload pode levar tempo. Ao especificar atributos de instância, você pode simplificar a seleção do tipo de instância ao configurar um grupo de instâncias mistas.

  • Seus grupos do Auto Scaling podem usar tipos de instância de geração mais nova, à medida que são executadas. Tipos de instância de geração mais nova são usados automaticamente quando correspondem aos seus requisitos e se alinham com as estratégias de alocação escolhidas para o grupo do Auto Scaling.

Você pode usar a seleção de tipo de instância baseada em atributos por meio do AWS Management Console, AWS CLI ou SDKs.

Para obter informações sobre como configurar a seleção do tipo de instância baseada em atributo em um modelo de execução, consulte Criar um modelo de execução para um grupo do Auto Scaling. Para obter informações sobre como configurar a seleção de tipo de instância baseada em atributos pela transmissão de parâmetros nas chamadas da API do Amazon EC2 Auto Scaling usando um SDK, consulte InstanceRequirements na Referência da API do Amazon EC2 Auto Scaling.

Para saber mais sobre a seleção de tipo de instância baseada em atributos, consulte Attribute-Based Instance Type Selection for EC2 Auto Scaling and EC2 Fleet (Seleção de tipo de instância baseada em atributos para EC2 Auto Scaling e EC2 Fleet) no Blog AWS.

Considerações

Ao usar a seleção de tipo de instância baseada em atributos, leve em consideração as seguintes coisas:

  • Para a maioria dos workloads de uso geral, basta especificar o número de vCPUs e memória necessários. Para casos de uso avançados, você pode especificar atributos como tipo de armazenamento, interfaces de rede, fabricante da CPU e tipo de acelerador.

  • Por padrão, o valor da capacidade desejada do grupo do Auto Scaling é definido como o número de instâncias. Opcionalmente, é possível especificar o tipo de capacidade desejado como o número de vCPUs ou a quantidade de memória ao usar a seleção de tipo de instância baseada em atributos. Então, quando o Amazon EC2 Auto Scaling inicia as instâncias, seu número de vCPUs ou quantidade de memória são considerados para a capacidade desejada. Ao criar seu grupo no console do Amazon EC2 Auto Scaling, essa configuração aparece na seção Group size (Tamanho do grupo) na página Configure group size and scaling policies (Definir políticas de escalabilidade e tamanho do grupo). Esse recurso é um substituto útil para o recurso instance weighting (ponderação da instância).

  • É possível previsualizar os tipos de instância que correspondem aos requisitos de computação sem iniciá-los e ajustar seus requisitos, se necessário. Ao criar o grupo do Auto Scaling no console do Amazon EC2 Auto Scaling, uma previsualização dos tipos de instância aparece na seção Preview matching instance types (Previsualize os tipos de instância correspondentes) na página Choose instance launch options (Escolha as opções de execução da instância).

  • Como alternativa, é possível previsualizar os tipos de instância fazendo uma chamada de API GetInstanceTypesFromInstanceRequirements do Amazon EC2 usando a AWS CLI ou um SDK. Transmita os parâmetros InstanceRequirements na solicitação, no formato exato que você usaria para criar ou atualizar um grupo do Auto Scaling. Para mais informações, consulte Preview instance types with specified attributes (Previsualize tipos de instância com atributos especificados) no Amazon EC2 User Guide for Linux Instances (Guia do usuário do Amazon EC2 para instâncias do Linux).

Entenda a proteção de preço

A proteção de preço é um recurso que protege seu grupo do Auto Scaling contra diferenças extremas de preços entre os tipos de instância. Ao criar um novo grupo do Auto Scaling ou atualizar um grupo do Auto Scaling existente com seleção de tipo de instância baseada em atributos, habilitamos a proteção de preço por padrão. Opcionalmente, é possível escolher seus limites de proteção de preço para Instâncias sob demanda e spot, e o Amazon EC2 Auto Scaling não seleciona tipos de instância cujo preço seja maior do que os limites especificados. Os limites representam o que você está disposto a pagar, definido em termos de uma porcentagem acima de uma linha de base, ao invés de como valores absolutos. A linha de base é determinada pelo preço do tipo mais barato de instância M, C ou R da geração atual com os atributos especificados. Se seus atributos não corresponderem a nenhum tipo de instância M, C ou R, usaremos o tipo de instância com menor preço.

Se você não especificar um limite, os seguintes limites serão usados por padrão:

  • Para instâncias sob demanda, o limite de proteção de preço é definido em 20%.

  • Para instâncias spot, o limite de proteção de preço é definido em 100%.

Para atualizar esses valores ao criar o grupo do Auto Scaling no console do Amazon EC2 Auto Scaling, na página Choose instance launch options (Escolha as opções de execução da instância), selecione o atributo de proteção de preço desejado da lista suspensa Additional instance attributes (Atributos de instância adicionais), e, em seguida, digite ou selecione um valor para o atributo na caixa de texto. Também é possível atualizar esses valores a qualquer momento editando o grupo do Auto Scaling a partir do console ou transmitindo os parâmetros relevantes usando a AWS CLI ou um SDK.

nota

Se você definir Desired capacity type (Tipo de capacidade desejada) como vCPUs ou Memory GiB (Memória GiB), o limite de proteção de preço será aplicado com base no preço por vCPU ou por memória em vez do preço por instância.

Pré-requisitos

Crie um modelo de execução que inclua os parâmetros exigidos para iniciar uma instância do EC2, como a Imagem de máquina da Amazon (AMI) e grupos de segurança. 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.

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

Conclua as etapas a seguir para criar um grupo do Auto Scaling que use seleção de tipo de instância baseada em atributos.

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 usando seleção de tipo de instância baseada em atributos (console)

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

    nota

    Se a seleção de tipo de instância baseada em atributos já estiver sendo utilizada no modelo de execução, as configurações definidas no modelo de execução, como vCPUs e memória, serão preenchidas automaticamente.

    1. Sob Specify instance attributes (Especificar os atributos da instância), comece inserindo seus requisitos de vCPUs e de memória.

      • vCPUs: insira o número mínimo e máximo de vCPUs para seus requisitos de computação. Selecione a caixa de seleção No minimum (Sem mínimo) ou No maximum (Sem máximo) para indicar ausência de limite nessa direção.

      • Memória (MiB): insira a quantidade mínima e máxima de memória, em MiB, para seus requisitos de computação. Selecione a caixa de seleção No minimum (Sem mínimo) ou No maximum (Sem máximo) para indicar ausência de limite nessa direção.

    2. (Opcional) Para Additional instance attributes (Atributos de instância adicionais) e selecione Add attribute (Adicionar atributo) para expressar seus requisitos de computação mais detalhados. Os atributos e valores escolhidos aqui limitam ainda mais quais tipos de instância podem ser iniciadas. Para obter uma lista completa dos atributos compatíveis, consulte InstanceRequirements na Amazon EC2 Auto Scaling API Reference (Referência da API do Amazon EC2 Auto Scaling).

    3. Em Preview matching instance types (Previsualizar os tipos de instância correspondentes), visualize os tipos de instância que correspondem aos requisitos de computação especificados, como vCPUs, memória e armazenamento.

      (Opcional) Para excluir tipos de instância, selecione os tipos a serem excluídos e selecione Exclude selected instance types (Excluir tipos de instância selecionados). Como alternativa, para Additional instance attributes (Atributos de instância adicionais), selecione Add attribute (Adicionar atributo), Exclude instance types (Excluir tipos de instância) e, em seguida, selecione os tipos de instância a serem excluídos.

  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. Sob Allocation strategies (Estratégias de alocação), Lowest price (Preço mais baixo) é selecionado automaticamente para a On-Demand allocation strategy (Estratégia de alocação sob demanda), e não pode ser alterado.

  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. Selecione Próximo duas vezes para ir até a página Configure group size and scaling policies (Definir tamanho do grupo e políticas de escalabilidade).

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

  13. (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. Selecione um Desired capacity type (Tipo de capacidade desejada). Unidades (padrão), vCPUs e Memória GiB são compatíveis.

    2. Insira o tamanho inicial do grupo do Auto Scaling para a Desired capacity (Capacidade desejada) e atualize os limites de Minimum capacity (Capacidade mínima) e Maximum capacity (Capacidade máxima) conforme necessário. Para mais informações, consulte Definir limites de capacidade no grupo do Auto Scaling.

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

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

  14. (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.

  15. (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.

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

Exemplo: criar um grupo do Auto Scaling usando seleção de tipo de instância baseada em atributos (AWS CLI)

Para criar um grupo do Auto Scaling com seleção de tipo de instância baseada em atributos usando a linha de comando, você pode usar o seguinte comando create-auto-scaling-group.

Os seguintes atributos de instância são especificados:

  • VCpuCount: os tipos de instância devem ter um mínimo de quatro e um máximo de oito vCPUs.

  • MemoryMiB: os tipos de instância devem ter um mínimo de 16384 MiB de memória.

  • CpuManufacturers: os tipos de instância devem ter uma CPU fabricada pela Intel.

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

Veja a seguir um exemplo de arquivo config.json.

{ "AutoScalingGroupName": "my-asg", "DesiredCapacityType": "units", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": {"Min": 4, "Max": 8}, "MemoryMiB": {"Min": 16384}, "CpuManufacturers": ["intel"] } }] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 4, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

Para definir o valor da capacidade desejada como o número de vCPUs ou a quantidade de memória, especifique "DesiredCapacityType": "vcpu" ou "DesiredCapacityType": "memory-mib" no arquivo. O tipo de capacidade padrão desejado é units, que define o valor da capacidade desejada como o número de instâncias.

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 DesiredCapacityType: units MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceRequirements: VCpuCount: Min: 2 Max: 4 MemoryMiB: Min: 2048 CpuManufacturers: - intel InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 50 SpotAllocationStrategy: capacity-optimized MinSize: 0 MaxSize: 100 DesiredCapacity: 4 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

Para definir o valor da capacidade desejada como o número de vCPUs ou a quantidade de memória, especifique DesiredCapacityType: vcpu ou DesiredCapacityType: memory-mib no arquivo. O tipo de capacidade padrão desejado é units, que define o valor da capacidade desejada como o número de instâncias.

Limitações

  • Você pode configurar a seleção de tipo de instância baseada em atributos apenas para grupos do Auto Scaling que usam um modelo de execução.

  • Se você tiver um grupo do Auto Scaling existente e planeja substituir os tipos de instância pelos atributos de instância necessários, sua estratégia de alocação sob demanda deve ser lowest-price. Para usar a estratégia de alocação prioritized, você deve continuar adicionando e priorizando manualmente seus tipos de instância. Além disso, sua estratégia de alocação Spot deve ser capacity-optimized ou lowest-price. Para usar a estratégia de alocação capacity-optimized-prioritized, você deve adicionar e priorizar manualmente seus tipos de instância.