Tutorial: Configure la flota de EC2 para lanzar instancias en varios tipos de reserva de capacidad mediante un grupo de recursos de reserva de capacidad
En este tutorial se explican los pasos para configurar una flota de EC2 que lance instancias en varios tipos de reserva de capacidad, como reservas de capacidad bajo demanda (ODCR), bloques de capacidad para machine learning y reservas de capacidad interrumpibles, mediante un único grupo de recursos de reserva de capacidad.
Aprenderá a crear un grupo de recursos de reserva de capacidad que contenga diferentes tipos de reserva de capacidad, a configurar la flota de EC2 para que priorice estos tipos en un orden específico y, de manera opcional, a recurrir a la capacidad bajo demanda cuando la capacidad reservada no sea suficiente para alcanzar el objetivo.
Consideraciones
-
Cuando se utiliza
ReservedCapacityOptions, solo se admiten solicitudes de flota de EC2 de tipoinstant. -
Debe especificar explícitamente en la lista
ReservationTypeslos tipos de reserva de capacidad que se utilizarán como destino. La flota de EC2 solo lanza instancias en los tipos de reserva de capacidad que especifique. -
ReservedCapacityOptionses mutuamente excluyente conOnDemandOptions.CapacityReservationOptions. No puede utilizar ambos en una misma solicitud de flota de EC2.
En este tutorial se presupone que ya dispone de las siguientes reservas de capacidad en la cuenta:
-
Una ODCR (
cr-1234567890abcdef1) parap5.48xlargeenus-east-1a -
Una ODCR (
cr-abcdef1234567890a) parap4d.48xlargeenus-east-1b -
Un bloque de capacidad (
cr-0123456789abcdef0) parap5.48xlargeenus-east-1a -
Una reserva de capacidad interrumpible (
cr-9876543210fedcba9) parap5.48xlargeenus-east-1a, que otra cuenta de la organización ha compartido con usted
Verificar permisos
Antes de crear una flota de EC2, compruebe que tiene un rol de IAM con los permisos necesarios. Para obtener más información, consulte Requisitos previos de flota de EC2.
Paso 1: Cree un grupo de recursos de reserva de capacidad
Cree un grupo de recursos de reserva de capacidad que contenga las reservas de capacidad que utiliza como destino la flota de EC2. Configure el grupo para que acepte reservas de capacidad de cualquier tipo de instancia y de cualquier tipo de reserva de capacidad. Esto permite que el grupo contenga una combinación de tipos de reserva de capacidad. Para obtener instrucciones paso a paso, consulte Grupos de reserva de capacidad.
nota
Cuando cree el grupo, no especifique los parámetros instance-type ni reservation-type en la configuración AWS::EC2::CapacityReservationPool. Si omite estos parámetros, el grupo puede aceptar reservas de capacidad de cualquier tipo de instancia y de cualquier tipo de reserva de capacidad.
Paso 2: Agregue reservas de capacidad al grupo
Agregue las reservas de capacidad al grupo de recursos de reserva de capacidad. Puede agregar cualquier combinación de ODCR, bloques de capacidad para machine learning, reservas de capacidad interrumpibles y bloques de capacidad de UltraServer. Para este tutorial, agregue las cuatro reservas de capacidad que se indican al principio. Para obtener instrucciones paso a paso, consulte Grupos de reserva de capacidad.
Paso 3: crear una plantilla de lanzamiento
Utilice el comando create-launch-template para crear una plantilla de lanzamiento que tenga como destino el grupo de recursos de reserva de capacidad. Cuando utiliza ReservedCapacityOptions en la configuración de la flota de EC2, no es necesario establecer MarketType en la plantilla de lanzamiento. La flota de EC2 lo establece automáticamente para cada tipo de reserva de capacidad.
aws ec2 create-launch-template \ --launch-template-namemy-cr-resource-group-template\ --launch-template-data \ '{"ImageId": "ami-0123456789example", "CapacityReservationSpecification": {"CapacityReservationTarget": {"CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-resource-group"} } }'
Paso 4: crear una flota de EC2
Cree una flota de EC2 que tenga como destino varios tipos de reserva de capacidad del grupo de recursos de reserva de capacidad. La configuración principal es ReservedCapacityOptions, que especifica lo siguiente:
-
ReservationTypes: una lista ordenada de los tipos de reserva de capacidad que se utilizarán como destino. La flota de EC2 procesa los tipos en este orden. Los valores válidos sonon-demand-capacity-reservation,capacity-blockyinterruptible-capacity-reservation. -
AllocationStrategy: cómo se priorizan los tipos de instancia dentro de cada tipo de reserva de capacidad. Establezca este valor enprioritizedpara seguir el orden de reemplazo de los tipos de instancia. -
ReservedCapacityFallbackOptions: establezcaMarketTypesen["on-demand"]para lanzar instancias bajo demanda cuando la capacidad reservada no sea suficiente. Si no especifica opciones alternativas, la flota de EC2 no recurre a ningún otro tipo de mercado una vez que se agotan los tipos de reserva de capacidad especificados.
Cree un archivo llamado config.json con el siguiente contenido. En el ejemplo siguiente, reemplace los identificadores de recursos por sus propios identificadores de recursos.
{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-cr-resource-group-template", "Version": "1" }, "Overrides": [ { "InstanceType": "p5.48xlarge", "AvailabilityZone": "us-east-1a", "Priority": 1 }, { "InstanceType": "p4d.48xlarge", "AvailabilityZone": "us-east-1b", "Priority": 2 } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity":100, "DefaultTargetCapacityType": "reserved-capacity" }, "ReservedCapacityOptions": { "ReservationTypes": ["on-demand-capacity-reservation", "capacity-block", "interruptible-capacity-reservation"], "ReservedCapacityFallbackOptions": { "MarketTypes": ["on-demand"] }, "AllocationStrategy": "prioritized" }, "Type": "instant" }
Utilice el comando create-fleet para lanzar la flota:
aws ec2 create-fleet --cli-input-json file://config.json
Para obtener más información, consulte Crear una flota de EC2.
Cómo resuelve la flota de EC2 las reservas de capacidad
Según la configuración anterior, la flota de EC2 intenta lanzar las instancias en el siguiente orden:
-
ODCR: primero las reservas de
p5.48xlarge(el tipo de instancia con mayor prioridad) y, a continuación, las reservas dep4d.48xlarge. Dentro de cada tipo de instancia, si existen varias ODCR, se selecciona una al azar. -
Bloques de capacidad: si no queda capacidad disponible en ninguna de las ODCR, la flota de EC2 tiene como destino los bloques de capacidad, primero las reservas
p5.48xlargey, a continuación, lasp4d.48xlarge, con selección aleatoria dentro de cada tipo de instancia. -
Reservas de capacidad interrumpibles: si no queda capacidad disponible en ninguno de los bloques de capacidad, la flota de EC2 tiene como destino las reservas de capacidad interrumpibles, primero las reservas
p5.48xlargey, a continuación, lasp4d.48xlarge, con selección aleatoria dentro de cada tipo de instancia. -
Recurso alternativo bajo demanda: si la capacidad reservada no es suficiente para alcanzar el objetivo de 100 instancias, la capacidad restante se lanza como instancias bajo demanda. La flota de EC2 lanza estas instancias bajo demanda de acuerdo con la estrategia de asignación que especifique en
OnDemandOptions.
nota
La flota de EC2 determina primero el tipo de reserva de capacidad y, a continuación, el tipo de instancia dentro de cada tipo de reserva de capacidad. Cada tipo de reserva de capacidad se agota por completo antes de que la flota de EC2 pase al siguiente tipo de la lista ordenada.
Paso 5 (opcional): Verifique las propiedades de las instancias
Utilice el comando describe-instances para verificar qué tipo de reserva de capacidad utilizó cada instancia. Las instancias lanzadas por la flota muestran las siguientes propiedades.
| Propiedad | Valor de reserva de capacidad bajo demanda | Valor de bloque de capacidad | Valor de reserva de capacidad interrumpible | Valor bajo demanda |
|---|---|---|---|---|
instance-lifecycle |
null |
capacity-block |
interruptible-capacity-reservation |
null |
capacity-reservation-id |
ID de la reserva de capacidad utilizada | ID de la reserva de capacidad utilizada | ID de la reserva de capacidad utilizada | No presente |
capacity-reservation-specification |
ARN del grupo | ARN del grupo | ARN del grupo | No presente |
Puede filtrar las instancias por grupo de recursos de reserva de capacidad mediante el siguiente comando:
aws ec2 describe-instances \ --filters "Name=capacity-reservation-specification.capacity-reservation-target.capacity-reservation-resource-group-arn,Values=arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-resource-group"
Limpieza
Para dejar de incurrir en cargos, termine las instancias cuando dejen de ser necesarias. Tenga en cuenta que las instancias lanzadas en bloques de capacidad se terminan automáticamente cuando finaliza la reserva del bloque de capacidad. Las instancias lanzadas en reservas de capacidad interrumpibles se terminan automáticamente si el propietario de la capacidad recupera la capacidad.