Tutorial: Configuración de la flota de EC2 para lanzar instancias bajo demanda con reservas de capacidad específicas - Amazon Elastic Compute Cloud

Tutorial: Configuración de la flota de EC2 para lanzar instancias bajo demanda con reservas de capacidad específicas

En este tutorial se explican todos los pasos que debe realizar para que su flota de EC2 lance instancias bajo demanda en reservas de capacidad targeted.

Aprenderá a configurar una flota para utilizar primero las reservas de capacidad bajo demanda targeted al iniciar instancias bajo demanda. También aprenderá a configurar la flota para que, cuando la capacidad total de destino bajo demanda supere el número de reservas de capacidad sin utilizar disponibles, la flota utilice la estrategia de asignación especificada a fin de seleccionar los grupos de instancias en los que iniciará la capacidad de destino restante.

Configuración de la flota de EC2

En este tutorial, la flota está configurada de la siguiente manera:

  • Capacidad de destino: 10 instancias bajo demanda

  • Total de reservas de capacidad targeted sin utilizar: 6 (menos que la capacidad de destino bajo demanda de 10 instancias bajo demanda de la flota)

  • Número de grupos de reservas de capacidad: 2 (us-east-1a y us-east-1b)

  • Número de reservas de capacidad por grupo: 3

  • Estrategia de asignación bajo demanda: lowest-price (cuando el número de reservas de capacidad sin utilizar es menor que la capacidad de destino bajo demanda, la flota determina los grupos en los que iniciará la capacidad bajo demanda restante en función de la estrategia de asignación bajo demanda).

    Tenga en cuenta que también puede utilizar la estrategia de asignación prioritized en lugar de la lowest-price.

Paso 1: crear reservas de capacidad

Utilice el comando create-capacity-reservation a fin de crear las reservas de capacidad, tres para us-east-1a y otras tres para us-east-1b. Excepto por la zona de disponibilidad, los demás atributos de las reservas de capacidad son idénticos.

3 reservas de capacidad en 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

Ejemplo del ID de reserva de capacidad resultante

cr-1234567890abcdef1

3 reservas de capacidad en 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

Ejemplo del ID de reserva de capacidad resultante

cr-54321abcdef567890

Paso 2: crear un grupo de recursos de reserva de capacidad

Utilice el servicio resource-groups y el comando create-group para crear un grupo de recursos de reserva de capacidad. En este ejemplo, el grupo de recursos se llama my-cr-group. Para obtener información sobre por qué debe crear un grupo de recursos, consulte Utilice las reservas de capacidad para reservar capacidad bajo demanda en la flota de 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"]}]}'

Paso 3: agregar las reservas de capacidad al grupo de recursos de reserva de capacidad

Utilice el servicio resource-groups y el comando group-resources para agregar las reservas de capacidad que creó en el paso 1 al grupo de recursos de reserva de capacidad. Tenga en cuenta que debe hacer referencia a las reservas de capacidad bajo demanda por sus ARN.

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

Ejemplo de resultado

{ "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) Paso 4: ver las reservas de capacidad en el grupo de recursos

Utilice el servicio resource-groups y el comando list-group-resources para describir opcionalmente el grupo de recursos y ver sus reservas de capacidad.

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

Ejemplo de resultado

{ "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" } ] }

Paso 5: crear una plantilla de inicialización que especifique que la reserva de capacidad se dirige a un grupo de recursos específico

Utilice el comando create-launch-template para crear una plantilla de inicialización en la que se especificarán las reservas de capacidad que se utilizarán. En este ejemplo, la flota utilizará reservas de capacidad targeted, que se han agregado a un grupo de recursos. Por lo tanto, los datos de la plantilla de inicialización especifican que la reserva de capacidad se dirige a un grupo de recursos específico. En este ejemplo, la plantilla de inicialización se llama 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) Paso 6: describir la plantilla de inicialización

Utilice el comando describe-launch-template-versions para describir opcionalmente la plantilla de inicialización y ver su configuración.

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

Ejemplo de resultado

{ "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" } } } } ] }

Paso 7: crear una flota de EC2

Cree una flota de EC2 que especifique la información de configuración de las instancias que iniciará. La siguiente configuración de flota de EC2 solo muestra las configuraciones pertinentes para este ejemplo. La plantilla de inicialización my-launch-template es la plantilla de inicialización que creó en el paso 5. Hay dos grupos de instancias, cada uno con el mismo tipo de instancias (c5.xlarge), pero con diferentes zonas de disponibilidad (us-east-1a y us-east-1b). El precio de los grupos de instancias es el mismo porque los precios se definen para la región, no por zona de disponibilidad. La capacidad total de destino es de 10 y el tipo de capacidad de destino predeterminado es on-demand. La estrategia de asignación bajo demanda es lowest-price. La estrategia de uso para las reservas de capacidad es use-capacity-reservations-first.

nota

El tipo de flota debe ser instant. Otros tipos de flotas no admiten 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" }

Después de crear la flota instant con la configuración anterior, se inician las siguientes 10 instancias para cumplir con la capacidad de destino:

  • Las reservas de capacidad se utilizan en primer lugar para iniciar 6 instancias bajo demanda de la siguiente manera:

    • 3 instancias bajo demanda se lanzan en las 3 reservas de capacidad targeted c5.xlarge en us-east-1a

    • 3 instancias bajo demanda se lanzan en las 3 reservas de capacidad targeted c5.xlarge en us-east-1b

  • Para alcanzar la capacidad de destino, se inician 4 instancias bajo demanda adicionales en la capacidad bajo demanda normal de acuerdo con la estrategia de asignación bajo demanda, que es lowest-price en este ejemplo. Sin embargo, dado que los grupos tienen el mismo precio (porque el precio es por región y no por zona de disponibilidad), la flota inicia las 4 instancias bajo demanda restantes en cualquiera de los grupos.

(Opcional) Paso 8: ver el número de reservas de capacidad sin utilizar restantes

Después de iniciar la flota, opcionalmente puede ejecutar describe-capacity-reservations para ver cuántas reservas de capacidad sin utilizar quedan. En este ejemplo, debería ver la siguiente respuesta, que muestra que se utilizaron todas las reservas de capacidad de todos los grupos.

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