Cómo funciona el escalado de seguimiento de destino para Application Auto Scaling - Aplicación de escalado automático

Cómo funciona el escalado de seguimiento de destino para Application Auto Scaling

En este tema se describe cómo funciona el escalado de seguimiento y se presentan los conceptos clave de una política de seguimiento de destino.

Funcionamiento

Para usar un escalado de seguimiento de destino, debe crear una política de escalado de seguimiento de destino y especificar lo siguiente:

  • Métrica: una métrica de CloudWatch que se debe rastrear, como el uso promedio de la CPU o el recuento promedio de solicitudes por objetivo.

  • Valor objetivo: el valor objetivo de la métrica, como el 50 por ciento de uso de la CPU o 1000 solicitudes por objetivo por minuto.

Auto Scaling de aplicaciones crea y administra las alarmas de CloudWatch que invocan la política de escalado y calcula el ajuste de escalado según la métrica y el valor de destino. Amplía y reduce la capacidad en función de las necesidades para mantener la métrica en el valor objetivo especificado o en un valor próximo.

Cuando la métrica está por encima del valor objetivo, Auto Scaling de aplicaciones se amplía añadiendo capacidad para reducir la diferencia entre el valor de la métrica y el valor objetivo. Cuando la métrica está por debajo del valor objetivo, Auto Scaling de aplicaciones se amplía al eliminar la capacidad.

Las actividades de escalado se realizan con periodos de recuperación entre ellos para evitar fluctuaciones rápidas de la capacidad. Si lo desea, puede configurar los periodos de recuperación para su política de escalado.

En el siguiente diagrama se muestra información general de cómo funciona una política de escalado de seguimiento de destino cuando se completa la configuración.

Diagrama general de una política de escalado de seguimiento de destino

Tenga en cuenta que la política de escalado de seguimiento de destino es más agresiva a la hora de agregar capacidad cuando la utilización aumenta que a la hora de eliminar la capacidad cuando la utilización disminuye. Por ejemplo, si la métrica especificada de la política alcanza su valor objetivo, la política supone que la aplicación ya está muy cargada. Por lo tanto, responde agregando capacidad proporcional al valor de métrica lo más rápido posible. Cuanto mayor sea la métrica, mayor será la capacidad agregada.

Cuando la métrica cae por debajo del valor objetivo, la política espera que vuelva a aumentar la utilización. En este caso, ralentiza el escalado al eliminar la capacidad solo cuando el uso supera un umbral que está lo suficientemente por debajo del valor de destino (generalmente más del 10 % menos) para que se considere que se ha ralentizado el uso. La intención de este comportamiento más conservador es garantizar que la eliminación de capacidad solo se produzca cuando la aplicación ya no tenga demanda al mismo nivel alto que antes.

Elección de métricas

Puede crear políticas de escalado de seguimiento de destino con métricas predefinidas o personalizadas.

Al crear una política de escalado de seguimiento de destino con un tipo de métrica predefinido, debe elegir una métrica de la lista de métricas predefinidas en Métricas predefinidas para políticas de escalado de seguimiento de destino.

Tenga en cuenta las siguientes consideraciones al elegir una métrica:

  • No todas las métricas personalizadas funcionan para el seguimiento de destino. La métrica debe ser una métrica de utilización válida y describir el nivel de actividad de un destino escalable. El valor de la métrica debe aumentar o disminuir proporcionalmente a la capacidad del destino escalable, de forma que los datos de la métrica se puedan utilizar para escalar proporcionalmente el destino escalable.

  • Para utilizar la métrica ALBRequestCountPerTarget, debe especificar el parámetro ResourceLabel para identificar el grupo de destino asociado con la métrica.

  • Cuando una métrica emite valores reales 0 a CloudWatch (por ejemplo, ALBRequestCountPerTarget), Auto Scaling de aplicaciones puede reducir horizontalmente a 0 cuando no hay tráfico a la aplicación por un periodo de tiempo prolongado. Para que su objetivo escalable se reduzca horizontalmente a 0 cuando no se enrutan solicitudes,, la capacidad mínima del objetivo escalable debe establecerse a 0.

  • En lugar de publicar métricas nuevas para utilizarlas en su política de escalado, puede utilizar la matemáticas métricas para combinar las métricas existentes. Para obtener más información, consulte Creación de una política de escalado de seguimiento de destino para Application Auto Scaling con la calculadora de métricas.

  • Para ver si un servicio que esté utilizando admite la especificación de métricas personalizadas en la consola del servicio, consulte la documentación correspondiente a dicho servicio.

  • Le recomendamos que utilice métricas que estén disponibles en intervalos de un minuto para ayudarlo a escalar más rápido en respuesta a los cambios de uso. El seguimiento de objetivos evaluará las métricas agregadas con un grado de detalle de un minuto para todas las métricas predefinidas y personalizadas, pero es posible que la métrica subyacente publique datos con menos frecuencia. Por ejemplo, todas las métricas de Amazon EC2 se envían en intervalos de cinco minutos de forma predeterminada, pero se pueden configurar en un minuto (lo que se conoce como monitoreo detallado). Esta elección depende de los servicios individuales. La mayoría trata de utilizar el intervalo más corto posible.

Definición del valor de destino

Al crear una política de escalado de seguimiento de destino, debe especificar un valor de destino. El valor de destino representa el uso o el rendimiento promedio óptimo para su aplicación. Para usar los recursos de manera rentable, establezca el valor objetivo lo más alto posible con un búfer razonable para aumentos inesperados de tráfico. Cuando la aplicación se escala horizontalmente de manera óptima para un flujo de tráfico normal, el valor de la métrica real debe ser igual al valor de destino, o estar justo por debajo de él.

Cuando una política de escalado se basa en el rendimiento, como el recuento de solicitudes por objetivo para un equilibrador de carga de aplicación, E/S de red u otras métricas de recuento, el valor objetivo representa el rendimiento promedio óptimo de una sola entidad (por ejemplo, un único objetivo del grupo objetivo del equilibrador de carga de aplicación), para un periodo de un minuto.

Defina los periodos de recuperación

Si lo desea, puede definir periodos de recuperación en su política de escalado de seguimiento de destinos.

Un periodo de recuperación especifica la cantidad de tiempo que la política de escalado espera a que una actividad de escalado anterior surta efecto.

Existen dos tipos de periodos de recuperación:

  • Con el periodo de recuperación de escalado ascendente, la intención es efectuar un escalo ascendente de forma continua (pero no excesivamente). Después de que Application Auto Scaling efectúe de forma correcta el escalado horizontal con una política de escalado, comienza a calcular el tiempo de recuperación. Una política de escalado no volverá a aumentar la capacidad deseada a menos que se desencadene un escalado horizontal mayor o finalice el periodo de recuperación. Mientras el periodo de recuperación del escalado ascendente esté en vigor, la capacidad agregada por la actividad inicial de escalado ascendente se considerará parte de la capacidad deseada para la siguiente actividad de escalado ascendente.

  • Con el periodo de recuperación de reducción horizontal, la intención es reducir horizontalmente con precaución para proteger la disponibilidad de la aplicación, de modo que las actividades de reducir horizontalmente se bloqueen hasta que haya transcurrido el periodo de recuperación de reducción horizontal. No obstante, si otra alarma desencadena una actividad de escalado ascendente durante el periodo de recuperación de escalado descendente, Application Auto Scaling realiza inmediatamente un escalado ascendente del destino. En este caso, el periodo de recuperación de la reducción horizontal se detiene y no se completa.

Cada periodo de recuperación se mide en segundos y solo se aplica a las actividades de escalado relacionadas con políticas de escalado. Durante un periodo de recuperación, cuando una acción programada comienza a la hora programada, puede desencadenar una actividad de escalado inmediatamente sin esperar a que finalice el periodo de recuperación.

Puede comenzar con los valores predeterminados, que se pueden ajustar más adelante. Por ejemplo, es posible que deba aumentar un periodo de recuperación para evitar que la política de escalado de seguimiento de destino sea demasiado agresiva con respecto a los cambios que se producen en cortos periodos de tiempo.

Valores predeterminados

Application Auto Scaling proporciona un valor predeterminado de 600 para los grupos de replicación de ElastiCache y un valor predeterminado de 300 para los siguientes destinos escalables:

  • Flotas AppStream 2.0

  • Clústeres de base de datos de Aurora

  • Servicios de ECS

  • Clústeres de Neptune

  • Variantes de puntos de enlace de SageMaker

  • Componentes de inferencia de SageMaker

  • Simultaneidad aprovisionada sin servidor de SageMaker

  • Spot Fleets

  • Grupo de WorkSpaces

  • Recursos personalizados

Para todos los demás destinos escalables, el valor predeterminado es 0 o nulo:

  • Puntos de conexión de reconocedor de identidades y clasificación de documentos de Amazon Comprehend

  • Tablas de DynamoDB e índices secundarios globales

  • Tablas de Amazon Keyspaces

  • Simultaneidad aprovisionada de Lambda

  • Almacenamiento de bróker de Amazon MSK

Los valores nulos se tratan igual que los valores cero cuando Application Auto Scaling evalúa el periodo de recuperación.

Puede actualizar cualquiera de los valores predeterminados, incluidos los valores nulos, para establecer sus propios periodos de recuperación.

Consideraciones

Las siguientes consideraciones se aplican al trabajar con las políticas de escalado de seguimiento de destino:

  • No cree, modifique ni elimine las alarmas de CloudWatch que se usan con la política de escalado de seguimiento de destino. Application Auto Scaling crea y administra las alarmas de CloudWatch asociadas a las políticas de escalado de seguimiento de destino y se eliminan automáticamente cuando ya no se necesitan.

  • Si faltan puntos de datos en la métrica, el estado de alarma de CloudWatch cambia a INSUFFICIENT_DATA. Cuando esto ocurre, Application Auto Scaling no puede escalar su objetivo escalable hasta que se encuentren nuevos puntos de datos. Para obtener más información, consulte Configuración de cómo las alarmas de CloudWatch tratan los datos faltantes en la Guía del usuario de Amazon CloudWatch.

  • Si la métrica se presenta de forma dispersa por diseño, las matemáticas métricas pueden resultar útiles. Por ejemplo, para usar los valores más recientes, utilice la función FILL(m1,REPEAT), donde m1 es la métrica.

  • Es posible que haya diferencias entre el valor objetivo y los puntos de datos de la métrica real. Esto se debe a que Auto Scaling de aplicaciones siempre actúa de forma conservadora y redondea hacia arriba o hacia abajo a la hora de determinar la cantidad de capacidad que debe agregar o quitar. Con esto se evita que se agrega capacidad insuficiente o se elimine demasiada capacidad. Sin embargo, en el caso de un destino escalable con poca capacidad, podría parecer que los puntos de datos de la métrica están muy alejados del valor objetivo.

    En el caso de un destino escalable con mayor capacidad, cuando se agrega o elimina capacidad, la diferencia entre el valor de destino y los datos reales de la métrica es menor.

  • En las políticas de escalado de seguimiento de destino, se presupone que el escalado ascendente se realiza cuando la métrica está por encima del valor objetivo. No puede utilizar una política de escalado de seguimiento de destino si la métrica especificada está por debajo del valor objetivo.

Políticas de escalado múltiples

Puede tener varias políticas de escalado de seguimiento de destino para un destino escalable, siempre que cada una de ellas utilice una métrica diferente. El objetivo de Auto Scaling de aplicaciones siempre es dar prioridad a la disponibilidad, por lo que su comportamiento varía en rol de si las políticas de seguimiento de destino están listas para el escalado horizontal o reducción horizontal. Realizará un escalado ascendente del destino escalable si cualquiera de las políticas de seguimiento de destino está lista para el escalado ascendente, pero solo realizará el escalado descendente si todas las políticas de seguimiento de destino (que tienen la parte de escalado descendente habilitada) están listas para el escalado descendente.

Si varias políticas de escalado indican al destino escalable que escale horizontalmente o reduzca horizontalmente al mismo tiempo, Auto Scaling de aplicaciones se escala en función de la política que proporciona la mayor capacidad para escalar horizontalmente y reducir horizontalmente Esto brinda una mayor flexibilidad para abordar diferentes situaciones y garantizar que siempre haya capacidad suficiente para procesar las cargas de trabajo.

Puede deshabilitar la parte de reducción horizontal de una política de escado de seguimiento de destino para utilizar un método para reducir horizontalmente diferente al que utiliza para escalar horizontalmente. Por ejemplo, puede utilizar una política de escalado por pasos para el escalado descendente mientras utiliza una política de escalado de seguimiento de destino para el escalado ascendente.

Sin embargo, recomendamos precaución al utilizar políticas de escalado de seguimiento de destino con políticas de escalado por pasos, ya que los conflictos entre estas políticas pueden provocar un comportamiento no deseado. Por ejemplo, si la política de escalado por pasos inicia una actividad de reducción horizontal antes de que la política de seguimiento de destino esté lista para la reducción horizontal, la actividad de reducción horizontal no se bloqueará. Una vez completada la actividad de escalado descendente, la política de seguimiento de destino podría indicar al destino escalable que vuelva a realizar el escalado ascendente.

Para las cargas de trabajo de naturaleza cíclica, también tiene la opción de automatizar los cambios de capacidad según una programación mediante escalado programado. Para cada acción programada, se pueden definir un nuevo valor mínimo de capacidad y otro nuevo máximo. Estos valores constituyen los límites de la política de escalado. La combinación de escalado programado y escalado de seguimiento de destino puede contribuir a reducir el impacto de un fuerte aumento de los niveles de utilización, cuando se necesita capacidad inmediatamente.

Comandos de uso frecuente para la creación, administración y eliminación de políticas de escalado

Los comandos comúnmente utilizados para trabajar con políticas de escalado incluyen:

  • register-scalable-target para registrar AWS o recursos personalizados como destinos escalables (un recurso que Auto Scaling de aplicaciones puede escalar) y para suspender y reanudar el escalado.

  • put-scaling-policy para agregar o modificar políticas de escalado para un destino escalable existente.

  • describe-scaling-activities para devolver información sobre las actividades de escalado en una región de AWS.

  • describe-scaling-policies para devolver información sobre las políticas de escalado en una región de AWS.

  • delete-scaling-policy para eliminar una política de escalado.

Para obtener más información sobre cómo crear políticas de escalado de seguimiento de destino para grupos de Auto Scaling, consulte Políticas de escalado de seguimiento de destino para Amazon EC2 Auto Scaling en la Guía de usuario de Amazon EC2 Auto Scaling.

Limitaciones

Las siguientes son limitaciones al usar la política de escalado de seguimiento de destino:

  • El destino escalable no puede ser un clúster de Amazon EMR. Las políticas de escalado de seguimiento de destino no son compatible con Amazon EMR.

  • Cuando un clúster de Amazon MSK es el destino escalable, reducir horizontalmente se desactiva y no se puede habilitar.

  • No puede utilizar las operaciones de la API RegisterScalableTarget o PutScalingPolicy para actualizar un plan de escalado de AWS Auto Scaling.

  • El acceso a la consola para ver, agregar, actualizar o eliminar políticas de escalado de seguimiento de destino en recursos escalables depende del recurso que utilice. Para obtener más información, consulte Servicios de AWS que puede utilizar con Application Auto Scaling.