Reserve capacidad en zonas de disponibilidad específicas con reservas de capacidad - Amazon EC2 Auto Scaling

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Reserve capacidad en zonas de disponibilidad específicas con reservas de capacidad

Las reservas de capacidad bajo demanda de Amazon EC2 le permiten reservar capacidad de cómputo para zonas de disponibilidad específicas. Para comenzar a utilizar reservas de capacidad, cree la reserva de capacidad en una zona de disponibilidad específica. A continuación, puede iniciar instancias en la capacidad reservada, ver la utilización de su capacidad en tiempo real y aumentar o disminuir su capacidad según sea necesario.

Las reservas de capacidad se establecen en open o targeted. Si la reserva de capacidad está open, todas las instancias nuevas y existentes que tengan atributos coincidentes se ejecutarán automáticamente en la capacidad de la reserva de capacidad. Si la Reserva de capacidad tiene el estado targeted, las instancias deben dirigirse específicamente a ella para ejecutarse en la capacidad reservada.

Este tema muestra cómo crear un grupo de escalado automático que lanza instancias bajo demanda en reservas de capacidad targeted. Esto le da más control sobre cuándo usar reservas de capacidad específicas.

A continuación, indicamos los pasos básicos:

  1. Cree reservas de capacidad en varias zonas de disponibilidad que tengan el mismo tipo de instancia, plataforma y número de instancias.

  2. Reservas de capacidad grupal mediante AWS Resource Groups.

  3. Cree un grupo de escalado automático con una plantilla de lanzamiento dirigida al grupo de recursos, utilizando las mismas zonas de disponibilidad que las reservas de capacidad.

Paso 1: crear las reservas de capacidad

El primer paso consiste en crear una reserva de capacidad en cada zona de disponibilidad en la que se vaya a implementar el grupo de escalado automático.

nota

Solo puede crear reservas de targeted la primera vez que cree las reservas de capacidad.

Console
Creación de sus reservas de capacidad
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. Elija Reservas de capacidad y, a continuación, elija Create Reserva de capacidad (Crear Reserva de capacidad).

  3. En la página Crear una reserva de capacidad, preste atención a los siguientes ajustes en la sección Detalles de la instancia. El tipo de instancia, la plataforma y la zona de disponibilidad de las instancias que lance deben coincidir con el tipo de instancia, plataforma y zona de disponibilidad que especifique aquí o la Reserva de capacidad no se aplica.

    1. Para Tipo de instancia, elija el tipo de instancia que lanzar en la capacidad reservada.

    2. En Plataforma, elija el sistema operativo para sus instancias.

    3. En Zona de disponibilidad, elija la primera zona de disponibilidad en la que desee reservar capacidad.

    4. En Capacidad total, elija la cantidad de instancias que necesita. Calcule el número total de instancias que necesita para su grupo de escalado automático dividido por el número de zonas de disponibilidad que planea usar.

  4. En Detalles de reserva de capacidad, para Finaliza la reserva de capacidad, elija una de las siguientes opciones:

    • A una hora específica: cancele la reserva de capacidad automáticamente en la fecha y hora especificadas.

    • Manualmente: reserve la capacidad hasta que la cancele explícitamente.

  5. Para Requisito de instancias, elija Específicas: solo las instancias específicas de la reserva de capacidad.

  6. (Opcional) En Etiquetas, especifique las etiquetas que desee asociar a la reserva de capacidad.

  7. Seleccione Crear.

  8. Anote el ID de la reserva de capacidad recién creada. Lo necesita para configurar el grupo de reserva de capacidad.

Repita este procedimiento para cada zona de disponibilidad que desee habilitar para su grupo de escalado automático y cambie solo el valor de la opción Zona de disponibilidad.

AWS CLI
Creación de sus reservas de capacidad

Utilice el siguiente create-capacity-reservationcomando para crear las reservas de capacidad. Sustituya los valores de muestra de --availability-zone, --instance-type, --instance-platform y --instance-count.

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

{ "CapacityReservation": { "CapacityReservationId": "cr-1234567890abcdef1", "OwnerId": "123456789012", "CapacityReservationArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", "InstanceType": "c5.xlarge", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "Tenancy": "default", "TotalInstanceCount": 3, "AvailableInstanceCount": 3, "EbsOptimized": false, "EphemeralStorage": false, "State": "active", "StartDate": "2023-07-26T21:36:14+00:00", "EndDateType": "unlimited", "InstanceMatchCriteria": "targeted", "CreateDate": "2023-07-26T21:36:14+00:00" } }

Anote el ID de la reserva de capacidad recién creada. Lo necesita para configurar el grupo de reserva de capacidad.

Repita este procedimiento para cada zona de disponibilidad que desee habilitar para su grupo de escalado automático y cambie solo el valor de la opción --availability-zone.

Paso 2: crear un grupo de reservas de capacidad

Cuando termine de crear las reservas de capacidad, podrá agruparlas mediante el servicio AWS Resource Groups. AWS Resource Groups admite varios tipos diferentes de grupos para distintos usos. Amazon EC2 utiliza un grupo de propósito especial, conocido como grupo de recursos vinculado a servicios, para dirigirse a un grupo de reservas de capacidad. Para interactuar con este grupo de recursos vinculado a un servicio, puede utilizar la AWS CLI o un SDK, pero no la consola. Para obtener más información sobre los grupos de recursos vinculados a servicios, consulte Configuraciones de servicios para grupos de recursos en la Guía del usuario de AWS Resource Groups.

Para crear un grupo de reserva de capacidad mediante el AWS CLI

Utilice el comando create-group para crear un grupo de recursos que solo pueda contener reservas de capacidad. En este ejemplo, el grupo de recursos se llama my-cr-group.

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

A continuación, se muestra un ejemplo de respuesta.

{ "Group": { "GroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group", "Name": "my-cr-group" }, "GroupConfiguration": { "Configuration": [ { "Type": "AWS::EC2::CapacityReservationPool" }, { "Type": "AWS::ResourceGroups::Generic", "Parameters": [ { "Name": "allowed-resource-types", "Values": [ "AWS::EC2::CapacityReservation" ] } ] } ], "Status": "UPDATE_COMPLETE" } }

Anote el ARN del nuevo grupo de recursos. Lo necesita para configurar la plantilla de lanzamiento para su grupo de escalado automático.

Asociación de sus reservas de capacidad al grupo recién creado mediante la AWS CLI

Utilice el siguiente comando group-resources para asociar las reservas de capacidad al grupo de reservas de capacidad recién creado. Para la opción --resource-arns, especifique las reservas de capacidad mediante sus ARN. Construya los ARN utilizando la región correspondiente, el ID de su cuenta y los ID de reserva que anotó anteriormente. En este ejemplo, las reservas con ID cr-1234567890abcdef1 y cr-54321abcdef567890 se agruparán en el grupo denominado my-cr-group.

aws resource-groups group-resources \ --group my-cr-group \ --resource-arns \ arn:aws:ec2:region:account-id:capacity-reservation/cr-1234567890abcdef1 \ arn:aws:ec2:region:account-id:capacity-reservation/cr-54321abcdef567890

A continuación, se muestra un ejemplo de respuesta.

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

Para obtener información sobre cómo modificar o eliminar el grupo de recursos, consulte la Referencia de la API de AWS Resource Groups.

Paso 3: crear una plantilla de lanzamiento

Console
Para crear una plantilla de lanzamiento
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, en Instances, seleccione Launch Templates.

  3. Elija Crear plantilla de inicialización. Escriba un nombre y una descripción para la versión inicial de la plantilla de lanzamiento.

  4. En Auto Scaling guidance (Guía de Auto Scaling), seleccione la casilla de verificación.

  5. Cree la plantilla de lanzamiento. Elija una AMI y el tipo de instancia que coincida con las reservas de capacidad que está pensando usar y, opcionalmente, un par de claves, uno o varios grupos de seguridad y cualquier volumen de EBS o de almacén de instancias para sus instancias.

  6. Expanda Detalles avanzados y realice una de las siguientes opciones:

    1. En Reserva de capacidad, elija Destino por grupo.

    2. En Reserva de capacidad: destino por grupo, elija el grupo de reservas de capacidad que creó en la sección anterior y, a continuación, elija Guardar.

  7. Elija Crear plantilla de inicialización.

  8. En la página de confirmación, seleccione Create Auto Scaling group (Crear grupo de Auto Scaling.

AWS CLI
Para crear una plantilla de lanzamiento

Utilice el siguiente create-launch-templatecomando para crear una plantilla de lanzamiento que especifique que la reserva de capacidad se dirige a un grupo de recursos específico. Sustituya el valor de muestra por --launch-template-name. Sustituya c5.xlarge por el tipo de instancia que utilizó en la reserva de capacidad y ami-0123456789EXAMPLE por el ID de la AMI que desea usar. Sustituya arn:aws:resource-groups:region:account-id:group/my-cr-group por el ARN del grupo de recursos que creó al principio de la sección anterior.

aws ec2 create-launch-template \ --launch-template-name my-launch-template \ --launch-template-data \ '{"InstanceType": "c5.xlarge", "ImageId": "ami-0123456789EXAMPLE", "CapacityReservationSpecification": {"CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:region:account-id:group/my-cr-group" } } }'

A continuación, se muestra un ejemplo de respuesta.

{ "LaunchTemplate": { "LaunchTemplateId": "lt-0dd77bd41dEXAMPLE", "LaunchTemplateName": "my-launch-template", "CreateTime": "2023-07-26T21:42:48+00:00", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

Paso 4: crear un grupo de escalado automático

Console

Cree su grupo de escalado automático como lo hace habitualmente, pero cuando elija las subredes de VPC, elija una subred de cada zona de disponibilidad que coincida con las reservas de capacidad targeted que creó. Luego, cuando su grupo de escalado automático lance una instancia bajo demanda en una de estas zonas de disponibilidad, la instancia se ejecutará en la capacidad reservada para esa zona de disponibilidad. Si el grupo de recursos se queda sin reservas de capacidad antes de que se agote la capacidad deseada, lanzamos todo lo que supere la capacidad reservada como capacidad bajo demanda normal.

Creación de un grupo de escalado automático simple
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/ y elija Auto Scaling Groups (Grupos de escalado automático) en el panel de navegación.

  2. En la barra de navegación de la parte superior de la pantalla, elija la misma Región de AWS que utilizó al crear la plantilla de lanzamiento.

  3. Elija Create an Auto Scaling group (Crear un grupo de escalado automático).

  4. En la página Choose launch template or configuration (Elegir una plantilla de lanzamiento o configuración), ingrese un nombre para el grupo de escalado automático.

  5. En launch template (Plantilla de lanzamiento), elija una plantilla de lanzamiento existente.

  6. Para Launch template version (Versión de plantilla de lanzamiento), decida si el grupo de escalado automático utiliza el valor predeterminado, la última versión o una versión específica de la plantilla de lanzamiento para escalado horizontal.

  7. En la página Elegir las opciones de lanzamiento de instancias, omita la sección Requisitos del tipo de instancia para usar el tipo de instancia EC2 que se especificó en la plantilla de lanzamiento.

  8. En Network (Red), para la opción VPC, elija una VPC. El grupo de escalado automático debe crearse en la misma VPC que el grupo de seguridad especificado en la plantilla de lanzamiento. Si no especificó un grupo de seguridad en su plantilla de lanzamiento, puede elegir cualquier VPC que tenga subredes en las mismas zonas de disponibilidad que sus reservas de capacidad.

  9. En , Zonas de disponibilidad y subredes, elija las subredes de cada zona de disponibilidad que desee incluir, en función de las zonas de disponibilidad en las que se encuentren sus reservas de capacidad.

  10. Seleccione Next (Siguiente) dos veces.

  11. En la página Configurar políticas de escalado y tamaño de grupo, en Capacidad deseada, introduzca el número inicial de instancias que se van a lanzar. Al cambiar este número a un valor fuera de los límites de capacidad mínima o máxima, debe actualizar los valores de Minimum capacity (Capacidad mínima) o Maximum capacity (Capacidad máxima). Para obtener más información, consulte Establecimiento de límites de escalado para el grupo de escalado automático.

  12. Elija Skip to review (Omitir para revisar).

  13. En la página Review (Revisar), elija Create Auto Scaling group (Crear grupo de escalado automático).

AWS CLI
Creación de un grupo de escalado automático simple

Utilice el siguiente create-auto-scaling-groupcomando y especifique el nombre y la versión de la plantilla de lanzamiento como valor de la --launch-template opción. Sustituya los valores de muestra de --auto-scaling-group-name, --min-size, --max-size y --vpc-zone-identifier.

Para la opción --availability-zones, especifique las zonas de disponibilidad para las que creó las reservas de capacidad. Por ejemplo, si sus reservas de capacidad especifican las zonas de disponibilidad us-east-1a y us-east-1b, debe crear su grupo de escalado automático en las mismas zonas. Luego, cuando su grupo de escalado automático lance una instancia bajo demanda en una de estas zonas de disponibilidad, la instancia se ejecutará en la capacidad reservada para esa zona de disponibilidad. Si el grupo de recursos se queda sin reservas de capacidad antes de que se agote la capacidad deseada, lanzamos todo lo que supere la capacidad reservada como capacidad bajo demanda normal.

aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-launch-template,Version='1' \ --min-size 6 \ --max-size 6 \ --vpc-zone-identifier "subnet-5f46ec3b,subnet-0ecac448" \ --availability-zones us-east-1a us-east-1b

Para ver un ejemplo de implementación, consulta la AWS CloudFormation plantilla en el siguiente GitHub repositorio de AWS ejemplos: https://github.com/aws-samples/ aws-auto-scaling-backed - by-on-demand-capacity -reservations/.

Los siguientes temas relacionados pueden resultarle útiles a medida que aprenda sobre las reservas de capacidad.