Grupo de Auto Scaling para su entorno de Elastic Beanstalk - AWS Elastic Beanstalk

Grupo de Auto Scaling para su entorno de Elastic Beanstalk

El entorno de AWS Elastic Beanstalk incluye un grupo de Auto Scaling que administra las instancias de Amazon EC2 en el entorno. En un entorno de una sola instancia, el grupo de Auto Scaling garantiza que siempre haya una instancia en ejecución. En un entorno con balanceo de carga, se configura el grupo con una serie de instancias en ejecución y Auto Scaling agrega o elimina instancias según sea necesario y en función de la carga.

El grupo de Auto Scaling también aplica la configuración de lanzamiento de las instancias del entorno. Puede modificar la configuración de lanzamiento para cambiar el tipo de instancia, el par de claves, el almacenamiento de Amazon Elastic Block Store (Amazon EBS) y otros ajustes que solo se pueden configurar al lanzar una instancia.

El grupo de Auto Scaling utiliza dos alarmas de Amazon CloudWatch para activar operaciones de escala. Los desencadenadores predeterminados adaptan su escala cuando el tráfico de la red saliente promedio de cada instancia es superior a 6 MiB o inferior a 2 MiB durante un periodo de cinco minutos. Para utilizar Auto Scaling de forma eficaz, configure desencadenadores adecuados para su aplicación, tipo de instancia y requisitos de servicio. Puede optar por la escala en función de varias estadísticas, como la latencia, E/S de disco, la utilización de la CPU y el recuento de solicitudes.

Para optimizar el uso de instancias de Amazon EC2 en el entorno mediante periodos predecibles de picos de tráfico, configure el grupo de Auto Scaling para cambiar el recuento de instancias de manera programada. Puede programar cambios en la configuración de su grupo que pueden producirse con una periodicidad diaria o semanal, o bien programar cambios puntuales para prepararse para eventos de marketing que dirigirán una gran cantidad de tráfico a su sitio.

De manera opcional, Elastic Beanstalk puede combinar instancias en diferido y de spot para su entorno. Puede configurar Amazon EC2 Auto Scaling para monitorear y responder de manera automática a los cambios que afectan la disponibilidad de las instancias de spot al habilitar el reequilibrio de la capacidad.

Auto Scaling también monitorea el estado de cada Amazon EC2 instance que lanza. Si una instancia termina de forma inesperada, Auto Scaling lo detecta y lanza una instancia de sustitución. Para configurar el grupo para utilizar el mecanismo de comprobación de estado del balanceador de carga, consulte Configuración de comprobaciones de estado de Auto Scaling.

Puede configurar Auto Scaling en su entorno mediante la consola de Elastic Beanstalk, la CLI de EB o las opciones de configuración.

Compatibilidad con instancias de spot

Para aprovechar las instancias de spot de Amazon EC2, puede habilitar una opción de spot en el entorno. El grupo de Auto Scaling de su entorno combinará entonces las opciones de compra de Amazon EC2 y mantendrá una combinación de instancias en diferido y de spot.

En este tema se describen los siguientes métodos para habilitar las solicitudes de instancias de spot del entorno:

importante

La demanda de instancias de spot puede variar enormemente de un momento a otro y la disponibilidad de las instancias de spot también puede variar significativamente en función de cuántas instancias de Amazon EC2 no utilizadas haya disponibles. Siempre es posible que la instancia de spot se vea interrumpida.

Para ayudar a minimizar el impacto de estas interrupciones en la aplicación, puede habilitar la opción de reequilibrio de la capacidad incluida con Amazon EC2 Auto Scaling. Con esta característica habilitada, EC2 intenta reemplazar de manera automática las instancias de spot en un grupo de Auto Scaling antes de que se interrumpan. Con la finalidad de habilitar esta característica, utilice la consola de Elastic Beanstalk para configurar el grupo de Auto Scaling. En su defecto, puede establecer la opción de configuración EnableCapacityRebalancing de Elastic Beanstalk en true el espacio de nombres aws:autoscaling:asg.

Con el fin de obtener más información, consulte Reequilibrio de la capacidad en la Guía del usuario de Amazon EC2 Auto Scaling e Interrupciones de instancias de spot en la Guía del usuario de Amazon EC2 para instancias de Linux.

Elastic Beanstalk dispone de varias opciones de configuración que admiten la característica Spot. Estas se tratan en las siguientes secciones relacionadas con la configuración del grupo de Auto Scaling.

Dos de estas opciones, en el espacio de nombres aws:ec2:instances, merecen una atención especial:

  • SpotFleetOnDemandBase

  • SpotFleetOnDemandAboveBasePercentage

Estas dos opciones se correlacionan con la opción MinSize en el espacio de nombres aws:autoscaling:asg:

  • Solo MinSize determina la capacidad inicial del entorno: el número de instancias que debe ejecutar como mínimo.

  • SpotFleetOnDemandBase no afecta a la capacidad inicial. Si se habilita Spot, esta opción solo determina cuántas instancias en diferido se aprovisionan antes de que se considere la posibilidad de utilizar instancias de spot.

  • Tenga en cuenta cuándo SpotFleetOnDemandBase es menor que MinSize. Obtendrá exactamente MinSize instancias como capacidad inicial. Como mínimo SpotFleetOnDemandBase deben ser instancias en diferido.

  • Tenga en cuenta cuándo SpotFleetOnDemandBase es mayor que MinSize. A medida que el entorno escale de forma horizontal, tendrá la seguridad de obtener al menos una cantidad de instancias adicionales igual a la diferencia entre los dos valores. En otras palabras, se garantiza que obtendrá al menos (SpotFleetOnDemandBase - MinSize) instancias adicionales que son en diferido antes de cumplir con el requisito de SpotFleetOnDemandBase.

En entornos de producción, las instancias de spot resultan particularmente útiles en un entorno escalable con equilibrio de carga. No es conveniente utilizar Spot en un entorno con una única instancia. Si no hay instancias de spot disponibles, podría perder toda la capacidad del entorno (una sola instancia). Es posible que desee utilizar una instancia de spot en un entorno con una sola instancia para realizar el desarrollo o las pruebas. Si lo hace, asegúrese de establecer SpotFleetOnDemandBase y SpotFleetOnDemandAboveBasePercentage en cero. Cualquier otra configuración dará como resultado una instancia en diferido.

Notas
  • Algunas cuentas antiguas de AWS pueden proporcionar a Elastic Beanstalk tipos de instancias predeterminados que no son compatibles con las instancias de spot (por ejemplo, t1.micro). Si habilita las solicitudes de instancias de spot y aparece el error None of the instance types you specified supports Spot (Ninguno de los tipos de instancia especificados admite Spot), no olvide configurar los tipos de instancias compatibles con Spot. Para seleccionar tipos de instancias de spot, utilice el Asistente de instancias de spot.

  • Para habilitar las solicitudes de instancias de spot debe usar plantillas de lanzamiento de Amazon EC2. Cuando configura esta característica durante la creación del entorno o las actualizaciones, Elastic Beanstalk intenta configurar el entorno para que utilice plantillas de lanzamiento de Amazon EC2 (si el entorno aún no las está utilizando). En este caso, si la política de usuario carece de los permisos necesarios, la creación del entorno o las actualizaciones podrían producir un error. Por lo tanto, le recomendamos que utilice nuestra política de usuario administrada o que agrega los permisos necesarios a sus políticas personalizadas. Para obtener información detallada acerca de los permisos necesarios, consulte Creación de una política de usuario personalizada.

En los siguientes ejemplos, se muestran diversos escenarios de configuración con distintas opciones de escala. En todos los ejemplos, se presupone que se está utilizando un entorno con balanceo de carga y que las solicitudes de instancias de spot están habilitadas.

ejemplo 1: Instancias en diferido y de spot como parte de la capacidad inicial

Opciones de configuración
Opción Espacio de nombres Valor

MinSize

aws:autoscaling:asg

10

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

En este ejemplo, el entorno comienza con diez instancias, de las cuales siete son en diferido (cuatro base y el 50 % de las seis que están por encima de la base), mientras que tres son de spot. El entorno puede escalar horizontalmente hasta un máximo de 24 instancias. A medida que se amplía, la parte en diferido de la flota que está por encima de las cuatro instancias base en diferido se mantiene en el 50 %, hasta un máximo total de 24 instancias, de las cuales 14 son en diferido (cuatro base y el 50 % de las 20 que están por encima de la base) y 10 son de spot.

ejemplo 2: Toda la capacidad inicial la conforman instancias en diferido

Opciones de configuración
Opción Espacio de nombres Valor

MinSize

aws:autoscaling:asg

4

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

En este ejemplo, el entorno comienza con cuatro instancias, todas ellas en diferido. El entorno puede ampliarse hasta un máximo de 24 instancias. A medida que se amplía, la parte en diferido de la flota que está por encima de las cuatro instancias base en diferido se mantiene en el 50 %, hasta un máximo total de 24 instancias, de las cuales 14 son en diferido (cuatro base y el 50 % de las 20 que están por encima de la base) y 10 son de spot.

ejemplo 3: Base en diferido adicional que supera la capacidad inicial

Opciones de configuración
Opción Espacio de nombres Valor

MinSize

aws:autoscaling:asg

3

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

En este ejemplo, el entorno comienza con tres instancias, todas ellas en diferido. El entorno puede escalar horizontalmente hasta un máximo de 24 instancias. La primera instancia adicional por encima de las tres iniciales es una instancia en diferido y completa las cuatro instancias base en diferido. A medida que sigue ampliándose, la parte en diferido de la flota que está por encima de las cuatro instancias base en diferido se mantiene en el 50 %, hasta un máximo total de 24 instancias, de las cuales 14 son en diferido (cuatro base y el 50 % de las 20 que están por encima de la base), mientras que diez son instancias de spot.

Configuración del grupo de Auto Scaling mediante la consola de Elastic Beanstalk

Puede configurar el funcionamiento de Auto Scaling modificando el valor de Capacity (Capacidad) en la página Configuration (Configuración) del entorno en la consola de Elastic Beanstalk.

Para configurar el grupo de Auto Scaling en la consola de Elastic Beanstalk

  1. Abra la consola de Elastic Beanstalk y, en la lista Regions (Regiones), seleccione su región de AWS.

  2. En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

  3. En el panel de navegación, elija Configuration (Configuración).

  4. En la categoría de configuración Capacity (Capacidad), elija Edit (Editar).

  5. En la sección Auto Scaling group (Grupo de Auto Scaling), configure los siguientes ajustes.

    • Environment type (Tipo de entorno): seleccione Load balanced (Con balanceo de carga).

    • Min instances (Número mínimo de instancias): el número mínimo de instancias EC2 que el grupo debe incluir en cualquier momento. El grupo comienza con el recuento mínimo y agrega instancias cuando se cumple la condición del desencadenador de aumento.

    • Max instances (Número máximo de instancias): el número máximo de instancias EC2 que el grupo debe incluir en cualquier momento.

      nota

      Si utiliza las actualizaciones continuas, asegúrese de que el número máximo de instancias es mayor que el ajuste Minimum instances in service (Instancias mínimas en servicio) para las actualizaciones continuas.

    • Composición de flota: el valor predeterminado es instancias en diferido. Para habilitar las solicitudes de instancias de spot, seleccione Combined purchase options and instances (Opciones e instancias de compra combinadas).

      Las siguientes opciones están habilitadas si selecciona habilitar solicitudes de instancia de Spot:

      • Precio de spot máximo: a fin de obtener recomendaciones sobre las opciones de precio máximo de las instancias de spot, consulte Historial de precios de instancias de spot en la Guía del usuario de Amazon EC2 para instancias de Linux.

      • Base en diferido: el número mínimo de instancias en diferido que el grupo de Auto Scaling aprovisiona antes de considerar la posibilidad de utilizar instancias de spot cuando escala de manera horizontal el entorno.

      • En diferido por encima de la base: porcentaje de instancias en diferido que forman parte de la capacidad adicional que el grupo de Auto Scaling aprovisiona después de las instancias base en diferido.

        nota

        Las opciones base bajo demanda y bajo demanda por encima de la base se correlacionan con las opciones de instancias Mín. y Máx. enumeradas anteriormente. Para obtener más información sobre estas opciones y ejemplos, consulte Compatibilidad con instancias de spot.

      • Habilitar el reequilibrio de la capacidad: esta opción solo es relevante cuando hay al menos una instancia de spot en el grupo de Auto Scaling. Con esta característica habilitada, EC2 intenta reemplazar de manera automática las instancias de spot en el grupo de Auto Scaling antes de que se interrumpan y así minimizar las interrupciones de las instancias de spot en las aplicaciones. Para obtener más información, consulte Reequilibrio de la capacidad en la Guía del usuario de Amazon EC2 Auto Scaling.

    • Instance Type (Tipo de instancia): tipo de Amazon EC2 instance lanzada para ejecutar la aplicación. Para obtener más detalles, consulte Tipos de instancias.

    • AMI ID (ID de AMI): imagen de máquina que Elastic Beanstalk utiliza para lanzar instancias de Amazon EC2 en el entorno. Para obtener más detalles, consulte ID de AMI.

    • Availability Zones (Zonas de disponibilidad): elija el número de zonas de disponibilidad para distribuir las instancias en su entorno. De forma predeterminada, el grupo de Auto Scaling lanza instancias de manera uniforme en todas las zonas utilizables. Para concentrar sus instancias en menos zonas, elija el número de zonas que se debe usar. Para los entornos de producción, utilice al menos dos zonas para asegurarse de que su aplicación esté disponible si una zona de disponibilidad se queda fuera de servicio.

    • Placement (Ubicación) (opcional): elija las zonas de disponibilidad que va a utilizar. Utilice este ajuste si las instancias deben conectarse a recursos en zonas específicas o si ha comprado instancias reservadas, que son específicas de cada zona. Si tiene la siguiente configuración: Tiempo de recuperación: '720' Zonas de disponibilidad personalizadas: 'us-west-2a,us-west-2b' Tamaño máximo: '4' en relación con el número de zonas, debe elegir como mínimo ese número de zonas personalizadas.

      Si lanza su entorno en una VPC personalizada, no puede configurar esta opción. En una VPC personalizada, usted elige zonas de disponibilidad para las subredes que asigna a su entorno.

    • Scaling cooldown (Periodo de recuperación de escala): la cantidad de tiempo que debe esperar en segundos a que las instancias se lancen o terminen después del escala, antes de seguir evaluando desencadenadores. Para obtener más información, consulte Periodos de recuperación de escala.

    
            Ventana de configuración de Auto Scaling de Elastic Beanstalk
  6. Seleccione Apply.

Configuración del grupo de Auto Scaling a través de la CLI de EB

Si crea un entorno mediante el comando eb create, puede especificar algunas opciones relacionadas con el grupo de Auto Scaling del entorno. Estas son algunas opciones que lo ayudan a controlar la capacidad del entorno.

--single

Crea el entorno con una Amazon EC2 instance y sin balanceador de carga. Si no utiliza esta opción, un balanceador de carga se agrega al entorno que se ha creado.

--enable-spot

Habilita las solicitudes de instancias de spot para el entorno.

Las siguientes opciones para el comando eb create solo pueden utilizarse con --enable-spot.

--instance-types

Enumera los tipos de Amazon EC2 instance que desea que se utilice en el entorno.

--spot-max-price

El precio máximo unidad por hora, en dólares estadounidenses, que está dispuesto a pagar por una instancia de Spot. A fin de obtener recomendaciones sobre las opciones de precio máximo de las instancias de spot, consulte el Historial de precios de instancias de spot en la Guía del usuario de Amazon EC2 para instancias de Linux.

--on-demand-base-capacity

Número mínimo de instancias en diferido que el grupo de Auto Scaling aprovisiona antes de considerar la posibilidad de utilizar instancias de spot cuando se amplía el entorno.

--on-demand-above-base-capacity

El porcentaje de instancias en diferido como parte de la capacidad adicional que el grupo de Auto Scaling aprovisiona además del número de instancias especificado mediante la opción --on-demand-base-capacity.

En el siguiente ejemplo, se crea un entorno y se configura el grupo de Auto Scaling para habilitar las solicitudes de instancias de Spot en el nuevo entorno. Para este ejemplo, se pueden utilizar tres tipos de instancias posibles.

$ eb create --enable-spot --instance-types "t2.micro,t3.micro,t3.small"
importante

Hay otra opción con nombre similar que se llama --instance-type(sin “s”) que la CLI de EB solo reconoce al procesar instancias en diferido. No utilice --instance-type (sin “s”) con la opción --enable-spot. Si lo hace, la CLI de EB lo ignora. En su lugar utilice --instance-types (con “s”) con la opción --enable-spot.

Opciones de configuración

Elastic Beanstalk dispone de opciones de configuración para configuraciones de Auto Scaling en dos espacios de nombres: aws:autoscaling:asg y aws:ec2:instances.

El espacio de nombres aws:autoscaling:asg

El espacio de nombres aws:autoscaling:asg cuenta con dos opciones de disponibilidad y escala global.

En el siguiente archivo de configuración de ejemplo, el grupo de Auto Scaling se configura para que utilice entre dos y cuatro instancias, zonas de disponibilidad específicas y un periodo de recuperación de 12 minutos (720 segundos). Se habilita el reequilibrio de la capacidad para instancias de spot. Esta última opción solo tiene efecto si EnableSpot se configura true en el espacio de nombres aws:ec2:instances, como se muestra en el ejemplo del archivo de configuración siguiente a este.

option_settings: aws:autoscaling:asg: Availability Zones: Any Cooldown: '720' Custom Availability Zones: 'us-west-2a,us-west-2b' MaxSize: '4' MinSize: '2' EnableCapacityRebalancing: true

El espacio de nombres aws:ec2:instances

El espacio de nombres aws:ec2:instances dispone de opciones relacionadas con las instancias del entorno, incluida la administración de instancias de spot. Complementa a aws:autoscaling:launchconfiguration y aws:autoscaling:asg.

Cuando actualiza la configuración del entorno y elimina uno o más tipos de instancias de la opción InstanceTypes, Elastic Beanstalk finaliza cualquier Amazon EC2 instance que se esté ejecutando en cualquiera de los tipos de instancias eliminados. A continuación, el grupo de Auto Scaling de su entorno lanza nuevas instancias, según sea necesario, para completar la capacidad deseada mediante sus tipos de instancia especificados actuales.

El siguiente ejemplo de archivo de configuración, configura el grupo de Auto Scaling para habilitar las solicitudes de instancias de spot en su entorno. Se pueden utilizar tres tipos de instancias posibles. Al menos una instancia en diferido se utiliza para capacidad de línea base y un 33% sostenido de instancias en diferido se utiliza para cualquier capacidad adicional.

option_settings: aws:ec2:instances: EnableSpot: true InstanceTypes: 't2.micro,t3.micro,t3.small' SpotFleetOnDemandBase: '1' SpotFleetOnDemandAboveBasePercentage: '33'

Para seleccionar tipos de instancias de spot, utilice el Asistente de instancias de spot.