Creación de un grupo de instancias mixtas seleccionando manualmente los tipos de instancias - Amazon EC2 Auto Scaling

Creación de un grupo de instancias mixtas seleccionando manualmente los tipos de instancias

En este tema, se muestra cómo lanzar varios tipos de instancia en un solo grupo de escalado automático eligiendo manualmente los tipos de instancia.

Si prefiere utilizar los atributos de instancia como criterios para seleccionar tipos de instancia, consulte Creación de grupos de instancias mixtas mediante la selección del tipo de instancia basada en atributos.

Requisitos previos

Creación de un grupo de instancias mixtas (consola)

Para crear un grupo de instancias mixtas, elija manualmente qué tipos de instancias puede lanzar su grupo. Para ayudarlo a realizar los pasos de forma eficiente, se omiten algunas secciones opcionales.

Para revisar las prácticas recomendadas para un grupo de instancias mixtas, consulte Información general de la configuración de creación de un grupo de instancias mixtas.

Creación de un grupo de instancias mixtas
  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 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. Para elegir la plantilla de lanzamiento, haga lo siguiente:

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

    2. 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.

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

  6. En la página Elegir las opciones de lanzamiento de instancias, haga lo siguiente:

    1. En Instance type requirements (Requisitos de tipo de instancias), elija Override launch template (Anular la plantilla de lanzamiento) y, a continuación, elija Manually add instance types (Agregar los tipos de instancia de forma manual).

    2. Elija los tipos de instancia. Puede utilizar nuestras recomendaciones como punto de partida. La opción Family and generation flexible (Familia y generación flexible) está seleccionada de forma predeterminada.

      • Para cambiar el orden de los tipos de instancia, utilice las flechas. Si elige una estrategia de asignación que admita la priorización, el orden de los tipos de instancia establece su prioridad de lanzamiento.

      • Para eliminar un tipo de instancia, elija X.

      • (Opcional) En los cuadros de la columna Ponderación, asigne a cada tipo de instancia una ponderación relativa. Para ello, ingrese el número de unidades que una instancia de ese tipo cuenta para alcanzar la capacidad deseada del grupo. Esto podría resultar útil si, por ejemplo, los tipos de instancia ofrecen diferentes funcionalidades de vCPU, memoria, almacenamiento o ancho de banda de la red. Para obtener más información, consulte Configuración de un grupo de escalado automático para utilizar ponderación de instancias.

        Tenga en cuenta que, si elige usar las recomendaciones de Tamaño flexible, todos los tipos de instancia que formen parte de esta sección tendrán automáticamente un valor de ponderación. Si no quiere especificar ningún peso, desactiva los cuadros de la columna Weight (Peso) para todos los tipos de instancia.

    3. En Instance purchase options (Opciones de compra) para la distribución de instancias, especifique los porcentajes del grupo que se lanzará como instancias bajo demanda e instancias de spot, respectivamente. 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.

    4. (Opcional) Cuando especifique un porcentaje para las instancias de spot, seleccione Incluir capacidad base bajo demanda y luego especifique la cantidad mínima de la capacidad inicial del grupo de escalado automático 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.

    5. En Allocation strategies (Estrategias de asignación), para On-Demand allocation strategy (Estrategia de asignación bajo demanda), elija una estrategia de asignación. Al elegir manualmente los tipos de instancia, se selecciona Prioritized (Priorizada) de forma predeterminada.

    6. En Spot allocation strategy (Estrategia de asignación de spot), elija una estrategia de asignación. Price capacity optimized (Capacidad de precios optimizada) se selecciona de forma predeterminada.

      Si elige Capacidad optimizada, puede opcionalmente marcar la casilla Priorizar los tipos de instancia para que Amazon EC2 Auto Scaling pueda elegir qué tipo de instancia lanzar primero en función del orden en que aparecen los tipos de instancia.

    7. En Reequilibrio de la capacidad, elija si desea habilitar o desactivar el reequilibrio de la capacidad. Use el reequilibrio de la capacidad para responder automáticamente cuando sus instancias de spot se aproximen a su finalización por una interrupción de spot. Para obtener más información, consulte Reequilibrio de la capacidad en Auto Scaling para reemplazar las instancias de spot en riesgo.

    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.

    9. 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.

    10. Elija Siguiente, Siguiente.

  7. Para el paso Configure group size and scaling policies (Configurar el tamaño del grupo y las políticas de escalado), haga lo siguiente:

    1. En Tamaño de grupo, para Capacidad deseada, introduzca el número inicial de instancias que desea lanzar.

      De forma predeterminada, la capacidad deseada se expresa como la cantidad de instancias. Si asignó ponderaciones a sus tipos de instancia, debe convertir este valor a la misma unidad de medida que utilizó para asignar ponderaciones, como la cantidad de vCPU.

    2. En la sección Scaling (Escalado), en Scaling limits (Límites de escalado), si el nuevo valor de Desired capacity (Capacidad deseada) es superior a Min desired capacity (Capacidad deseada mínima) y a Max desired capacity (Capacidad deseada máxima), Max desired capacity (Capacidad deseada máxima) se incrementará automáticamente al nuevo valor de capacidad deseada. Puede cambiar estos límites según sea necesario. Para obtener más información, consulte Establecimiento de límites de escalado para el grupo de escalado automático.

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

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

Creación de un grupo de instancias mixtas (AWS CLI)

Creación de un grupo de instancias mixtas mediante la línea de comandos

Utilice uno de los siguientes comandos:

Configuraciones de ejemplo

En las siguientes configuraciones de ejemplo se muestra cómo crear grupos de instancias mixtas mediante las diferentes estrategias de asignación de spot.

nota

En estos ejemplos se muestra cómo utilizar un archivo de configuración con formato JSON o YAML. Si utiliza AWS CLI, versión 1, debe especificar un archivo de configuración con formato JSON. Si utiliza AWS CLI, versión 2, puede especificar un archivo de configuración con formato YAML o JSON.

Ejemplo 1: Lanzamiento de Instancias de spot con la estrategia de asignación capacity-optimized

El siguiente comando create-auto-scaling-group crea un grupo de Auto Scaling que especifica lo siguiente:

  • El porcentaje del grupo que se va a lanzar como instancias bajo demanda (0) y un número base de instancias bajo demanda con el que se va a comenzar (1).

  • Los tipos de instancia que se van a lanzar por orden de prioridad (c5.large, c5a.large, m5.large, m5a.large, c4.large, m4.large, c3.large, m3.large).

  • Las subredes en las que se lanzarán las instancias (subnet-5ea0c127, subnet-6194ea3b, subnet-c934b782). Cada una corresponde a una zona de disponibilidad diferente.

  • La plantilla de lanzamiento (my-launch-template) y la versión de la plantilla de lanzamiento ($Default).

Cuando Amazon EC2 Auto Scaling intenta cubrir su capacidad en diferido, lanza primero el tipo de instancia c5.large. Las instancias de spot proceden del grupo de spot óptimo en cada zona de disponibilidad en función de la capacidad de la instancia de spot.

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

El archivo config.json contiene la salida siguiente.

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] }, "InstancesDistribution": { "OnDemandBaseCapacity": 1, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

Como alternativa, puede utilizar el comando create-auto-scaling-group para crear el grupo de escalado automático. Esto hace referencia a un archivo YAML como único parámetro de su grupo de escalado automático.

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

El archivo config.yaml contiene la salida siguiente.

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large InstancesDistribution: OnDemandBaseCapacity: 1 OnDemandPercentageAboveBaseCapacity: 0 SpotAllocationStrategy: capacity-optimized MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

Ejemplo 2: Lanzamiento de Instancias de spot con la estrategia de asignación capacity-optimized-prioritized

El siguiente comando create-auto-scaling-group crea un grupo de Auto Scaling que especifica lo siguiente:

  • El porcentaje del grupo que se va a lanzar como instancias bajo demanda (0) y un número base de instancias bajo demanda con el que se va a comenzar (1).

  • Los tipos de instancia que se van a lanzar por orden de prioridad (c5.large, c5a.large, m5.large, m5a.large, c4.large, m4.large, c3.large, m3.large).

  • Las subredes en las que se lanzarán las instancias (subnet-5ea0c127, subnet-6194ea3b, subnet-c934b782). Cada una corresponde a una zona de disponibilidad diferente.

  • La plantilla de lanzamiento (my-launch-template) y la versión de la plantilla de lanzamiento ($Latest).

Cuando Amazon EC2 Auto Scaling intenta cubrir su capacidad en diferido, lanza primero el tipo de instancia c5.large. Cuando Amazon EC2 Auto Scaling intenta satisfacer la capacidad de spot, respeta las prioridades del tipo de instancia sobre la base del mejor esfuerzo. Sin embargo, primero optimiza la capacidad.

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

El archivo config.json contiene la salida siguiente.

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] }, "InstancesDistribution": { "OnDemandBaseCapacity": 1, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized-prioritized" } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

Como alternativa, puede utilizar el comando create-auto-scaling-group para crear el grupo de escalado automático. Esto hace referencia a un archivo YAML como único parámetro de su grupo de escalado automático.

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

El archivo config.yaml contiene la salida siguiente.

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large InstancesDistribution: OnDemandBaseCapacity: 1 OnDemandPercentageAboveBaseCapacity: 0 SpotAllocationStrategy: capacity-optimized-prioritized MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

Ejemplo 3: Lanzamiento de instancias de spot mediante la estrategia de asignación lowest-price diversificada en dos grupos

El siguiente comando create-auto-scaling-group crea un grupo de Auto Scaling que especifica lo siguiente:

  • El porcentaje del grupo que lanzar como instancias bajo demanda (50). (Esto no especifica un número base de instancias bajo demanda para empezar).

  • Los tipos de instancia que se van a lanzar por orden de prioridad (c5.large, c5a.large, m5.large, m5a.large, c4.large, m4.large, c3.large, m3.large).

  • Las subredes en las que se lanzarán las instancias (subnet-5ea0c127, subnet-6194ea3b, subnet-c934b782). Cada una corresponde a una zona de disponibilidad diferente.

  • La plantilla de lanzamiento (my-launch-template) y la versión de la plantilla de lanzamiento ($Latest).

Cuando Amazon EC2 Auto Scaling intenta cubrir su capacidad en diferido, lanza primero el tipo de instancia c5.large. Para su capacidad de spot, Amazon EC2 Auto Scaling intenta lanzar las instancias de spot de manera uniforme en los dos grupos de precio más bajo de cada zona de disponibilidad.

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

El archivo config.json contiene la salida siguiente.

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "lowest-price", "SpotInstancePools": 2 } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

Como alternativa, puede utilizar el comando create-auto-scaling-group para crear el grupo de escalado automático. Esto hace referencia a un archivo YAML como único parámetro de su grupo de escalado automático.

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

El archivo config.yaml contiene la salida siguiente.

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 50 SpotAllocationStrategy: lowest-price SpotInstancePools: 2 MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

Ejemplo 4: inicialización de instancias de spot con la estrategia de asignación price-capacity-optimized

El siguiente comando create-auto-scaling-group crea un grupo de Auto Scaling que especifica lo siguiente:

  • El porcentaje del grupo que lanzar como instancias bajo demanda (30). (Esto no especifica un número base de instancias bajo demanda para empezar).

  • Los tipos de instancia que se van a lanzar por orden de prioridad (c5.large, c5a.large, m5.large, m5a.large, c4.large, m4.large, c3.large, m3.large).

  • Las subredes en las que se lanzarán las instancias (subnet-5ea0c127, subnet-6194ea3b, subnet-c934b782). Cada una corresponde a una zona de disponibilidad diferente.

  • La plantilla de lanzamiento (my-launch-template) y la versión de la plantilla de lanzamiento ($Latest).

Cuando Amazon EC2 Auto Scaling intenta cubrir su capacidad en diferido, lanza primero el tipo de instancia c5.large. Para su capacidad de spot, Amazon EC2 Auto Scaling intenta lanzar las instancias de spot desde grupos de instancias de spot con el precio más bajo posible, pero también con una capacidad óptima para la cantidad de instancias que lanza.

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

El archivo config.json contiene la salida siguiente.

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 30, "SpotAllocationStrategy": "price-capacity-optimized" } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

Como alternativa, puede utilizar el comando create-auto-scaling-group para crear el grupo de escalado automático. Esto hace referencia a un archivo YAML como único parámetro de su grupo de escalado automático.

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

El archivo config.yaml contiene la salida siguiente.

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 30 SpotAllocationStrategy: price-capacity-optimized MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782