Tutorial: configurar o EC2 Fleet para executar instâncias sob demanda usando reservas de capacidade direcionadas - Amazon Elastic Compute Cloud

Tutorial: configurar o EC2 Fleet para executar instâncias sob demanda usando reservas de capacidade direcionadas

Este tutorial orienta você por todas as etapas que você deve executar para que sua Frota do EC2 inicie Instâncias sob demanda nas Reservas de Capacidade targeted.

Você aprenderá a configurar uma frota para usar as Reservas de Capacidade sob demanda targeted primeiro ao iniciar Instâncias sob demanda. Você também aprenderá a configurar a frota para que, quando a capacidade total de destino sob demanda exceder o número de Reservas de Capacidade não utilizadas disponíveis, a frota use a estratégia de alocação especificada para selecionar os grupos de instâncias nos quais iniciar a capacidade de destino restante.

Configuração da Frota do EC2

Nesse tutorial, a frota é configurada da seguinte forma:

  • Capacidade de destino: 10 Instâncias sob demanda

  • Total de Reservas de Capacidade targeted não utilizadas: 6 (menor que a capacidade de destino sob demanda da frota de 10 Instâncias sob demanda)

  • Número de grupos de Reservas de capacidade: 2 (us-east-1a e us-east-1b)

  • Número de Reservas de Capacidade por grupo: 3

  • Estratégia de alocação sob demanda: lowest-price (Quando o número de Reservas de Capacidade não utilizadas for menor que a capacidade de destino sob demanda, a frota determina os grupos nos quais iniciar a capacidade sob demanda restante com base na estratégia de alocação sob demanda.)

    Observe que você também pode usar a estratégia de alocação prioritized em vez da estratégia de alocação lowest-price.

Etapa 1: Criar Reservas de Capacidade

Use o comando Create-capacity-reservation para criar as Reservas de Capacidade, três para us-east-1a e outras três para us-east-1b. Exceto para a Zona de disponibilidade, os outros atributos das Reservas de Capacidade são idênticos.

3 Reservas de Capacidade no us-east-1a

aws ec2 create-capacity-reservation \ --availability-zone us-east-1a \ --instance-type c5.xlarge \ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

Exemplo de ID de reserva de capacidade resultante

cr-1234567890abcdef1

3 Reservas de Capacidade no us-east-1b

aws ec2 create-capacity-reservation \ --availability-zone us-east-1b \ --instance-type c5.xlarge \ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

Exemplo de ID de reserva de capacidade resultante

cr-54321abcdef567890

Etapa 2: Criar um grupo de recursos de Reservas de capacidade

Use o serviço resource-groups e o comando create-group para criar um grupo de recursos de Reservas de capacidade. Neste exemplo, o grupo de recursos é chamado de my-cr-group. Para obter informações sobre por que você deve criar um grupo de recursos, consulte Use reservas de capacidade para reservar capacidade sob demanda na frota do EC2.

aws resource-groups create-group \ --name my-cr-group \ --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'

Etapa 3: Adicionar as Reservas de Capacidade ao grupo de recursos Reservas de Capacidade

Use o serviço resource-groups e o comando group-resources para adicionar as Reservas de Capacidade que você criou na Etapa 1 para o grupo de recursos Reservas de Capacidade. Observe que você deve fazer referência às Reservas de Capacidade sob demanda por seus ARNs.

aws resource-groups group-resources \ --group my-cr-group \ --resource-arns \ arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1 \ arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890

Exemplo de saída

{ "Failed": [], "Succeeded": [ "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" ] }

(Opcional) Etapa 4: Exibir Reservas de Capacidade no grupo de recursos

Use o serviço resource-groups e o comando list-group-resources para descrever opcionalmente o grupo de recursos para visualizar suas Reservas de Capacidade.

aws resource-groups list-group-resources --group my-cr-group

Exemplo de saída

{ "ResourceIdentifiers": [ { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1" }, { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" } ] }

Etapa 5: Criar um modelo de inicialização que especifique que a Reserva de Capacidade se destina a um grupo de recursos específico

Use o comando create-launch-template para criar um modelo de execução no qual especifique as Reservas de Capacidade a serem usadas. Neste exemplo, a frota usará Reservas de Capacidade targeted, que foram adicionadas a um grupo de recursos. Portanto, os dados do modelo de inicialização especificam que a Reserva de Capacidade se destina a um grupo de recursos específico. Neste exemplo, o modelo de inicialização é chamado de my-launch-template.

aws ec2 create-launch-template \ --launch-template-name my-launch-template \ --launch-template-data \ '{"ImageId": "ami-0123456789example", "CapacityReservationSpecification": {"CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" } } }'

(Opcional) Etapa 6: Descrever o modelo de inicialização

Use o comando describe-launch-template-versions para descrever opcionalmente o modelo de execução para visualizar a configuração.

aws ec2 describe-launch-template-versions --launch-template-name my-launch-template

Exemplo de saída

{ "LaunchTemplateVersions": [ { "LaunchTemplateId": "lt-01234567890example", "LaunchTemplateName": "my-launch-template", "VersionNumber": 1, "CreateTime": "2021-01-19T20:50:19.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Admin", "DefaultVersion": true, "LaunchTemplateData": { "ImageId": "ami-0947d2ba12ee1ff75", "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" } } } } ] }

Etapa 7: Criar uma Frota EC2

Crie uma EC2 Fleet que especifique as informações de configuração para as instâncias que serão iniciadas. A configuração de frota EC2 a seguir mostra somente as configurações pertinentes a esse exemplo. O modelo de inicialização my-launch-template é o modelo de inicialização criado na Etapa 5. Há dois grupos de instâncias, cada um com o mesmo tipo de instância (c5.xlarge), mas com diferentes zonas de disponibilidade (us-east-1a e us-east-1b). O preço dos grupos de instâncias é o mesmo porque o preço é definido para a região, não para a Zona de Disponibilidade. A capacidade de destino total é de 10 e o tipo de capacidade de destino padrão é on-demand. A estratégia de alocação sob demanda é lowest-price. A estratégia de uso para Reservas de Capacidade é use-capacity-reservations-first.

nota

O tipo da frota deve ser instant. Outros tipos de frota não são compatíveis com use-capacity-reservations-first.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1a" }, { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1b" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 10, "DefaultTargetCapacityType": "on-demand" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant" }

Depois de criar a frota instant usando a configuração anterior, as 10 instâncias a seguir serão iniciadas para atender à capacidade de destino:

  • As Reservas de Capacidade são usadas primeiro para iniciar 6 Instâncias sob demanda da seguinte maneira:

    • 3 Instâncias sob demanda são iniciadas nas 3 c5.xlarge Reservas de Capacidade targeted no us-east-1a

    • 3 Instâncias sob demanda são iniciadas nas 3 c5.xlarge Reservas de Capacidade targeted no us-east-1b

  • Para atender à capacidade de destino, 4 Instâncias sob demanda adicionais são iniciadas na capacidade sob demanda regular de acordo com a estratégia de alocação sob demanda, que é lowest-price neste exemplo. No entanto, como os grupos têm o mesmo preço (porque o preço é por região e não por zona de disponibilidade), a frota inicia as 4 Instâncias sob demanda restantes em qualquer um dos grupos.

(Opcional) Etapa 8: Exibir o número de Reservas de Capacidade não utilizadas restantes

Depois que a frota for lançada, você poderá, opcionalmente, executar describe-capacity-reservations para ver quantas Reservas de Capacidade não utilizadas restam. Neste exemplo, você deve ver a resposta a seguir, que mostra que todas as Reservas de Capacidade foram usadas em todos os grupos.

{ "CapacityReservationId": "cr-111", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 }