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
eus-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çãolowest-price
.
Para iniciar as Instâncias sob demanda em Reservas de Capacidade targeted, você deve executar uma série de etapas, da seguinte forma:
- Etapa 1: Criar Reservas de Capacidade
- Etapa 2: Criar um grupo de recursos de Reservas de capacidade
- Etapa 3: Adicionar as Reservas de Capacidade ao grupo de recursos Reservas de Capacidade
- (Opcional) Etapa 4: Exibir Reservas de Capacidade no grupo de recursos
- Etapa 5: Criar um modelo de inicialização que especifique que a Reserva de Capacidade se destina a um grupo de recursos específico
- (Opcional) Etapa 6: Descrever o modelo de inicialização
- Etapa 7: Criar uma Frota EC2
- (Opcional) Etapa 8: Exibir o número de Reservas de Capacidade não utilizadas restantes
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 Capacidadetargeted
nous-east-1a
-
3 Instâncias sob demanda são iniciadas nas 3
c5.xlarge
Reservas de Capacidadetargeted
nous-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
}