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.
Contenido
Requisitos previos
Este tutorial presupone que ya ha realizado las siguientes acciones:
-
Ha creado una AWS cuenta. Para obtener más información, consulte Configuración para empezar a utilizar Application Auto Scaling.
-
Ha instalado y configurado la AWS CLI. Para obtener más información, consulte Configuración de la AWS CLI.
-
Su cuenta tiene todos los permisos necesarios para registrar y cancelar el registro de los recursos como objetivos escalables en Application Auto Scaling. También tiene todos los permisos necesarios para crear políticas de escalado y acciones programadas. Para obtener más información, consulte Identity and Access Management para Application Auto Scaling.
-
Tiene un recurso admitido en un entorno que no es de producción disponible para usar en este tutorial. Si aún no cuenta con uno, créelo ahora. Para obtener información acerca de los servicios y los recursos de AWS que funcionan con Application Auto Scaling, consulte la sección AWS servicios que puede usar con Application Auto Scaling.
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-dimensiondimension
\ --resource-ididentifier
\ --min-capacity 0 --max-capacity 0Windows
aws application-autoscaling register-scalable-target --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--min-capacity 0 --max-capacity 0Si 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
-
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
yMaxCapacity
al rango deseado de 1-5 unidades de capacidad.Linux, macOS o Unix
aws application-autoscaling put-scheduled-action \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
\ --scheduled-action-namemy-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-dimensiondimension
--resource-ididentifier
--scheduled-action-namemy-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.
-
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
-
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
yMaxCapacity
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-dimensiondimension
\ --resource-ididentifier
\ --scheduled-action-namemy-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-dimensiondimension
--resource-ididentifier
--scheduled-action-namemy-second-scheduled-action
--schedule "cron(0 20 * * ? *
)" --scalable-target-action MinCapacity=0
,MaxCapacity=0
-
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
-
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-dimensiondimension
\ --resource-ididentifier
\ --policy-namemy-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-dimensiondimension
--resource-ididentifier
--policy-namemy-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.
-
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-dimensiondimension
\ --resource-ididentifier
Windows
aws application-autoscaling describe-scaling-activities --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
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-dimensiondimension
\ --resource-ididentifier
\ --scheduled-action-namemy-second-scheduled-action
Windows
aws application-autoscaling delete-scheduled-action --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--scheduled-action-namemy-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-dimensiondimension
\ --resource-ididentifier
\ --policy-namemy-scaling-policy
Windows
aws application-autoscaling delete-scaling-policy --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--policy-namemy-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-dimensiondimension
\ --resource-ididentifier
Windows
aws application-autoscaling deregister-scalable-target --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier