Crear un grupo de Auto Scaling mediante la selección del tipo de instancia basada en atributos - Amazon EC2 Auto Scaling

Crear un grupo de Auto Scaling mediante la selección del tipo de instancia basada en atributos

Cuando crea un grupo de Auto Scaling, debe especificar la información necesaria para configurar las instancias de Amazon EC2, las zonas de disponibilidad y las subredes de VPC para las instancias, la capacidad deseada y los límites de capacidad mínima y máxima.

Como alternativa a la elección manual de los tipos de instancia a la hora de crear un grupo de instancias mixtas, puede especificar un conjunto de atributos de instancia que describan los requisitos de computación. A medida que Amazon EC2 Auto Scaling lanza instancias, todos los tipos de instancia que utiliza el grupo de Auto Scaling deben coincidir con los atributos de instancia requeridos. Esto se conoce como selección del tipo de instancia basada en atributos.

El grupo de Auto Scaling o la plantilla de lanzamiento especifican los atributos de la instancia, incluida la cantidad de memoria y potencia de computación que necesita para las aplicaciones que planea ejecutar en las instancias. Además, el grupo de Auto Scaling o la plantilla de lanzamiento especifican dos límites de protección de precios para las instancias de spot y bajo demanda, que puede personalizar de forma opcional, de modo que pueda evitar que Amazon EC2 Auto Scaling lance tipos de instancia más costosos si no son necesarios.

Este enfoque es ideal para las cargas de trabajo y los marcos que tienen flexibilidad en cuanto a qué tipos de instancia utilizan, tales como contenedores, macrodatos y CI/CD.

A continuación, se describen los beneficios de la selección del tipo de instancia basada en atributos:

  • Amazon EC2 Auto Scaling puede seleccionar entre una amplia gama de tipos de instancia para lanzar instancias de spot. Esto se realiza conforme a la práctica recomendada de spot que consiste en ser flexible en cuanto a los tipos de instancia, lo que brinda al servicio de spot de Amazon EC2 más posibilidades de encontrar y asignar la cantidad necesaria de capacidad de computación.

  • Con tantas opciones disponibles, encontrar los tipos de instancia adecuados para su carga de trabajo puede llevar mucho tiempo. Al especificar los atributos de instancia, puede simplificar la selección del tipo de instancia cuando configura un grupo de instancias mixto.

  • Los grupos de Auto Scaling pueden utilizar tipos de instancias de última generación a medida que se lanzan. Los tipos de instancias de última generación se utilizan de forma automática cuando coinciden con sus requisitos y se ajustan a las estrategias de asignación que elija para su grupo de Auto Scaling.

Puede utilizar la selección del tipo de instancia basada en atributos a través de la AWS Management Console, AWS CLI o los SDK.

Para obtener información sobre cómo configurar la selección del tipo de instancia basada en atributos en una plantilla de lanzamiento, consulte Creación de una plantilla de lanzamiento para un grupo de Auto Scaling. Para obtener información sobre cómo configurar la selección del tipo de instancia basada en atributos mediante la transferencia de parámetros en las llamadas a la API de Amazon EC2 Auto Scaling con un SDK, consulte InstanceRequirements en la Referencia de la API de Amazon EC2 Auto Scaling.

Para obtener más información sobre la selección del tipo de instancia basada en atributos, consulte Attribute-Based Instance Type Selection for EC2 Auto Scaling and EC2 Fleet en el blog de AWS.

Consideraciones

A continuación, se indican los aspectos que se deben tener en cuenta en el momento de utilizar la selección del tipo de instancia basada en atributos:

  • Para la mayoría de las cargas de trabajo de uso general, basta con especificar la cantidad de vCPU y memoria que se necesita. Para los casos de uso avanzados, puede especificar atributos como el tipo de almacenamiento, las interfaces de red, el fabricante de la CPU y el tipo de acelerador.

  • De forma predeterminada, el valor de la capacidad deseada del grupo de Auto Scaling se establece como la cantidad de instancias. De forma opcional, puede especificar el tipo de capacidad deseada como la cantidad de vCPU o de memoria cuando utiliza la selección del tipo de instancia basada en atributos. Luego, cuando Amazon EC2 Auto Scaling lance las instancias, la cantidad de vCPU o de memoria se tendrá en cuenta para calcular la capacidad deseada. Cuando crea su grupo en la consola de Amazon EC2 Auto Scaling, esta opción aparece en la sección Group size (Tamaño del grupo) de la página Configure group size and scaling policies (Configurar el tamaño del grupo y las políticas de escalado). Esta característica es útil para sustituir la característica de ponderación de instancias.

  • Puede obtener una vista previa de los tipos de instancia que son compatibles con sus requisitos de computación sin necesidad de lanzarlos y ajustar los requisitos en caso de ser necesario. Cuando crea el grupo de Auto Scaling en la consola de Amazon EC2 Auto Scaling, aparece una vista previa de los tipos de instancia en la sección Preview matching instance types (Vista previa de los tipos de instancia coincidentes) en la página Choose instance launch options (Elegir opciones de lanzamiento de las instancias).

  • Como alternativa, puede obtener una vista previa de los tipos de instancia realizando una llamada a la API GetInstanceTypesFromInstanceRequirements de Amazon EC2 o utilizando la AWS CLI o un SDK. Transfiera los parámetros InstanceRequirements de la solicitud en el mismo formato que utilizaría para crear o actualizar un grupo de Auto Scaling. Para obtener más información, consulte Vista previa de los tipos de instancia con atributos especificados en la Guía del usuario de Amazon EC2 para instancias de Linux.

Comprensión de la protección de precios

La protección de precios es una característica que protege al grupo de Auto Scaling de las diferencias de precios extremas entre los tipos de instancias. Cuando crea un grupo de Auto Scaling nuevo o actualiza un grupo de Auto Scaling existente con la selección del tipo de instancia basada en atributos, se habilita la protección de precios de forma predeterminada. De forma opcional, puede elegir los límites de protección de precios para las instancias de spot y bajo demanda. Amazon EC2 Auto Scaling no selecciona los tipos de instancias cuyo precio sea superior a los límites especificados. Los límites representan lo que está dispuesto a pagar y se definen en términos de un porcentaje sobre una base de referencia, en lugar de valores absolutos. La base de referencia está determinada por el precio del tipo de instancia M, C o R de la generación actual menos costosa con sus atributos especificados. Si sus atributos no coinciden con ningún tipo de instancia M, C o R, se utiliza el tipo de instancia de menor precio.

Si no especifica un límite, se utilizan los siguientes de forma predeterminada:

  • Para las instancias bajo demanda, el límite de protección de precios se establece en un 20 por ciento.

  • Para las instancias de spot, el límite de protección de precios se establece en el 100 por ciento.

Para actualizar estos valores cuando cree su grupo de Auto Scaling en la consola de Amazon EC2 Auto Scaling, en la página Choose instance launch options (Elegir opciones de lanzamiento de las instancias), elija el atributo de protección de precios deseado en la lista desplegable Additional instance attributes (Atributos de instancia adicionales) y, a continuación, escriba o elija un valor para el atributo en el cuadro de texto. También puede actualizar estos valores en cualquier momento editando el grupo de Auto Scaling desde la consola o transfiriendo los parámetros pertinentes con la AWS CLI o un SDK.

nota

Si configura Desired capacity type (Tipo de capacidad deseada) en vCPUs (vCPU) o Memory GiB (GiB de memoria), el umbral de protección de precios se aplica en función del precio por vCPU o por memoria en lugar del precio por instancia.

Requisitos previos

Cree una plantilla de lanzamiento que incluya los parámetros necesarios para lanzar una instancia de EC2, como la imagen de máquina de Amazon (AMI) y los grupos de seguridad. Para obtener más información, consulte Creación de una plantilla de lanzamiento para un grupo de Auto Scaling .

Verifique que cuente con los permisos necesarios para utilizar una plantilla de lanzamiento. Los permisos ec2:RunInstances se verifican cuando se utiliza una plantilla de lanzamiento. También se verifican los permisos iam:PassRole si la plantilla de lanzamiento especifica un rol de IAM. Para obtener más información, consulte Compatibilidad con las plantillas de lanzamiento .

Uso de la selección del tipo de instancia basada en atributos

Complete los siguientes pasos para crear un grupo de Auto Scaling que utilice la selección del tipo de instancia basada en atributos.

Antes de comenzar, confirme que ha creado una plantilla de lanzamiento, como se describe en Requisitos previos.

Verifique que la plantilla de lanzamiento no solicite ya instancias de spot.

Para la creación de un grupo de Auto Scaling mediante la selección del tipo de instancia basada en atributos (consola)

  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ó cuando creó la plantilla de lanzamiento.

  3. Elija Create an Auto Scaling group (Crear un grupo de Auto Scaling).

  4. En la página Choose launch template or configuration (Elegir plantilla o configuración de lanzamiento) haga lo siguiente:

    1. Para Nombre de grupo de Auto Scaling, ingrese un nombre para el grupo de Auto Scaling.

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

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

    4. Compruebe que la plantilla de lanzamiento admita todas las opciones que tiene previsto utilizar y, a continuación, elija Next (Siguiente).

  5. En la página Choose instance launch options (Elegir opciones de lanzamiento de las instancias), en Network (Red), en la opción VPC, elija una VPC. El grupo de Auto Scaling debe crearse en la misma VPC que el grupo de seguridad especificado en la plantilla de lanzamiento.

  6. En Availability Zones and subnets (Zonas de disponibilidad y subredes), elija una o más subredes de la VPC especificada. Utilice subredes en varias zonas de disponibilidad para lograr una alta disponibilidad. Para obtener más información, consulte Consideraciones a la hora de elegir subredes de VPC .

  7. En Instance type requirements (Requisitos de los tipos de instancia), elija Override launch template (Anular la plantilla de lanzamiento).

    nota

    Si ya utiliza la selección del tipo de instancia basada en atributos en su plantilla de lanzamiento, la configuración que definió en la plantilla de lanzamiento, como las vCPU y la memoria, se completa de forma automática.

    1. En Specify instance attributes (Especificar los atributos de instancia), primero ingrese sus requisitos de vCPU y memoria.

      • vCPUs (vCPU): ingrese la cantidad mínima y máxima de vCPU para los requisitos de computación. Seleccione la casilla No minimum (No hay un mínimo) o No maximum (No hay un máximo) para indicar que no hay límites al respecto.

      • Memory (MiB) (Memoria [MiB]): ingrese la cantidad mínima y máxima de memoria, en MiB, para los requisitos de computación. Seleccione la casilla No minimum (No hay un mínimo) o No maximum (No hay un máximo) para indicar que no hay límites al respecto.

    2. (Opcional) En Additional instance attributes (Atributos de instancia adicionales), elija Add attribute (Agregar atributo) para expresar sus requisitos de computación con más detalle. Los atributos y los valores que elija en esta opción limitarán aún más los tipos de instancias que pueden lanzarse. Para obtener una lista completa de los atributos admitidos, consulte InstanceRequirements en la Referencia de la API de Amazon EC2 Auto Scaling.

    3. En Preview matching instance types (Vista previa de los tipos de instancias coincidentes), vea los tipos de instancias que coinciden con los requisitos de computación especificados, como las vCPU, la memoria y el almacenamiento.

      (Opcional) Para excluir tipos de instancias, seleccione aquellos tipos que desea excluir y elija Exclude selected instance types (Excluir los tipos de instancias seleccionados). Como alternativa, en Additional instance attributes (Atributos de instancia adicionales), elija Add attribute (Agregar atributo), Exclude instance types (Excluir tipos de instancia) y, a continuación, seleccione los tipos de instancia que desea excluir.

  8. En Instance purchase options (Opciones de compra de instancias), actualice las opciones de compra según sea necesario para reducir el costo de la aplicación mediante el uso de instancias de spot.

    1. En Instances distribution (Distribución de las instancias), especifique los porcentajes de las instancias bajo demanda respecto a las instancias de spot que desee lanzar en el grupo de Auto Scaling. Si la suya es una aplicación sin estado, tolerante a errores y capaz de gestionar la interrupción de una instancia, puede especificar un mayor porcentaje de instancias de spot.

    2. En función de si eligió lanzar instancias de spot, puede seleccionar la casilla situada junto a Include On-Demand base capacity (Incluir capacidad base bajo demanda) y especificar la cantidad mínima de la capacidad inicial del grupo de Auto Scaling que deben satisfacer las instancias bajo demanda. Lo que esté más allá de la capacidad base utiliza la configuración de Instances distribution (Distribución de las instancias) para determinar cuántas instancias bajo demanda y de spot deben lanzarse.

  9. En Allocation strategies (Estrategias de asignación), se selecciona de forma automática la opción Lowest price (Precio más bajo) para On-Demand allocation strategy (Estrategia de asignación bajo demanda) y no es posible cambiarla.

  10. En Spot allocation strategy (Estrategia de asignación de spot), elija una estrategia de asignación. Le recomendamos mantener la configuración predeterminada de Capacity optimized (Capacidad optimizada). Si prefiere no mantener el valor predeterminado, elija Lowest price (Precio más bajo), y, a continuación, especifique el número de grupos de instancias de spot de precio más bajo para diversificar.

  11. En Capacity rebalance (Reequilibrio de la capacidad), elija si desea habilitar o desactivar el reequilibrio de capacidad. Para obtener más información, consulte Utilizar el reequilibrio de capacidad para gestionar las interrupciones de spot de Amazon EC2 .

  12. Elija Next (Siguiente) dos veces para ir a la página Configure group size and scaling policies (Configurar el tamaño del grupo y las políticas de escalado).

    O puede aceptar el resto de las opciones predeterminadas y elegir Skip to review (Omitir para revisar).

  13. (Opcional) En la página Configure group size and scaling policies (Configurar políticas de tamaño de grupo y escala) configure las siguientes opciones y, a continuación, elija Next (Siguiente):

    1. Elija el Desired capacity type (Tipo de capacidad deseada). Puede elegir Units (default) (Unidades [predeterminado]), vCPUs (vCPU) y Memory GiB (Memoria en GiB).

    2. Ingrese el tamaño inicial de su grupo de Auto Scaling en Desired capacity (Capacidad deseada) y actualice los límites de Minimum capacity (Capacidad mínima) y Maximum capacity (Capacidad máxima) según sea necesario. Para obtener más información, consulte Establecimiento de los límites de capacidad en el grupo de Auto Scaling .

    3. Para escalar automáticamente el tamaño del grupo de Auto Scaling, elija Target tracking scaling policy (Política de escalado de seguimiento de destino) y siga las instrucciones. Para obtener más información, consulte Políticas de escalado de seguimiento de destino para Amazon EC2 Auto Scaling .

    4. En Instance scale-in protection (Protección de escalado descendente de instancias), elija si desea habilitar la protección de escalado descendente de instancias. Para obtener más información, consulte Uso de la protección de reducción horizontal de instancias .

  14. (Opcional) Para recibir notificaciones, en Add notification (Añadir notificación), configure la notificación y, a continuación, elija Next (Siguiente). Para obtener más información, consulte Recepción de notificaciones de Amazon SNS cuando se escala un grupo de Auto Scaling .

  15. (Opcional) Para añadir etiquetas, elija Add Tags (Añadir etiquetas), facilite un valor y una clave de etiqueta, y luego elija Next (Siguiente). Para obtener más información, consulte Etiquetado de grupos e instancias de Auto Scaling .

  16. En la página Review (Revisar), elija Create Auto Scaling group (Crear grupo de Auto Scaling).

Ejemplo: creación de un grupo de Auto Scaling mediante la selección del tipo de instancia basada en atributos (AWS CLI)

Para crear un grupo de Auto Scaling mediante la selección del tipo de instancia basada en atributos con la línea de comandos, puede utilizar el comando create-auto-scaling-group.

Se especifican los siguientes atributos de instancia:

  • VCpuCount: los tipos de instancia deben tener un mínimo de cuatro y un máximo de ocho vCPU.

  • MemoryMiB: los tipos de instancia deben tener un mínimo de 16 384 MiB de memoria.

  • CpuManufacturers: los tipos de instancia deben tener una CPU fabricada por Intel.

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

A continuación se muestra un ejemplo de un archivo config.json.

{ "AutoScalingGroupName": "my-asg", "DesiredCapacityType": "units", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": {"Min": 4, "Max": 8}, "MemoryMiB": {"Min": 16384}, "CpuManufacturers": ["intel"] } }] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 4, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

Para establecer el valor de la capacidad deseada como la cantidad de vCPU o de memoria, especifique "DesiredCapacityType": "vcpu" o "DesiredCapacityType": "memory-mib" en el archivo. El tipo de capacidad deseada predeterminado es units, que establece el valor de la capacidad deseada como la cantidad de instancias.

Como alternativa, puede utilizar el siguiente comando create-auto-scaling-group para crear el grupo de Auto Scaling, haciendo referencia a un archivo YAML como único parámetro para el grupo de Auto Scaling, en lugar de un archivo JSON.

aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

A continuación se muestra un ejemplo de un archivo config.yaml.

--- AutoScalingGroupName: my-asg DesiredCapacityType: units MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceRequirements: VCpuCount: Min: 2 Max: 4 MemoryMiB: Min: 2048 CpuManufacturers: - intel InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 50 SpotAllocationStrategy: capacity-optimized MinSize: 0 MaxSize: 100 DesiredCapacity: 4 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

Para establecer el valor de la capacidad deseada como la cantidad de vCPU o de memoria, especifique DesiredCapacityType: vcpu o DesiredCapacityType: memory-mib en el archivo. El tipo de capacidad deseada predeterminado es units, que establece el valor de la capacidad deseada como la cantidad de instancias.

Limitaciones

  • Puede configurar la selección del tipo de instancia basada en atributos solo para los grupos de Auto Scaling que utilizan una plantilla de lanzamiento.

  • Si tiene un grupo de Auto Scaling existente y planea sustituir los tipos de instancias por los atributos de instancia requeridos, su estrategia de asignación bajo demanda debe ser lowest-price. Para utilizar la estrategia de asignación prioritized, debe continuar agregando y priorizando los tipos de instancias de forma manual. Además, su estrategia de asignación de spot debe ser capacity-optimized o lowest-price. Para utilizar la estrategia de asignación capacity-optimized-prioritized, debe agregar y priorizar los tipos de instancia de forma manual.