Establecimiento de la preparación predeterminada de instancias para un grupo de escalado automático - 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.

Establecimiento de la preparación predeterminada de instancias para un grupo de escalado automático

CloudWatch recopila y agrega datos de uso, como E/S de CPU y red, en todas sus instancias de Auto Scaling. Estas métricas se utilizan para crear políticas de escalado que ajustan el número de instancias del grupo de escalado automático a medida que aumenta y disminuye el valor de la métrica seleccionada.

Puede especificar cuánto tiempo pasará después de que una instancia alcance el InService estado en el que estará antes de contribuir con los datos de uso a las métricas agregadas. Este tiempo especificado se denomina calentamiento predeterminado de la instancia. Esto evita que el escalado dinámico se vea afectado por las métricas de instancias individuales que aún no gestionan el tráfico de aplicaciones y que podrían estar experimentando un uso elevado temporal de los recursos informáticos.

Para optimizar el rendimiento de tus políticas de seguimiento de objetivos y escalado gradual, te recomendamos encarecidamente que habilites y configures el calentamiento de instancias predeterminado. No está activado ni configurado de forma predeterminada.

Cuando habilita el calentamiento de instancias predeterminado, tenga en cuenta que si su grupo de Auto Scaling está configurado para usar una política de mantenimiento de instancias o si usa una actualización de instancias para reemplazar las instancias, puede evitar que las instancias se cuenten para el porcentaje mínimo de mantenimiento antes de que terminen de inicializarse.

Consideraciones sobre el rendimiento de escalado

Resulta útil que la mayoría de las aplicaciones tengan un tiempo de calentamiento de instancias predeterminado que se aplique a todas las funciones, en lugar de diferentes tiempos de calentamiento para las distintas funciones. Por ejemplo, si no estableces un calentamiento de instancias predeterminado, la función de actualización de la instancia utiliza el período de gracia de la comprobación de estado como tiempo de calentamiento predeterminado. Si tienes políticas de seguimiento de objetivos y escalado escalado por pasos, usarán el valor establecido para el tiempo de recarga predeterminado como tiempo de calentamiento predeterminado. Si tienes políticas de escalado predictivo, no tienen un tiempo de calentamiento predeterminado.

Mientras las instancias se están calentando, sus políticas de escalado dinámico solo se escalan si el valor métrico de las instancias que no se están calentando supera el umbral máximo de alarma de la política (o el uso objetivo de una política de escalado de seguimiento objetivo). Si la demanda disminuye, el escalado dinámico se vuelve más conservador para proteger la disponibilidad de la aplicación. Esto bloquea las actividades de escalado interno para el escalado dinámico hasta que las nuevas instancias terminen de calentarse.

Al escalar, Amazon EC2 Auto Scaling considera las instancias que se están calentando como parte de la capacidad del grupo a la hora de decidir cuántas instancias se van a añadir al grupo. Por lo tanto, si se producen varias brechas de alarma que requieren añadir una cantidad similar de capacidad, se traduce en una única actividad de escalado. La intención es ampliarla de forma continua, sin hacerlo en exceso.

Si el calentamiento de instancias predeterminado no está activado, la cantidad de tiempo que espera una instancia antes de enviar las métricas CloudWatch y contabilizarlas para su capacidad actual variará de una instancia a otra. Por lo tanto, existe la posibilidad de que sus políticas de escalado funcionen de forma impredecible en comparación con la carga de trabajo real que se está produciendo.

Por ejemplo, considere una aplicación con un patrón de on-and-off carga de trabajo recurrente. Se utiliza una política de escalado predictivo para tomar decisiones recurrentes sobre si se debe aumentar el número de instancias. Como no hay un tiempo de calentamiento predeterminado para las políticas de escalado predictivo, las instancias comienzan a contribuir a las métricas agregadas de forma inmediata. Si estas instancias utilizan más recursos al iniciarse, la adición de instancias podría provocar un pico en las métricas globales. En función del tiempo que tarde en estabilizarse el uso, esto podría afectar a cualquier política de escalado dinámico que utilice estas métricas. Si se supera el umbral máximo de alarma establecido en una política de escalado dinámico, el grupo volverá a aumentar de tamaño. Mientras las nuevas instancias se estén preparando, las actividades de reducción horizontal se bloquearán.

Elija el tiempo de calentamiento de la instancia predeterminado

La clave para configurar la preparación predeterminado de las instancias es determinar cuánto tiempo necesitan las instancias para terminar de inicializarse y para que el consumo de recursos se estabilice una vez que alcancen el estado InService. Al elegir el tiempo de calentamiento de la instancia, intenta mantener un equilibrio óptimo entre la recopilación de datos de uso para el tráfico legítimo y la minimización de la recopilación de datos asociada a los picos de uso temporales durante el inicio.

Supongamos que tiene un grupo de escalado automático conectado a un equilibrador de carga Elastic Load Balancing. Cuando las instancias nuevas terminan de lanzarse, se registran en el equilibrador de carga antes de ingresar al estado de InService. Después de las instancias ingresan al estado InService, el consumo de recursos puede seguir experimentando picos temporales y necesitar tiempo para estabilizarse. Por ejemplo, el consumo de recursos de un servidor de aplicaciones que debe descargar y almacenar en caché activos de gran tamaño tarda más tiempo en estabilizarse que un servidor web ligero sin grandes recursos para descargar. La preparación de instancias proporciona el retraso de tiempo necesario para que se estabilice el consumo de recursos.

importante

Si no estás seguro del tiempo que necesitas para el tiempo de calentamiento, puedes empezar con 300 segundos. A continuación, redúzcalo o auméntelo gradualmente hasta obtener el mejor rendimiento de escalado para su aplicación. Puede que tengas que hacerlo varias veces para hacerlo bien. Como alternativa, si tienes alguna política de escalado que tenga su propio tiempo de calentamiento (EstimatedInstanceWarmup), puedes usar este valor para empezar. Para obtener más información, consulte Busca políticas de escalado con un tiempo de calentamiento de instancias previamente establecido.

Considere utilizar enlaces de ciclo de vida para casos de uso en los que tenga scripts o tareas de configuración para que se ejecuten en el inicio. Los enlaces de ciclo de vida pueden retrasar la puesta en servicio de las instancias nuevas hasta que hayan terminado de inicializarse. Resultan especialmente útiles si tiene scripts de arranque que tardan un poco en completarse. Si agrega un enlace de ciclo de vida, puede reducir el valor de la preparación predeterminada de instancias. Para obtener más información acerca del uso de enlaces de ciclo de vida, consulte Enlaces de ciclo de vida de Amazon EC2 Auto Scaling.

Habilitación de la preparación predeterminada de instancias para un grupo

Puede habilitar la preparación predeterminada de instancias cuando cree un grupo de escalado automático. También puede habilitarla para grupos existentes.

Al habilitar la función de calentamiento de instancias predeterminada, ya no es necesario especificar valores para los parámetros de calentamiento de las siguientes funciones:

Console
Para habilitar la preparación predeterminada de instancias para un nuevo grupo (consola)

Al crear el grupo de escalado automático, en la página Configure advanced options (Configurar las opciones avanzadas), en Additional settings (Configuración adicional), seleccione la opción Enable default instance warmup (Habilitar preparación predeterminada de instancias). Elija el tiempo de calentamiento que necesita para su aplicación.

AWS CLI
Para habilitar la preparación predeterminada de instancias para un nuevo grupo (AWS CLI)

Para habilitar la preparación predeterminada de instancias para un grupo de escalado automático, agregue la opción --default-instance-warmup y especifique un valor, en segundos, de 0 a 3600. Una vez habilitada, un valor de -1 desactivará esta configuración.

El siguiente create-auto-scaling-groupcomando crea un grupo de Auto Scaling con el nombre my-asg y habilita el calentamiento de instancias predeterminado con un valor de 120 segundos.

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120 ...
sugerencia

Si este comando arroja un error, asegúrate de haber actualizado la versión AWS CLI local a la última versión.

Console
Para habilitar la preparación predeterminada de instancias para un grupo existente (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ó el grupo de escalado automático.

  3. Seleccione la casilla situada junto al grupo de escalado automático.

    Se abre un panel dividido en la parte inferior de la página.

  4. En la pestaña Details (Detalles) elija (Advanced configurations) Configuraciones avanzadas, Edit (Editar).

  5. En el modo de calentamiento de instancias predeterminado, elige el tiempo de calentamiento que necesitas para tu aplicación.

  6. Elija Actualizar.

AWS CLI
Para habilitar la preparación predeterminada de instancias para un grupo existente (AWS CLI)

El siguiente ejemplo usa el update-auto-scaling-groupcomando para habilitar el calentamiento de instancias predeterminado con un valor de 120 segundos para un grupo de Auto Scaling existente denominado my-asg.

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120
sugerencia

Si este comando arroja un error, asegúrate de haber actualizado la versión AWS CLI local a la última versión.

Verificación de la preparación predeterminada de instancias para un grupo

Para verificar la preparación predeterminada de instancias para un grupo de escalado automático (AWS CLI)

Use el siguiente comando describe-auto-scaling-groups. Reemplace my-asg por el nombre de su grupo de escalado automático.

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

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

{ "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", ... "DefaultInstanceWarmup": 120 } ] }

Busca políticas de escalado con un tiempo de calentamiento de instancias previamente establecido

Para identificar si tienes políticas que tienen su propio tiempo de calentamientoEstimatedInstanceWarmup, ejecuta el siguiente comando describe-policies con. AWS CLI Reemplace my-asg por el nombre de su grupo de escalado automático.

aws autoscaling describe-policies --auto-scaling-group-name my-asg --query 'ScalingPolicies[?EstimatedInstanceWarmup!=`null`]'

A continuación, se muestra un ejemplo del resultado.

[ { "AutoScalingGroupName":"my-asg", "PolicyName":"cpu50-target-tracking-scaling-policy", "PolicyARN":"arn", "PolicyType":"TargetTrackingScaling", "StepAdjustments":[], "EstimatedInstanceWarmup":120, "Alarms":[{ "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" }], "TargetTrackingConfiguration":{ "PredefinedMetricSpecification":{ "PredefinedMetricType":"ASGAverageCPUUtilization" }, "TargetValue":50.0, "DisableScaleIn":false }, "Enabled":true }, ... additional policies ... ]

Borrar la preparación de instancias previamente establecida para una política de escalado

Tras habilitar el calentamiento de instancias predeterminado, actualiza las políticas de escalado que aún tengan su propio tiempo de calentamiento para borrar el valor establecido anteriormente. De lo contrario, anulará la preparación de instancias predeterminada.

Puede actualizar las políticas de escalado mediante la consola o los SDK. AWS CLI AWS En esta sección se describen los pasos de la consola. Si utiliza los AWS SDK AWS CLI o los SDK, asegúrese de conservar la configuración de políticas existente, pero elimine la EstimatedInstanceWarmup propiedad. Cuando actualice una política de escalado existente, la política se sustituirá por la que especifique al realizar la llamada mediante programación. PutScalingPolicy Los valores originales no se conservan.

Para borrar la preparación de instancias establecida anteriormente para una política de escalado (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. Seleccione la casilla situada junto al grupo de escalado automático.

    Se abre un panel dividido en la parte inferior de la página.

  3. En la pestaña Escalado automático, en Políticas de escalado dinámico, elija la política que le interese y, a continuación, seleccione Acciones y Editar.

  4. En Instance Warmup, borre el valor de calentamiento de instancias para usar en su lugar el valor de calentamiento de instancias predeterminado.

  5. Elija Actualizar.