Tutorial: configuración del escalado automático para manejar una carga de trabajo pesada - Aplicación de escalado automático

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.

Tutorial: configuración del escalado automático para manejar una carga de trabajo pesada

importante

Antes de explorar este tutorial, lo recomendamos que consulte el siguiente tutorial de introducción: Tutorial: introducción al escalado programado con la AWS CLI.

En este tutorial, aprenderá a escalar horizontalmente y en función de las ventanas de tiempo en las que la aplicación tendrá una carga de trabajo más pesada que la normal. Esto es útil cuando se tiene una aplicación que de repente puede tener un gran número de visitantes en un horario regular o en una base estacional.

Puede utilizar una política de escalado de seguimiento de destino junto con escalado programado para gestionar la carga adicional. El escalado programado inicia automáticamente los cambios en su MinCapacity y MaxCapacity en su nombre, en función de una programación que especifique. Cuando una política de escalado de seguimiento de destino está activa en el recurso, puede escalar dinámicamente en función de la utilización actual de recursos, dentro del nuevo rango de capacidad mínimo y máximo.

Después de completar este tutorial, sabrá cómo:

  • Utilizar el escalado programado para agregar capacidad adicional para cubrir una carga pesada antes de que llegue y, a continuación, eliminar la capacidad adicional cuando ya no sea necesaria.

  • Utilice una política de escalado de seguimiento de destino para escalar la aplicación en función del uso de recurso actual.

Requisitos previos

Este tutorial presupone que ya ha realizado las siguientes acciones:

nota

Mientras completa este tutorial, hay dos pasos en los que debe establecer los valores de capacidad mínima y máxima de su recurso en 0 para restablecer la capacidad actual en 0. Según el recurso que utilice con Application Auto Scaling, es posible que no pueda restablecer la capacidad actual en 0 a lo largo de estos pasos. Para ayudarlo a solucionar el problema, un mensaje en el resultado indicará que la capacidad mínima no puede ser inferior al valor especificado y proporcionará el valor de capacidad mínima que el recurso de AWS puede aceptar.

Paso 1: Registrar un onjetivo escalable

Para empezar a registrar el recurso como un destino escalable con Auto Scaling de aplicaciones. Un destino escalable es un recurso que se puede escalar horizontalmente o reducir horizontalmente con Auto Scaling de aplicaciones.

Para registrar un objetivo escalable con Auto Scaling de aplicaciones
  • Use el siguiente comando register-scalable-target para registrar un nuevo destino escalable. Establecimiento de los valores --min-capacity y --max-capacity a 0 para restablecer la capacidad actual a 0.

    Reemplace el texto de muestra de --service-namespace por el espacio de nombres del servicio de AWS que está usando con Application Auto Scaling, --scalable-dimension por la dimensión escalable asociada al recurso que está registrando y --resource-id por un identificador del recurso. Estos valores varían en función de qué recurso se utiliza y cómo se construye el ID del recurso. Consulte los temas en la sección AWS servicios que puede usar con Application Auto Scaling para obtener más información. Estos temas incluyen comandos de ejemplo que lo muestran cómo registrar objetivos escalables con Application Auto Scaling.

    Linux, macOS o Unix

    aws application-autoscaling register-scalable-target \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --min-capacity 0 --max-capacity 0

    Windows

    aws application-autoscaling register-scalable-target --service-namespace namespace --scalable-dimension dimension --resource-id identifier --min-capacity 0 --max-capacity 0

    Si se ejecuta correctamente, este comando devolverá el ARN del destino escalable.

    { "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }

Paso 2: Configuración de acciones programadas según sus requisitos

Puede utilizar el comando put-scheduled-action para crear acciones programadas configuradas para satisfacer sus necesidades empresariales. En este tutorial, nos centramos en una configuración que deja de consumir recursos fuera de las horas de trabajo reduciendo la capacidad a 0.

Para crear una acción programada que se escale horizontalmente por la mañana
  1. Para escalar horizontalmente el destino escalable, utilice el siguiente comando put-scheduled-action. Inclusión del parámetro --schedule con una programación periódica, en UTC, utilizando una expresión cron.

    Según la programación especificada (todos los días a las 9:00 horas UTC), Auto Scaling de aplicaciones actualiza los valores MinCapacity y MaxCapacity al rango deseado de 1-5 unidades de capacidad.

    Linux, macOS o Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-first-scheduled-action \ --schedule "cron(0 9 * * ? *)" \ --scalable-target-action MinCapacity=1,MaxCapacity=5

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-first-scheduled-action --schedule "cron(0 9 * * ? *)" --scalable-target-action MinCapacity=1,MaxCapacity=5

    Este comando no devuelve ningún resultado si se realiza correctamente.

  2. Para confirmar que la acción programada existe, utilice el siguiente comando describe-scheduled-actions.

    Linux, macOS o Unix

    aws application-autoscaling describe-scheduled-actions \ --service-namespace namespace \ --query 'ScheduledActions[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scheduled-actions --service-namespace namespace --query "ScheduledActions[?ResourceId==`identifier`]"

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

    [ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... } ]
Para crear una acción programada que se reduzca horizontalmente por la noche
  1. Repita el procedimiento anterior para crear otra acción programada que Auto Scaling de aplicaciones utiliza para reducir horizontalmente al final del día.

    Según la programación especificada (todos los días a las 20:00 horas UTC), Auto Scaling de aplicaciones actualiza el MinCapacity y MaxCapacity de destino a 0, según las instrucciones del siguiente comando put-scheduled-action.

    Linux, macOS o Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-second-scheduled-action \ --schedule "cron(0 20 * * ? *)" \ --scalable-target-action MinCapacity=0,MaxCapacity=0

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-second-scheduled-action --schedule "cron(0 20 * * ? *)" --scalable-target-action MinCapacity=0,MaxCapacity=0
  2. Para confirmar que la acción programada existe, utilice el siguiente comando describe-scheduled-actions.

    Linux, macOS o Unix

    aws application-autoscaling describe-scheduled-actions \ --service-namespace namespace \ --query 'ScheduledActions[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scheduled-actions --service-namespace namespace --query "ScheduledActions[?ResourceId==`identifier`]"

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

    [ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... }, { "ScheduledActionName": "my-second-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 20 * * ? *)", "ScalableTargetAction": { "MinCapacity": 0, "MaxCapacity": 0 }, ... } ]

Paso 3: Agregar una política de escalado de seguimiento de destino

Ahora que dispone de la programación básica, agregue una política de escalado de seguimiento de destino para escalar en rol de la utilización actual de recursos.

Con el seguimiento de destino, Auto Scaling de aplicaciones compara el valor de destino de la política con el valor actual de la métrica especificada. Cuando son desiguales durante un periodo de tiempo, Auto Scaling de aplicaciones agrega o elimina capacidad para mantener un rendimiento constante. A medida que aumenta la carga en la aplicación y el valor de la métrica, Auto Scaling de aplicaciones agrega capacidad lo más rápido posible sin pasar por encima MaxCapacity. Cuando Auto Scaling de aplicaciones elimina la capacidad porque la carga es mínima, lo hace sin ir por debajo MinCapacity. Ahora que dispone de la programación básica, agregue una política de escalado de seguimiento de destino para escalar en función de la utilización actual de recursos.

Si la métrica no tiene datos suficientes porque la aplicación no tiene ninguna carga, Auto Scaling de aplicaciones no agrega ni elimina capacidad. En otras palabras, Application Auto Scaling prioriza la disponibilidad en situaciones en las que no hay suficiente información disponible.

Puede agregar varias políticas de escalado, pero asegúrese de no agregar políticas de escalado de pasos conflictivos, lo que podría 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 reducir horizontalmente, la política de seguimiento de destino podría indicar a Auto Scaling de aplicaciones que vuelva a realizar el escalado horizontal.

Para crear una política de escalado de seguimiento de destino
  1. Utilice el siguiente comando put-scaling-policy para crear la política.

    Las métricas que se utilizan con mayor frecuencia para el seguimiento de destino están predefinidas y puede utilizarlas sin proporcionar la especificación de métrica completa de CloudWatch. Para obtener más información sobre las métricas predefinidas disponibles, consulte Políticas de escalado de seguimiento de destino.

    Antes de ejecutar este comando, asegúrese de que la métrica predefinida espera el valor de destino. Por ejemplo, para escalar horizontalmente cuando la CPU alcanza el 50 % de uso, especifique un valor de destino de 50.0. O bien, para escalar horizontalmente la concurrencia aprovisionada de Lambda cuando el uso alcanza un 70 % de utilización, especifique un valor de destino de 0.7. Para obtener información acerca de los valores de destino para un recurso concreto, consulte la documentación proporcionada por el servicio acerca de cómo configurar el seguimiento de destino. Para obtener más información, consulte AWS servicios que puede usar con Application Auto Scaling.

    Linux, macOS o Unix

    aws application-autoscaling put-scaling-policy \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --policy-name my-scaling-policy --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric" }}'

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace namespace --scalable-dimension dimension --resource-id identifier --policy-name my-scaling-policy --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration "{ \"TargetValue\": 50.0, \"PredefinedMetricSpecification\": { \"PredefinedMetricType\": \"predefinedmetric\" }}"

    Si tiene éxito, este comando devuelve los ARN y los nombres de las dos alarmas de CloudWatch que fueron creadas en su nombre.

  2. Para confirmar que la acción programada existe, utilice el siguiente comando describe-scaling-policies.

    Linux, macOS o Unix

    aws application-autoscaling describe-scaling-policies --service-namespace namespace \ --query 'ScalingPolicies[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scaling-policies --service-namespace namespace --query "ScalingPolicies[?ResourceId==`identifier`]"

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

    [ { "PolicyARN": "arn", "TargetTrackingScalingPolicyConfiguration": { "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric" }, "TargetValue": 50.0 }, "PolicyName": "my-scaling-policy", "PolicyType": "TargetTrackingScaling", "Alarms": [], ... } ]

Paso 4: Siguientes pasos

Cuando se produzca una actividad de escalado, verá un registro de ella en el resultado de las actividades de escalado para el objetivo escalable, por ejemplo:

Successfully set desired count to 1. Change successfully fulfilled by ecs.

Para supervisar las actividades de escalado con Application Auto Scaling, puede usar el comando describe-scaling-activities.

Linux, macOS o Unix

aws application-autoscaling describe-scaling-activities --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier

Windows

aws application-autoscaling describe-scaling-activities --service-namespace namespace --scalable-dimension dimension --resource-id identifier

Paso 5: eliminar

Para evitar que su cuenta acumule cargos por los recursos creados durante el escalado activo, puede limpiar la configuración de escalado asociada como se indica a continuación.

Eliminar la configuración de escalado no elimina el recurso subyacente de AWS. Tampoco lo devuelve a su capacidad original. Puede usar la consola del servicio donde creó el recurso para eliminarlo o ajustar su capacidad.

Eliminar las acciones programadas

El siguiente comando delete-scheduled-action elimina la acción programada especificada. Tenga en cuenta que puede omitir este paso si desea mantener las acciones programadas para usarlas en el futuro.

Linux, macOS o Unix

aws application-autoscaling delete-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-second-scheduled-action

Windows

aws application-autoscaling delete-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-second-scheduled-action
Para eliminar la política de escalado

El siguiente comando delete-scaling-policy elimina una política de escalado de seguimiento de destino especificada. Puede omitir este paso si desea mantener la política de escalado que creó.

Linux, macOS o Unix

aws application-autoscaling delete-scaling-policy \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --policy-name my-scaling-policy

Windows

aws application-autoscaling delete-scaling-policy --service-namespace namespace --scalable-dimension dimension --resource-id identifier --policy-name my-scaling-policy
Anular el registro del objetivo escalable

Use el siguiente comando deregister-scalable-target para eliminar un registro de un destino escalable. Si tiene alguna política de escalado creada o cualquier acción programada que todavía no se haya eliminado, se elimina con este comando. Tenga en cuenta que puede omitir este paso si desea mantener el destino escalable registrado para usarlo en el futuro.

Linux, macOS o Unix

aws application-autoscaling deregister-scalable-target \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier

Windows

aws application-autoscaling deregister-scalable-target --service-namespace namespace --scalable-dimension dimension --resource-id identifier