Escalado automático más rápido con métricas de alta resolución
Por defecto, Amazon ECS publica las métricas CPUUtilization y MemoryUtilization con una resolución de 60 segundos. Puede configurar una resolución de 20 segundos para acelerar el escalado automático del servicio.
Para las políticas de escalado del seguimiento de destino, se dispone de las siguientes métricas predefinidas de alta resolución:
| PredefinedMetricType | Descripción |
|---|---|
ECSServiceAverageCPUUtilizationHighResolution |
Utilización promedio de la CPU con una resolución de 20 segundos |
ECSServiceAverageMemoryUtilizationHighResolution |
Utilización promedio de la memoria con una resolución de 20 segundos |
Cómo crear un nuevo servicio con métricas de alta resolución para un escalado automático más rápido
-
En la página Clústeres, seleccione el clúster en el que desea crear el servicio.
-
En la sección Servicios, elija Crear.
-
En el formulario Crear servicio, en la sección Configuración de supervisión, seleccione Agregar configuración de métrica.
-
En Nombre de la métrica, seleccione la métrica que desee recopilar en alta resolución. Seleccione
CPUUtilization(Instancias a petición) oMemoryUtilization(Instancias reservadas estándar). -
En Resolución (segundos), seleccione 20.
-
(Opcional) Para agregar ambas métricas en alta resolución, vuelva a seleccionar Agregar configuración de métrica y repita los dos pasos anteriores para la otra métrica.
-
En la sección Escalado automático del servicio, seleccione Utilizar el escalado automático del servicio.
-
En Cantidad mínima de tareas, ingrese el límite mínimo del número de tareas que se va a utilizar para el escalado automático del servicio. El recuento deseado no será inferior a este recuento.
-
En Cantidad máxima de tareas, ingrese el límite máximo del número de tareas que se va a utilizar para el escalado automático del servicio. El recuento deseado no será superior a este recuento.
-
Para Scaling policy type (Tipo de política de escalado), elija Target tracking (Seguimiento de destino).
-
En Tipo de métrica, seleccione la métrica de alta resolución correspondiente. Por ejemplo, elija
ECSServiceAverageCPUUtilizationHighResolutionsi configuróCPUUtilizationcon una resolución de 20 segundos oECSServiceAverageMemoryUtilizationHighResolutionsi configuróMemoryUtilizationcon una resolución de 20 segundos. -
En Valor de destino, ingrese el porcentaje de utilización de destino. El escalado automático del servicio escala horizontalmente la capacidad hasta que la utilización media se encuentre en el valor de destino, o hasta que alcance el número máximo de tareas que haya especificado.
-
En Configuración adicional, configure lo siguiente:
-
En Periodo de recuperación de escalado horizontal, ingrese la cantidad de tiempo, en segundos, que debe esperarse para que surta efecto una actividad de reducción horizontal anterior.
-
En Periodo de recuperación de reducción horizontal, escriba la cantidad de tiempo, en segundos, tras completarse una actividad de reducción horizontal antes de que pueda comenzar otra actividad de reducción horizontal.
-
-
Elija Crear para crear el servicio.
-
Cree el servicio con la configuración de supervisión mediante el comando create-service.
aws ecs create-service --regionus-east-1\ --clustermy-cluster\ --service-namemy-service\ --task-definitionmy-app:1\ --desired-count 2 \ --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]" -
Registre el servicio como un destino escalable mediante el comando register-scalable-target.
aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --min-capacity1\ --max-capacity10\ --regionus-east-1 -
Cree una política de escalado del seguimiento de destino con una métrica predefinida de alta calidad mediante el comando put-scaling-policy.
aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --policy-namemy-highres-cpu-policy\ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue":50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution" } }' \ --regionus-east-1 -
Compruebe que la política se haya creado mediante el comando describe-scaling-policies.
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --regionus-east-1
Cómo actualizar un servicio existente para utilizar métricas de alta resolución para un escalado automático más rápido
La actualización de un servicio existente para usar métricas de alta resolución para un escalado automático del servicio más rápido es un proceso de dos pasos. Primero debe actualizar la resolución de supervisión, lo que activa la implementación del servicio. Una vez que la implementación se complete correctamente y todas las tareas emitan métricas con una resolución de 20 segundos, podrá configurar una política de escalado de alta resolución.
importante
Si su servicio utilizaba anteriormente una resolución métrica de 60 segundos, las métricas de alta resolución para la política de escalado solo estarán disponibles en la consola de Amazon ECS una vez que haya actualizado su servicio para que utilice una resolución métrica de 20 segundos y se haya completado la implementación del servicio.
Paso 1: actualizar la resolución de supervisión
-
En la página Clústeres, elija el clúster que contiene el servicio que desea actualizar.
-
En la sección Servicios, seleccione el servicio y elija Actualizar.
-
En el formulario Actualizar servicio, en la sección Configuración de supervisión, elija Agregar configuración de métrica.
-
En Nombre de la métrica, seleccione la métrica que desee recopilar en alta resolución. Seleccione
CPUUtilization(Instancias a petición) oMemoryUtilization(Instancias reservadas estándar). -
En Resolución (segundos), seleccione 20.
-
(Opcional) Para agregar ambas métricas en alta resolución, vuelva a seleccionar Agregar configuración de métrica y repita los dos pasos anteriores para la otra métrica.
-
Elija Actualizar para enviar el cambio. Esto activa la implementación de un servicio.
-
Espere a que se complete la implementación. Puede supervisar el progreso en la página de detalles del servicio, en la pestaña Implementaciones.
nota
Las opciones de métricas de escalado de alta resolución aparecen atenuadas en la sección de escalado automático del servicio hasta que la implementación se realice correctamente y todas las tareas se emitan con una resolución de 20 segundos.
Paso 2: configurar la política de escalado de alta resolución
Luego de que se complete la implementación, configure la política de escalado mediante uno de los siguientes métodos:
- Opción A: página de detalles del servicio
-
-
En la página de detalles del servicio, seleccione la pestaña Escalado automático del servicio.
-
Elija Crear política de escalado (o edite una política existente).
-
Para Scaling policy type (Tipo de política de escalado), elija Target tracking (Seguimiento de destino).
-
En Tipo de métrica, seleccione la métrica de alta resolución. Por ejemplo,
ECSServiceAverageCPUUtilizationHighResolutionoECSServiceAverageMemoryUtilizationHighResolution. -
En Valor de destino, ingrese el porcentaje de utilización de destino.
-
En Configuración adicional, configure lo siguiente:
-
En Periodo de recuperación de escalado horizontal, ingrese la cantidad de tiempo, en segundos, que debe esperarse para que surta efecto una actividad de reducción horizontal anterior.
-
En Periodo de recuperación de reducción horizontal, escriba la cantidad de tiempo, en segundos, tras completarse una actividad de reducción horizontal antes de que pueda comenzar otra actividad de reducción horizontal.
-
-
Elija Crear política de escalado.
-
- Opción B: formulario del servicio de actualización
-
-
En la página de detalles del servicio, elija Actualizar.
-
En la sección Escalado automático del servicio, seleccione Usar el escalado automático del servicio (si aún no está activado).
-
En Número mínimo de tareas, ingrese el límite inferior.
-
En Número máximo de tareas, ingrese el límite superior.
-
Para Scaling policy type (Tipo de política de escalado), elija Target tracking (Seguimiento de destino).
-
En Tipo de métrica, seleccione la métrica de alta resolución (ahora habilitada una vez finalizada la implementación).
-
En Valor de destino, ingrese el porcentaje de utilización de destino.
-
En Configuración adicional, defina el Periodo de recuperación del escalado horizontal y Periodo de recuperación de la reducción horizonal.
-
Elija Actualizar para enviar el cambio.
-
Paso 1: actualizar la resolución de supervisión
-
Actualice el servicio con la configuración de supervisión mediante el comando update-service.
aws ecs update-service --regionus-east-1\ --clustermy-cluster\ --servicemy-service\ --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]" -
Espere a que se complete la implementación. Puede supervisar el progreso utilizando el comando describe-services y comprobando el estado de la implementación.
aws ecs describe-services --regionus-east-1\ --clustermy-cluster\ --servicesmy-service -
Una vez completada la implementación, compruebe que la configuración de supervisión esté activa al describir la revisión del servicio. Obtenga el ARN de la revisión del servicio activo de la salida
describe-servicesy luego ejecute:aws ecs describe-service-revisions --regionus-east-1\ --service-revision-arnsarn:aws:ecs:us-east-1:012345678910:service-revision/my-cluster/my-service/1234567890123456789Confirme que la configuración de supervisión aparezca en la respuesta:
{ "serviceRevisions": [ { ... "monitoring": { "metricConfigurations": [ { "metricNames": ["CPUUtilization", "MemoryUtilization"], "resolutionSeconds": 20 } ] } } ] }
Paso 2: configurar la política de escalado de alta resolución
-
Registre el servicio como un destino escalable si aún no está registrado mediante el comando register-scalable-target.
aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --min-capacity1\ --max-capacity10\ --regionus-east-1 -
Cree una política de escalado del seguimiento de destino con una métrica predefinida de alta calidad mediante el comando put-scaling-policy. El siguiente ejemplo tiene como objetivo alcanzar un 50 % de utilización de la CPU:
aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --policy-namemy-highres-cpu-policy\ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue":50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution" } }' \ --regionus-east-1 -
Compruebe que se creó la política:
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --regionus-east-1
Cómo validar el escalado automático del servicio más rápido
Paso 1: verificar que las métricas de alta resolución se están publicando
-
Diríjase a la consola de CloudWatch.
-
En el panel de navegación, elija Métricas y, a continuación, Todas las métricas.
-
Elija el espacio de nombres AWS/ECS.
-
Elija ClusterName, ServiceName.
-
Busque las métricas
CPUUtilizationyMemoryUtilizationen su servicio. -
Establezca el período en 20 segundos. Debería ver los puntos de datos en intervalos de 20 segundos, lo que confirma que las métricas de alta resolución están activas.
Parte 2: comprobar que la política de escalado utilice la métrica de alta resolución
-
En la página de detalles del servicio, seleccione la pestaña Escalado automático del servicio.
-
Consulte sus políticas de escalado actuales y confirme que la métrica esté configurada en una variante de alta resolución (
ECSServiceAverageCPUUtilizationHighResolutionoECSServiceAverageMemoryUtilizationHighResolution). -
Como alternativa, verifique mediante la CLI:
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service\ --scalable-dimension ecs:service:DesiredCount \ --regionus-east-1Confirme que, en la respuesta, el
PredefinedMetricTypeesté configurado en una métrica de alta resolución.
Consideraciones
-
La supervisión de los cambios en la configuración crea una nueva revisión del servicio y requiere su implementación. La métrica de escalado de alta resolución no estará disponible hasta que se complete la implementación y todas las tareas se emitan con una resolución de 20 segundos.
-
Las métricas de alta resolución son compatibles con servicios mediante los Equilibradores de carga de aplicación y los Equilibradores de carga de red. No se admiten los servicios que utilizan los equilibradores de carga clásicos sin grupos de destino.
-
Las métricas de alta resolución no son compatibles con los servicios que utilizan los tipos de controladores de implementación
CODE_DEPLOYyEXTERNAL. -
Puede ver la configuración de supervisión de su servicio mediante
DescribeServiceRevisions. La configuración de supervisión no se devuelve en las respuestasCreateServiceoUpdateService.