Políticas de escalado de seguimiento de destino para Amazon EC2 Auto Scaling - 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.

Políticas de escalado de seguimiento de destino para Amazon EC2 Auto Scaling

Una política de escalado de seguimiento de objetivos escala automáticamente la capacidad de su grupo de Auto Scaling en función de un valor métrico objetivo. Esto permite que su aplicación mantenga un rendimiento y una rentabilidad óptimos sin intervención manual.

Con el seguimiento de objetivo, seleccione una métrica y un valor objetivo para representar el nivel ideal de utilización promedio o rendimiento para su aplicación. Amazon EC2 Auto Scaling crea y administra las CloudWatch alarmas que invocan eventos de escalado cuando la métrica se desvía del objetivo. Por ejemplo, esto es similar a la forma en que un termostato mantiene una temperatura objetivo.

Por ejemplo, supongamos que tiene una aplicación web que actualmente se pone en marcha en dos instancias y desea que la utilización de CPU del grupo de escalado automático permanezca en torno al 50 % cuando cambie la carga en la aplicación. De este modo dispone de capacidad adicional para gestionar picos de tráfico sin mantener una cantidad excesiva de recursos inactivos.

Puede satisfacer esta necesidad mediante la creación de una política de escalado de seguimiento de destino que tenga como destino una utilización media de CPU del 50 por ciento. Luego, su grupo de Auto Scaling se ampliará o aumentará la capacidad cuando la CPU supere el 50 por ciento para gestionar el aumento de carga. Se ampliará o disminuirá la capacidad cuando la CPU caiga por debajo del 50 por ciento para optimizar los costos durante los períodos de baja utilización.

Políticas de escalado de seguimiento de destino

Puede tener varias políticas de escalado de seguimiento de destino juntas que le ayuden a optimizar su rendimiento, siempre que cada una de ellas use una métrica diferente. Por ejemplo, la utilización y el rendimiento pueden influir mutuamente. Cada vez que una de estas métricas cambia, normalmente implica que otras métricas también se verán afectadas. Por lo tanto, el uso de varias métricas proporciona información adicional sobre la carga a la que está sometido su grupo de Auto Scaling. Esto puede ayudar a Amazon EC2 Auto Scaling a tomar decisiones más informadas a la hora de determinar cuánta capacidad añadir a su grupo.

La intención de Amazon EC2 Auto Scaling es priorizar siempre la disponibilidad. Ampliará el grupo de Auto Scaling si alguna de las políticas de seguimiento de objetivos está lista para ampliarse. Solo se ampliará si todas las políticas de seguimiento de objetivos (con la parte de escalamiento interno habilitada) están preparadas para ampliarse.

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 siguiente lista de métricas predefinidas:

  • ASGAverageCPUUtilization: promedio de utilización de la CPU del grupo de escalado automático.

  • ASGAverageNetworkIn: número promedio de bytes recibidos por una sola instancia en todas las interfaces de red.

  • ASGAverageNetworkOut: número promedio de bytes enviados de una sola instancia en todas las interfaces de red.

  • ALBRequestCountPerTarget: recuento de solicitudes del equilibrador de carga de aplicación por destino.

importante

Encontrará más información valiosa sobre las métricas de uso de la CPU, E/S de red y recuento de solicitudes de Application Load Balancer por destino en el tema Enumere las métricas CloudWatch disponibles para sus instancias de la Guía del usuario de Amazon EC2 para instancias de Linux y las métricas de su Application Load Balancer de CloudWatch la Guía del usuario de Application Load Balancers, respectivamente.

Puede elegir otras CloudWatch métricas disponibles o las suyas propias especificando una métrica personalizada CloudWatch . Debes usar el AWS CLI o un SDK para crear una política de seguimiento de objetivos con una especificación de métrica personalizada. Para ver un ejemplo que especifique una especificación de métrica personalizada para una política de escalado de seguimiento de objetivos mediante el AWS CLI, consultePolíticas de escalado de ejemplo de la AWS Command Line Interface (AWS CLI).

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

  • Le recomendamos que solo 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. Para obtener información sobre cómo habilitar la supervisión detallada, consulte Configuración de la supervisión para instancias de Auto Scaling.

  • 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 una instancia. El valor de la métrica debe aumentar o disminuir proporcionalmente al número de instancias del grupo de escalado automático. De esta forma, los datos de las métricas se pueden utilizar para ampliar o reducir proporcionalmente el número de instancias. Por ejemplo, la utilización de la CPU de un grupo de escalado automático (es decir, la métrica CPUUtilization de Amazon EC2 con la dimensión de métrica AutoScalingGroupName) funciona si la carga del grupo de escalado automático se distribuye entre las instancias.

  • Las siguientes métricas no sirven para hacer un seguimiento de destino:

    • El número de solicitudes recibidas por el balanceador de carga frente al grupo de escalado automático (es decir, la métrica Elastic Load Balancing de RequestCount). El número de solicitudes recibidas por el balanceador de carga no cambia en función de la utilización del grupo de escalado automático.

    • La latencia de las solicitudes del balanceador de carga (es decir, la métrica Latency de Elastic Load Balancing). La latencia de las solicitudes puede aumentar si lo hace la utilización, pero el cambio no tiene que ser necesariamente proporcional.

    • La métrica CloudWatch de colas de Amazon SQS. ApproximateNumberOfMessagesVisible El número de mensajes de una cola no tiene por qué cambiar en proporción al tamaño del grupo de escalado automático que procesa los mensajes de la cola. Sin embargo, puede que funcione una métrica personalizada que mida el número de mensajes de la cola por instancia de EC2 en el grupo de escalado automático. Para obtener más información, consulte Escalado basado en Amazon SQS.

  • Para utilizar la métrica ALBRequestCountPerTarget, debe especificar el parámetro ResourceLabel para identificar el grupo de destino del balanceador de carga asociado a la métrica. Para ver un ejemplo que especifique el ResourceLabel parámetro de una política de escalado de seguimiento de objetivos mediante el AWS CLI, consulte. Políticas de escalado de ejemplo de la AWS Command Line Interface (AWS CLI)

  • Cuando una métrica emite valores 0 reales a CloudWatch (por ejemplo,ALBRequestCountPerTarget), un grupo de Auto Scaling puede escalar a 0 cuando no haya tráfico en su aplicación durante un período prolongado de tiempo. Para que el grupo de escalado automático se reduzca horizontalmente a 0 cuando no se envíen solicitudes, la capacidad mínima del grupo debe ser de 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 Amazon EC2 Auto Scaling con la calculadora de métricas.

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 objetivo representa la utilización o el rendimiento promedio óptimo para el grupo de escalado automático. 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 instancia, para un periodo de un minuto.

Defina el tiempo de calentamiento de la instancia

Puede especificar el número de segundos que se tarda en preparar una instancia recién lanzada. Hasta que haya expirado el tiempo de calentamiento especificado, una instancia no se cuenta para las métricas agregadas de instancias de EC2 del grupo Auto Scaling.

Mientras las instancias se encuentran en el período de calentamiento, sus políticas de escalado solo se amplían si el valor de la métrica de las instancias que no se están calentando es superior al uso objetivo de la política.

Si el grupo se vuelve a escalar horizontalmente, las instancias que aún estén en preparación se considerarán parte de la capacidad deseada para la siguiente actividad de escalado horizontal. La intención es realizar continuamente (pero no excesivamente) un escalado ascendente.

Mientras la actividad de escalado horizontal está en curso, todas las actividades de reducción horizontal iniciadas por las políticas de escalado se bloquean hasta que las instancias terminen de prepararse. Cuando las instancias terminen de prepararse, si se produce un evento de reducción horizontal, cualquier instancia que se encuentre actualmente en proceso de terminación se tendrá en cuenta para la capacidad actual del grupo al calcular la nueva capacidad deseada. Por lo tanto, no se eliminan más instancias del grupo de Auto Scaling que las necesarias.

Valor predeterminado

Si no se establece ningún valor, la política de escalado utilizará el valor predeterminado, que es el valor del calentamiento de instancias predeterminado definido para el grupo. Si el calentamiento de instancias predeterminado es nulo, volverá al valor del enfriamiento predeterminado. Recomendamos usar el calentamiento de instancias predeterminado para facilitar la actualización de todas las políticas de escalado cuando cambie el tiempo de calentamiento.

Consideraciones

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

  • No cree, edite ni elimine las CloudWatch alarmas que se utilizan con una política de escalado de seguimiento de Target. Amazon EC2 Auto Scaling crea y administra las CloudWatch alarmas asociadas a sus políticas de escalado de seguimiento de objetivos y las elimina cuando ya no son necesarias.

  • Una política de escalado de seguimiento de objetivos prioriza la disponibilidad durante los períodos de niveles de tráfico fluctuantes al reducir horizontalmente de forma más gradual cuando el tráfico disminuye. Si desea que su grupo de escalado automático se reduzca horizontalmente inmediatamente cuando finalice una carga de trabajo, puede desactivar la parte de reducir horizontalmente de la política. Esto le proporciona la flexibilidad para usar el método de reducción horizontal que mejor satisfagan sus necesidades cuando la utilización sea baja. Para garantizar que la reducción horizontal se realice lo más rápido posible, recomendamos no utilizar una política de escalado simple para evitar que se agregue un periodo de recuperación.

  • Si a la métrica le faltan puntos de datos, el estado de la CloudWatch alarma cambia a. INSUFFICIENT_DATA Cuando esto ocurre, Amazon EC2 Auto Scaling no puede escalar su grupo hasta que se encuentren nuevos puntos de datos.

  • 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 actuamos de forma conservadora redondeando hacia arriba o hacia abajo a la hora de determinar el número de instancias que se deben agregar o quitar. Esto impide que agreguemos un número insuficiente de instancias o eliminemos demasiadas. Sin embargo, en el caso de los grupos de Auto Scaling que son más pequeños y tienen menos instancias, la utilización del grupo puede parecer que está muy lejos del valor de destino. Por ejemplo, supongamos se establece un valor de destino del 50 por ciento de utilización de la CPU y el grupo de escalado automático lo supera. Es posible determinar que la adición de 1,5 instancias disminuirá la utilización de la CPU hasta aproximadamente el 50 por ciento. Como no es posible agregar 1,5 instancias, redondeamos hacia arriba y añadimos dos instancias. Esto podría reducir la utilización de la CPU a un valor inferior al 50 por ciento, pero garantizaría que la aplicación cuenta con los recursos suficientes. Del mismo modo, si determinamos que, en caso de que se eliminen 1,5 instancias, la utilización de la CPU podría aumentar por encima del 50 por ciento, eliminamos una sola instancia.

    En el caso de grupos de Auto Scaling más grandes con más instancias, la utilización se distribuye entre un número de instancias mayor, en cuyo caso, si se agregan o quitan instancias, la diferencia entre el valor de destino y los puntos de datos de la métrica real es menor.

  • En las políticas de escalado de seguimiento de destino, se presupone que el grupo de escalado automático debe escalarse horizontalmente cuando la métrica especificada está por encima del valor de destino. Las políticas de escalado de seguimiento de destino no pueden utilizarse para escalar horizontalmente el grupo de escalado automático si la métrica está por debajo del valor de destino.

Creación de una política de escalado de seguimiento de destino

Para crear una política de escalado de seguimiento de objetivos para su grupo de Auto Scaling, utilice uno de los siguientes métodos.

Antes de empezar, confirme que su métrica preferida esté disponible en intervalos de 1 minuto (en comparación con el intervalo de 5 minutos predeterminado de las métricas de Amazon EC2).

Console
Para crear una política de escalado de seguimiento de destino para un nuevo grupo de escalado automático
  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. Elija Create Auto Scaling group (Crear grupo de escalado automático).

  3. En los pasos 1, 2 y 3, elija las opciones que desee y continúe en el Paso 4: Configurar el tamaño del grupo y las políticas de escalado.

  4. En Escalado, especifique el rango entre el que desea escalar actualizando la Capacidad deseada mínima y la Capacidad deseada máxima. Estas dos configuraciones permiten escalar dinámicamente el grupo de escalado automático. Para obtener más información, consulte Establecimiento de límites de escalado para el grupo de escalado automático.

  5. En Escalado automático, elija Política de escalado de seguimiento de destino.

  6. Para definir una política, haga lo siguiente:

    1. Especifique un nombre para la política.

    2. En Tipo de métrica, elija una métrica.

      Si eligió Application Load Balancer request count per target (Recuento de solicitudes de Application Load Balancer por destino), elija un grupo de destino en Target group (Grupo de destino).

    3. Especifique un valor de destino para la métrica en Target value.

    4. (Opcional) Para el calentamiento de instancias, actualice el valor de calentamiento de instancias según sea necesario.

    5. (Opcional) Seleccione Deshabilitar la reducción horizontal para crear solo una política de escalado horizontal. De este modo, si lo desea, puede crear por separado una política de reducción horizontal de otro tipo.

  7. Proceda a crear el grupo de Auto Scaling. La política de escalado se creará después de que se haya creado el grupo de escalado automático.

Para crear una política de escalado de seguimiento de destino para un grupo de escalado automático existente
  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. Verifique que los límites de escalado estén establecidos correctamente. Por ejemplo, si la capacidad deseada de su grupo ya tiene el tamaño máximo, necesita especificar un nuevo máximo de escalado horizontal. Para obtener más información, consulte Establecimiento de límites de escalado para el grupo de escalado automático.

  4. En la pestaña Automatic scaling (Escalado automático), en Dynamic scaling policies (Políticas de escalado dinámico), elija Create dynamic scaling policy (Crear política de escalado dinámico).

  5. Para definir una política, haga lo siguiente:

    1. En Tipo de política, mantenga el valor predeterminado de Escalado de seguimiento de destino.

    2. Especifique un nombre para la política.

    3. En Tipo de métrica, elija una métrica. Solo puede elegir un tipo de métrica. Para utilizar más de una métrica, cree varias políticas.

      Si eligió Application Load Balancer request count per target (Recuento de solicitudes de Application Load Balancer por destino), elija un grupo de destino en Target group (Grupo de destino).

    4. Especifique un valor de destino para la métrica en Target value.

    5. (Opcional) Para el calentamiento de instancias, actualiza el valor de calentamiento de instancias según sea necesario.

    6. (Opcional) Seleccione Deshabilitar la reducción horizontal para crear solo una política de escalado horizontal. De este modo, si lo desea, puede crear por separado una política de reducción horizontal de otro tipo.

  6. Seleccione Crear.

AWS CLI

Para crear una política de escalado y seguimiento de objetivos, puedes usar el siguiente ejemplo como ayuda para empezar. Reemplace cada marcador de posición de entrada del usuario con información propia.

Para crear una política de escalado de seguimiento de destino (AWS CLI)
  1. Usa el siguiente cat comando para almacenar un valor objetivo para tu política de escalado y una especificación métrica predefinida en un archivo JSON nombrado config.json en tu directorio principal. El siguiente es un ejemplo de configuración de seguimiento de objetivos que mantiene la utilización media de la CPU en un 50 por ciento.

    $ cat ~/config.json { "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ASGAverageCPUUtilization" } }

    Para obtener más información, consulte la PredefinedMetricSpecificationreferencia de la API Auto Scaling de Amazon EC2.

  2. Utilice el put-scaling-policycomando, junto con el config.json archivo que creó en el paso anterior, para crear su política de escalado.

    aws autoscaling put-scaling-policy --policy-name cpu50-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://config.json

    Si se ejecuta correctamente, este comando devuelve los ARN y los nombres de las dos CloudWatch alarmas creadas en su nombre.

    { "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/cpu50-target-tracking-scaling-policy", "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" } ] }