Configurar um grupo de Auto Scaling para usar pesos de instância - 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á.

Configurar um grupo de Auto Scaling para usar pesos de instância

Ao usar vários tipos de instância, você pode especificar quantas unidades associar a cada tipo de instância e, em seguida, especificar a capacidade do seu grupo com a mesma unidade de medida. Essa opção de especificação de capacidade é conhecida como pesos.

Por exemplo, digamos que você execute uma aplicação com uso intenso de computação que tenha melhor performance com pelo menos 8 vCPUs e 15 GiB de RAM. Se você usar c5.2xlarge como sua unidade base, qualquer um dos tipos de instância do EC2 a seguir atenderá às necessidades da aplicação.

Exemplo de tipos de instância
Tipo de instância vCPU Memória (GiB)
c5.2xlarge 8 16
c5.4xlarge 16 32
c5.12xlarge 48 96
c5.18xlarge 72 144
c5.24xlarge 96 192

Por padrão, todos os tipos de instância têm o mesmo peso, independentemente do tamanho. Em outras palavras, se o Amazon EC2 Auto Scaling iniciar um tipo de instância grande ou pequeno, cada instância será considerada na capacidade desejada do grupo do Auto Scaling.

Com pesos, no entanto, você atribui um valor numérico que especifica quantas unidades associar a cada tipo de instância. Por exemplo, se as instâncias tiverem tamanhos diferentes, uma instância c5.2xlarge poderá ter o peso 2, uma c5.4xlarge (que é duas vezes maior) poderá ter o peso 4 e assim por diante. Quando o Amazon EC2 Auto Scaling reduz a escala do grupo, esses pesos se traduzem no número de unidades que cada instância conta para a capacidade desejada.

Os pesos não alteram quais tipos de instância o Amazon EC2 Auto Scaling escolhe executar; em vez disso, as estratégias de alocação fazem isso. Para ter mais informações, consulte Estratégias de alocação.

Importante

Para configurar um grupo do Auto Scaling para atender à capacidade desejada usando o número de vCPUs ou a quantidade de memória de cada tipo de instância, recomendamos usar a seleção de tipo de instância baseada em atributos. A configuração do DesiredCapacityType parâmetro especifica automaticamente o número de unidades a serem associadas a cada tipo de instância com base no valor definido para esse parâmetro. Para ter mais informações, consulte Crie um grupo de instâncias mistas usando a seleção de tipo de instância baseada em atributos.

Considerações

Esta seção discute as principais considerações para implementar pesos de forma eficaz.

  • Escolha alguns tipos de instância que atendam às necessidades de desempenho do seu aplicativo. Decida o peso que cada tipo de instância deve contar para a capacidade desejada do seu grupo de Auto Scaling com base em seus recursos. Esses pesos se aplicam às instâncias atuais e futuras.

  • Evite grandes intervalos entre pesos. Por exemplo, não especifique um peso de 1 para um tipo de instância quando o próximo tipo de instância maior tiver um peso de 200. A diferença entre os pesos menores e maiores também não deve ser extrema. Diferenças extremas de peso podem afetar negativamente a otimização de custo-desempenho.

  • Especifique a capacidade desejada do grupo em unidades, não em instâncias. Por exemplo, se você usa pesos baseados em vCPU, defina o número desejado de núcleos e também o mínimo e o máximo.

  • Defina seus pesos e a capacidade desejada de forma que a capacidade desejada seja pelo menos duas a três vezes maior do que o seu maior peso.

Observe o seguinte ao atualizar grupos existentes:

  • Ao adicionar pesos a um grupo existente, inclua pesos para todos os tipos de instância atualmente em uso.

  • Quando você adiciona ou altera pesos, o Amazon EC2 Auto Scaling executa ou encerra instâncias para atingir a capacidade desejada com base nos novos valores de peso.

  • Se você remover um tipo de instância, as instâncias em execução desse tipo manterão seu último peso, mesmo que não estejam mais definidas.

Comportamentos de peso da instância

Quando você usa pesos de instância, o Amazon EC2 Auto Scaling se comporta da seguinte maneira:

  • A capacidade atual será a capacidade desejada ou acima dela. A capacidade atual pode exceder a capacidade desejada se forem lançadas instâncias que excedam as unidades de capacidade desejadas restantes. Por exemplo, vamos supor que você especifique dois tipos de instância, c5.2xlarge e c5.12xlarge, e atribua pesos de instância de 2 para c5.2xlarge e 12 para c5.12xlarge. Se houver cinco unidades restantes para atender a capacidade desejada, e o Amazon EC2 Auto Scaling provisionar uma,c5.12xlarge a capacidade desejada será excedida em sete unidades.

  • Ao lançar instâncias, o Amazon EC2 Auto Scaling prioriza a distribuição da capacidade entre as zonas de disponibilidade e o respeito às estratégias de alocação em vez de exceder a capacidade desejada.

  • O Amazon EC2 Auto Scaling pode exceder o limite máximo de capacidade para manter o equilíbrio entre as zonas de disponibilidade, usando suas estratégias de alocação preferidas. O limite rígido imposto pelo Amazon EC2 Auto Scaling é a capacidade desejada mais seu maior peso.

Configurar um grupo do Auto Scaling para usar pesos

Você pode configurar um grupo do Auto Scaling para usar pesos, conforme mostrado nos exemplos AWS CLI a seguir. Para obter instruções sobre como usar o console, consulte Criar um grupo misto de instâncias escolhendo manualmente os tipos de instância.

Para configurar um novo grupo do Auto Scaling para usar pesos (AWS CLI)

Use o comando create-auto-scaling-group. Por exemplo, o comando a seguir cria um novo grupo do Auto Scaling e adiciona pesos especificando o seguinte:

  • O percentual do grupo a ser iniciado como instâncias sob demanda (0)

  • A estratégia de alocação para instâncias spot em cada zona de disponibilidade (capacity-optimized)

  • Os tipos de instância a serem executados em ordem de prioridade (m4.16xlarge, m5.24xlarge)

  • Os pesos de instância que correspondem à diferença de tamanho relativo (vCPUs) entre os tipos de instância (16, 24)

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

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

O arquivo config.json contém o conteúdo a seguir.

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "m4.16xlarge", "WeightedCapacity": "16" }, { "InstanceType": "m5.24xlarge", "WeightedCapacity": "24" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 160, "MaxSize": 720, "DesiredCapacity": 480, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags": [] }
Para configurar um grupo do Auto Scaling existente para usar pesos (AWS CLI)

Use o comando update-auto-scaling-group. Por exemplo, o comando a seguir adiciona pesos a tipos de instância em um grupo do Auto Scaling existente especificando o seguinte:

  • Os tipos de instância a serem executados em ordem de prioridade (c5.18xlarge, c5.24xlarge, c5.2xlarge, c5.4xlarge)

  • Os pesos de instância que correspondem à diferença de tamanho relativo (vCPUs) entre os tipos de instância (18, 24, 2, 4)

  • A nova capacidade desejada aumentada, que é maior do que o maior peso

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

O arquivo config.json contém o conteúdo a seguir.

{ "AutoScalingGroupName": "my-existing-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "Overrides": [ { "InstanceType": "c5.18xlarge", "WeightedCapacity": "18" }, { "InstanceType": "c5.24xlarge", "WeightedCapacity": "24" }, { "InstanceType": "c5.2xlarge", "WeightedCapacity": "2" }, { "InstanceType": "c5.4xlarge", "WeightedCapacity": "4" } ] } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 100 }
Para verificar os pesos usando a linha de comando

Use um dos seguintes comandos:

Exemplo de preço spot por unidade hora

A tabela a seguir compara o preço por hora das instâncias spot em diferentes zonas de disponibilidade no Leste dos EUA (Norte da Virgínia) com o preço das instâncias sob demanda na mesma região. Os preços mostrados são preços de exemplo e não os preços atuais. Estes são seus custos por hora de instância.

Exemplo: preços spot por hora de instância
Tipo de instância us-east-1a us-east-1b us-east-1c Definição de preço sob demanda
c5.2xlarge 0,180 USD 0,191 USD 0,170 USD 0,34 USD
c5.4xlarge 0,341 USD 0,361 USD 0,318 USD 0,68 USD
c5.12xlarge 0,779 USD 0,777 USD 0,777 USD 2,04 USD
c5.18xlarge 1,207 USD 1,475 USD 1,357 USD 3,06 USD
c5.24xlarge 1,555 USD 1,555 USD 1,555 USD 4,08 USD

Com os pesos de instâncias, você pode avaliar seus custos com base no que você usa por unidade de hora. Você pode determinar o preço por hora dividindo seu preço para um tipo de instância pelo número de unidades que ele representa. Para instâncias sob demanda, o preço por hora ao implantar um tipo de instância é igual ao que é ao implantar um tamanho diferente do mesmo tipo de instância. Por outro lado, o preço spot por hora varia por grupo spot.

O exemplo a seguir mostra como o cálculo do preço spot por unidade de hora funciona com pesos de instância. Para facilitar o cálculo, digamos que você queira iniciar instâncias spot somente em us-east-1a. O preço unitário por hora está capturado na tabela a seguir.

Exemplo: preço spot por unidade hora de exemplo
Tipo de instância us-east-1a Peso da instância Preço por hora
c5.2xlarge 0,180 USD 2 0,090 USD
c5.4xlarge 0,341 USD 4 0,085 USD
c5.12xlarge 0,779 USD 12 0,065 USD
c5.18xlarge 1,207 USD 18 0,067 USD
c5.24xlarge 1,555 USD 24 0,065 USD