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:

  • v CPU count — 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 deve usar EBS ou instanciar volumes de armazenamento 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 os requisitos de sua instância. Para obter uma descrição de cada opção e os valores padrão, consulte InstanceRequirementsa Referência do Amazon EC2 Auto Scaling. API

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 para o número vCPUs ou a quantidade de memória. Para fazer isso, use o campo suspenso Tipo de capacidade desejada na DesiredCapacityType propriedade AWS Management Console CreateAutoScalingGroup ou UpdateAutoScalingGroup API na operação. Em seguida, o Amazon EC2 Auto Scaling inicia o número de instâncias necessárias para atender à capacidade de v CPU ou memória desejada. Por exemplo, se você usar vCPUs 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ç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 desejada (DesiredCapacityType) como vCPUsou GiB de memória, a proteção de preço se aplicará com base no preço por v CPU 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 desempenho

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 desempenho, você especifica uma família de instâncias como referência básica. Os recursos da família de instâncias especificada estabelecem o nível de desempenho 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 desempenho 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 desempenho 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.

Atualmente, esse recurso oferece suporte apenas ao CPU desempenho como fator de desempenho básico. O CPU desempenho 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 CPU processadores levam aos mesmos resultados de filtragem, mesmo que o desempenho da rede ou do disco seja diferente. Por exemplo, especificar uma c6in ou c6i como referência básica produziria resultados de filtragem idênticos com base no desempenho porque as duas famílias de instâncias usam o mesmo processador. CPU

Famílias de instâncias não suportadas

As seguintes famílias de instâncias não são suportadas para proteção de desempenho:

  • 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ê ativar a proteção de desempenho especificando uma família de instâncias compatível, os tipos de instância retornados excluirão as famílias de instâncias não suportadas acima.

Exemplo: definir uma linha de base CPU de desempenho

No exemplo a seguir, o requisito da instância é executar com tipos de instância que tenham CPU núcleos com o mesmo desempenho da família de c6i instâncias. Isso filtrará os tipos de instância com CPU processadores de menor desempenho, mesmo que eles atendam aos outros requisitos de instância especificados, como o número devCPUs. Por exemplo, se os atributos de instância especificados incluírem 4 vCPUs e 16 GB de memória, um tipo de instância com esses atributos, mas com CPU desempenho 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.

  • Você pode 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 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 vCPUs 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, CPU fabricante 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 vCPUs e memória, 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 vCPUs e de memória.

      • Para vCPUs, insira o número mínimo e máximo desejado devCPUs. 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. (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 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 obter mais informações, consulte Usar o rebalanceamento de capacidade para lidar com interrupções de spot do Amazon EC2.

    10. Em Rede, para VPC, escolha VPC a. O grupo Auto Scaling deve ser criado da VPC mesma forma que o grupo de segurança que você especificou no seu modelo de execução.

    11. Para zonas de disponibilidade e sub-redes, escolha uma ou mais sub-redes nas especificadas. VPC Use sub-redes em várias zonas de disponibilidade para alta disponibilidade. Para obter mais informações, consulte Considerações ao escolher sub-redes 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. Unidades e vCPUsGiB de memória 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 vCPUs e no máximo oitovCPUs.

  • MemoryMiB – os tipos de instância devem ter no mínimo 16.384 MiB de memória.

  • CpuManufacturers— Os tipos de instância devem ser fabricados pela IntelCPU.

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 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 create-auto-scaling-groupcomando a seguir para criar o grupo Auto Scaling. Isso faz referência a um YAML arquivo como o único parâmetro para seu grupo de 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 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 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 EC2 GetInstanceTypesFromInstanceRequirementsAPIchamada da Amazon usando o AWS CLI ou SDK a. 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.