Crie um grupo de instâncias mistas usando a seleção de tipo de instância baseada em atributos - Amazon EC2 Auto Scaling

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie um grupo de instâncias mistas usando a seleção de tipo de instância baseada em atributos

Em vez de escolher manualmente os tipos de instância para seu grupo de instâncias mistas, você pode 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.

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:

  • Flexibilidade ideal para instâncias spot — 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.

  • Use facilmente os tipos de instâncias certos: com tantos tipos de instância disponíveis, encontrar os tipos de instância corretos para a workload pode ser demorado. Se você especificar os atributos de instância, os tipos de instância terão automaticamente os atributos necessários para sua workload.

  • Uso automático de novos tipos de instância — Seus grupos do Auto Scaling podem usar tipos de instância da nova geração à medida que são lançados. 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.

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

Com a seleção do tipo de instância baseada em atributos, em vez de fornecer uma lista de tipos de instância específicos, você fornece uma lista dos atributos de instância que suas instâncias exigem, como:

  • Contagem de vCPUs: o número mínimo e máximo de vCPUs por instância.

  • Memória — O mínimo e o máximo GiBs de memória por instância.

  • Armazenamento local: se o sistema deve usar o EBS ou volumes de armazenamento de instâncias para armazenamento local.

  • Desempenho intermitente: se o sistema deve usar a família de instâncias T, incluindo os tipos T4g, T3a, T3 e T2.

Há muitas opções disponíveis para definir seus requisitos de instância. Para obter uma descrição de cada opção e os valores padrão, consulte a Referência da InstanceRequirementsAPI do Amazon EC2 Auto Scaling.

Quando seu grupo de Auto Scaling precisar iniciar uma instância, ele pesquisará os tipos de instância que correspondam aos atributos especificados e estejam disponíveis nessa zona de disponibilidade. Em seguida, a estratégia de alocação determina quais dos tipos de instância correspondentes devem ser executados. Por padrão, a seleção do tipo de instância baseada em atributos tem um recurso de proteção de preço ativado para impedir que seu grupo de Auto Scaling lance tipos de instância que excedam seus limites orçamentários.

Por padrão, você usa o número de instâncias como unidade de medida ao definir a capacidade desejada do seu grupo de Auto Scaling, o que significa que cada instância conta como uma unidade.

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 o campo suspenso Tipo de capacidade desejada na DesiredCapacityType propriedade AWS Management Console ou na operação da CreateAutoScalingGroup UpdateAutoScalingGroup API. Em seguida, o Amazon EC2 Auto Scaling inicia o número de instâncias necessárias para atender à capacidade desejada de vCPU ou memória. Por exemplo, se você usar vCPUs como o tipo de capacidade desejado e usar instâncias com 2 vCPUs cada, uma capacidade desejada de 10 vCPUs iniciaria 5 instâncias. Essa é uma alternativa útil aos pesos de instância.

Proteção de preço

Com a proteção de preços, você pode especificar o preço máximo que está disposto a pagar pelas instâncias do EC2 lançadas pelo seu grupo de Auto Scaling. A proteção de preços é um recurso que impede que seu grupo de Auto Scaling use tipos de instância que você consideraria muito caros, mesmo que se encaixem nos atributos que você especificou.

A proteção de preços é ativada por padrão e tem limites de preço separados para instâncias sob demanda e instâncias spot. Quando o Amazon EC2 Auto Scaling precisa lançar novas instâncias, nenhum tipo de instância com preço acima do limite relevante é executado.

Proteção de preços sob demanda

Para instâncias sob demanda, você define o preço máximo sob demanda que está disposto a pagar como uma porcentagem maior do que um preço sob demanda identificado. O preço sob demanda identificado é o preço do tipo de instância C, M ou R da geração atual de menor preço com seus atributos especificados.

Se um valor de proteção de preço sob demanda não for definido explicitamente, será usado um preço padrão máximo sob demanda de 20% maior do que o preço sob demanda identificado.

Proteção de preço à vista

Por padrão, o Amazon EC2 Auto Scaling aplicará automaticamente a melhor proteção de preço de instância spot para selecionar consistentemente entre uma ampla variedade de tipos de instância. Você também pode definir manualmente a proteção de preço. No entanto, deixar que o Amazon EC2 Auto Scaling faça isso por você pode aumentar a probabilidade de sua capacidade spot ser atendida.

É possível especificar manualmente a proteção de preço usando uma das opções a seguir. Se você definir manualmente a proteção de preço, recomendamos usar a primeira opção.

  • Uma porcentagem de um preço sob demanda identificado — O preço sob demanda identificado é o preço do tipo de instância C, M ou R da geração atual de menor preço com seus atributos especificados.

  • Uma porcentagem maior do que um preço spot identificado — O preço spot identificado é o preço do tipo de instância C, M ou R da geração atual de menor preço com seus atributos especificados. Não recomendamos o uso dessa opção porque os preços spot podem flutuar e, portanto, seu limite de proteção de preço também pode flutuar.

Personalize a proteção de preços

Você pode personalizar os limites de proteção de preços no console do Amazon EC2 Auto Scaling ou usando os SDKs. AWS CLI

  • No console, use as configurações de proteção de preço sob demanda e Proteção de preço spot em Atributos adicionais de instância.

  • Na InstanceRequirementsestrutura, para especificar o limite de proteção de preço da instância sob demanda, use a OnDemandMaxPricePercentageOverLowestPrice propriedade. Para especificar o limite de proteção de preço da Instância Spot, use o MaxSpotPriceAsPercentageOfOptimalOnDemandPrice ou a SpotMaxPricePercentageOverLowestPrice propriedade.

Se você definir o tipo de capacidade desejado (DesiredCapacityType) como vCPUs ou GiB de memória, a proteção de preço se aplicará com base no preço por vCPU ou por memória, em vez do preço por instância.

Você também pode desativar a proteção de preços. Para indicar que não há limite de proteção de preço, especifique um valor percentual alto, como 999999.

nota

Se nenhum tipo de instância C, M ou R da geração atual corresponder aos atributos especificados, a proteção de preços ainda será aplicável. Quando nenhuma correspondência é encontrada, o preço identificado é dos tipos de instância da geração atual com menor preço ou, na falta disso, dos tipos de instância da geração anterior com preços mais baixos, que correspondem aos seus atributos.

Pré-requisitos

Crie um grupo de instâncias mistas com seleção de tipo de instância baseada em atributos (console)

Use o procedimento a seguir para criar um grupo de instâncias mistas usando a seleção de tipo de instância baseada em atributos. Para ajudá-lo a percorrer as etapas com eficiência, algumas seções opcionais são ignoradas.

Para a maioria das cargas de trabalho de uso geral, basta especificar o número de vCPUs e de 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.

Para analisar as melhores práticas para um grupo de instâncias mistas, consulteVisão geral da configuração.

Para criar um grupo de instâncias mistas
  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 o modelo ou a configuração de execução), em Auto Scaling group name (Nome do grupo do Auto Scaling) insira um nome para o grupo do Auto Scaling.

  5. Para escolher o modelo de inicialização, faça o seguinte:

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

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

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

  6. Na página Escolher opções de inicialização da instância, faça o seguinte:

    1. Para Requisitos de tipo de instância, selecione Substituir modelo de execução.

      nota

      Se você escolher um modelo de execução que já contenha um conjunto de atributos de instância, como vCPUs e memória, os atributos da instância serão exibidos. Esses atributos são adicionados às propriedades do grupo do Auto Scaling, onde você pode atualizá-los do console no Amazon EC2 Auto Scaling, a qualquer momento.

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

      • Em vCPUs, insira o número mínimo e máximo desejado de vCPUs. Para não especificar nenhum limite, selecione No minimum (Sem mínimo), No maximum (Sem máximo) ou ambos.

      • Em Memory (GiB) (Memória), insira a quantidade mínima e máxima de memória desejada. Para não especificar nenhum limite, selecione No minimum (Sem mínimo), No maximum (Sem máximo) ou ambos.

    3. (Opcional) Em Additional instance attributes (Atributos de instância adicionais), você pode, opcionalmente, especificar um ou mais atributos para expressar seus requisitos de computação com mais detalhes. Cada atributo adicional inclui mais restrições à solicitação.

    4. Expanda Visualizar tipos de instância correspondentes para ver os tipos de instância que têm seus atributos especificados.

    5. Em Opções de compra de instâncias, para Distribuição de instâncias, especifique as porcentagens do grupo para lançamento como instâncias sob demanda e como instâncias spot. Se seu aplicativo for sem estado, tolerante a falhas e puder lidar com a interrupção de uma instância, você poderá especificar uma porcentagem maior de instâncias spot.

    6. (Opcional) Quando você especifica uma porcentagem para instâncias spot, selecione Incluir capacidade básica sob demanda e depois especifique a capacidade inicial mínima do grupo do Auto Scaling que deve ser atendido por 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.

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

    8. Para Spot allocation strategy (Estratégia de alocação spot), selecione uma estratégia de alocação. A capacidade de preço otimizada é selecionada por padrão. O preço mais baixo está oculto por padrão e só aparece quando você escolhe Mostrar todas as estratégias. Se você escolher Preço mais baixo, insira o número de pools com preços mais baixos para diversificar para pools com preços mais baixos.

    9. Para Rebalanceamento de Capacidade, escolha se deseja ativar ou desativar o Rebalanceamento de Capacidade. Use o Rebalanceamento de capacidade para responder automaticamente quando suas instâncias Spot se aproximarem do encerramento de uma interrupção Spot. Para ter mais informações, consulte Usar o rebalanceamento de capacidade para lidar com interrupções de spot do Amazon EC2.

    10. Em Network (Rede), para VPC, escolha uma VPC. O grupo do Auto Scaling deve ser criado na mesma VPC do grupo de segurança especificado no modelo de execução.

    11. 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 ter mais informações, consulte Considerações sobre a escolha de sub-redes da VPC.

    12. Escolha Avançar, Avançar.

  7. Na etapa Configurar políticas de escalabilidade e tamanho do grupo, faça o seguinte:

    1. Para medir a capacidade desejada em unidades que não sejam instâncias, escolha a opção apropriada para Tamanho do grupo, Tipo de capacidade desejada. As opções compatíveis são Unidades, vCPUs e GiBs de memória. Por padrão, o Amazon EC2 Auto Scaling especifica Unidades, o que quer dizer número de instâncias.

    2. Para Capacidade desejada, o tamanho inicial do seu grupo do Auto Scaling.

    3. Na seção Escalabilidade, em Limites de escalabilidade, se o novo valor para a capacidade desejada for maior que a capacidade mínima desejada e a capacidade máxima desejada, a capacidade máxima desejada será automaticamente aumentada para o novo valor da capacidade desejada. É possível alterar esses limites conforme necessário. Para ter mais informações, consulte Definir limites de escalabilidade para seu grupo do Auto Scaling.

  8. Escolha Skip to review (Ir para revisão).

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

Crie um grupo de instâncias mistas com seleção de tipo de instância baseada em atributos ()AWS CLI

Para criar um grupo de instâncias mistas usando a linha de comando

Use um dos seguintes comandos:

Exemplo de configuração

Para criar um grupo do Auto Scaling com seleção de tipo de instância baseada em atributos usando o, AWS CLI use o comando create-auto-scaling-group a seguir.

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 no mínimo 16.384 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": "price-capacity-optimized" } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 4, "DesiredCapacityType": "units", "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. Isso faz referência a um arquivo YAML como o único parâmetro para seu grupo do Auto Scaling.

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: price-capacity-optimized MinSize: 0 MaxSize: 100 DesiredCapacity: 4 DesiredCapacityType: units 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.

Pré-visualize os tipos de 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, você pode visualizar os tipos de instância fazendo uma chamada de GetInstanceTypesFromInstanceRequirementsAPI do Amazon EC2 usando o 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 obter mais informações, consulte Visualizar tipos de instância com atributos especificados no Guia do usuário do Amazon EC2.

Para saber mais sobre a seleção de tipo de instância baseada em atributos, consulte Seleção de tipo de instância baseada em atributos para EC2 Auto Scaling e EC2 Fleet no blog. AWS

Você pode declarar a seleção de tipo de instância baseada em atributos ao criar um grupo do Auto Scaling usando AWS CloudFormation. Para obter mais informações, consulte o trecho de exemplo na seção Trechos de modelo de escalonamento automático do AWS CloudFormation Guia do usuário.