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 instâncias, qualquer tipo de instância usado pelo grupo Auto Scaling deve corresponder aos atributos de instância necessários. 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 à melhor prática do Spot de ser flexível quanto aos tipos de instância, o que dá ao serviço Amazon EC2 Spot 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 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.

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

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

  • Contagem de vCPUs — O número mínimo e máximo de v CPUs 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.

  • Performance 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 os requisitos de sua instância. Para obter uma descrição de cada opção e os valores padrão, consulte InstanceRequirementsa Amazon EC2 Auto Scaling API Reference.

Quando seu grupo do Auto Scaling precisar iniciar uma instância, ele procurará por tipos de instância que correspondam aos atributos especificados e que estejam disponíveis nessa zona de disponibilidade. As estratégias de alocação determinam quais tipos de instância serão executados. Por padrão, a seleção de tipo de instância baseada em atributos tem um atributo de proteção de preço ativado para impedir que o grupo do Auto Scaling inicie tipos de instância que excedam seus limites de orçamento.

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 v CPUs 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 v CPUs como o tipo de capacidade desejado e usar instâncias com 2 v CPUs cada, uma capacidade desejada de 10 v CPUs iniciaria 5 instâncias. Essa é uma alternativa útil aos pesos de instância.

Proteção de preço

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

A proteção de preço é 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ço de instância 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 com o menor preço e com os atributos especificados.

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

Proteção de preço spot

Por padrão, o Amazon EC2 Auto Scaling aplicará automaticamente a proteção ideal 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 que sua capacidade spot seja 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 com o menor preço e com os atributos especificados.

  • Uma porcentagem maior 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 com o menor preço e com os atributos especificados. Não é recomendável usar esse parâmetro, pois os preço spot podem flutuar e, portanto, seu limite de proteção de preço também poderá flutuar.

Personalizar a proteção de preços

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

  • No console, use as configurações de Proteção de preço sob demanda e Proteção de preço spot em Atributos adicionais da 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 a propriedade MaxSpotPriceAsPercentageOfOptimalOnDemandPrice ou SpotMaxPricePercentageOverLowestPrice.

Se você definir o tipo de capacidade desejado (DesiredCapacityType) como v CPUs ou GiB de memória, a proteção de preço será aplicada 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ço ainda será aplicável. Quando nenhuma correspondência é encontrada, o preço identificado é o dos tipos de instância da geração atual com o menor preço ou, se não houver, dos tipos de instância da geração anterior com o menor preço que correspondam a seus atributos.

Proteção de performance

A proteção de desempenho é um recurso que garante que seu grupo de Auto Scaling use tipos de instância que sejam semelhantes ou excedam uma linha de base de desempenho especificada. Para usar a proteção de performance, especifique uma família de instâncias como referência de linha de base. Os recursos da família de instâncias especificada estabelecem o nível de performance mais baixo aceitável. Quando o Auto Scaling seleciona os tipos de instância, ele considera seus atributos especificados e a linha de base de desempenho. Os tipos de instância que estão abaixo da linha de base de performance são automaticamente excluídos da seleção, mesmo que correspondam aos outros atributos especificados. Isso garante que todos os tipos de instância selecionados ofereçam performance semelhante ou melhor do que a linha de base estabelecida pela família de instâncias especificada. O Auto Scaling usa essa linha de base para orientar a seleção do tipo de instância, mas não há garantia de que os tipos de instância selecionados sempre excederão a linha de base de cada aplicativo.

No momento, esse recurso oferece suporte apenas à performance da CPU como fator de performance da linha de base. O desempenho da CPU da família de instâncias especificada serve como linha de base de desempenho, garantindo que os tipos de instância selecionados sejam semelhantes ou excedam essa linha de base. Famílias de instâncias com os mesmos processadores de CPU levam aos mesmos resultados de filtragem, mesmo que a performance da rede ou do disco seja diferente. Por exemplo, especificar c6in ou c6i como referência de linha de base produziria resultados de filtragem idênticos com base na performance porque as duas famílias de instâncias usam o mesmo processador de CPU.

Famílias de instâncias não compatíveis

As seguintes famílias de instâncias não são compatíveis com a proteção de performance:

  • c1

  • g3 | g3s

  • hpc7g

  • m1 | m2

  • mac1 | mac2 | mac2-m1ultra | mac2-m2 | mac2-m2pro

  • p3dn | p4d | p5

  • t1

  • u-12tb1 | u-18tb1 | u-24tb1 | u-3tb1 | u-6tb1 | u-9tb1 | u7i-12tb | u7in-16tb | u7in-24tb | u7in-32tb

Se você habilitar a proteção de performance especificando uma família de instâncias compatível, os tipos de instância retornados excluirão as famílias de instâncias incompatíveis acima.

Exemplo: definir uma linha de base de performance da CPU

No exemplo a seguir, o requisito da instância é ser iniciada com tipos de instância que tenham núcleos de CPU com a mesma performance da família de instâncias c6i. Isso filtrará os tipos de instância com processadores de CPU de menor desempenho, mesmo que atendam aos outros requisitos de instância especificados, como o número de v. CPUs Por exemplo, se os atributos de instância especificados incluírem 4 v CPUs e 16 GB de memória, um tipo de instância com esses atributos, mas com desempenho de CPU inferior ao que c6i será excluído da seleção.

"BaselinePerformanceFactors": { "Cpu": { "References": [ { "InstanceFamily": "c6i" } ] }
Considerações

Considere o seguinte ao usar a proteção de desempenho:

  • Você pode especificar tipos de instância ou atributos de instância, mas não os dois ao mesmo tempo.

  • É possível especificar, no máximo, quatro estruturas de InstanceRequirements em uma configuração de solicitação.

Pré-requisitos

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

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 ajudar 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 v CPUs e a memória de que você precisa. 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 etapas de configuração de um grupo de instâncias mistas, consulte Visão geral da configuração para criar um grupo de instâncias mistas.

Para criar um grupo de instâncias mistas
  1. Abra o EC2 console da Amazon em https://console.aws.amazon.com/ec2/e escolha Auto Scaling Groups 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 v CPUs e memory, os atributos da instância serão exibidos. Esses atributos são adicionados às propriedades do grupo Auto Scaling, onde você pode atualizá-los a partir do console do Amazon Auto EC2 Scaling a qualquer momento.

    2. Em Especificar atributos da instância, comece inserindo seus requisitos de v CPUs e memória.

      • Para v CPUs, insira o número mínimo e máximo desejado de CPUs v. Para especificar nenhum limite, selecione Sem mínimo, 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. (Opcional) Expanda Preview matching instance types (Previsualizar os tipos de instância correspondentes) para visualizar os tipos de instância que têm os 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 sua aplicação 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 obter mais informações, consulte Use o rebalanceamento de capacidade para lidar com interrupções no Amazon Spot 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 obter 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. UnidadesCPUs, v e Memória GiB são suportadas. Por padrão, o Amazon EC2 Auto Scaling especifica unidades, o que se traduz em 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 obter 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 usando a 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 de Auto Scaling com seleção de tipo de instância baseada em atributos usando o AWS CLI, use o comando a seguir. create-auto-scaling-group

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

  • VCpuCount— Os tipos de instância devem ter no mínimo quatro v CPUs e no máximo oito CPUs v.

  • 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 v CPUs 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 create-auto-scaling-groupcomando a seguir para criar o grupo 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 v CPUs 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 seu grupo de Auto Scaling no console do Amazon EC2 Auto Scaling, uma prévia dos tipos de instância aparece na seção Visualizar tipos de instância correspondentes na página Escolher opções de execução da instância.

Como alternativa, você pode visualizar os tipos de instância fazendo uma chamada de EC2 GetInstanceTypesFromInstanceRequirementsAPI da Amazon 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 EC2 do usuário da Amazon.

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 Auto Scaling e EC2 Fleet no blog. EC2 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.