¿Cómo puedo solucionar los problemas de escalamiento automático en Amazon ECS?
El escalamiento automático que he configurado para Amazon Elastic Container Service (Amazon ECS) no desescala ni escala horizontalmente el recuento de tareas deseado.
Descripción corta
Para actualizar automáticamente el recuento de tareas deseado, configure las alarmas de AWS Application Auto Scaling y Amazon CloudWatch para Amazon ECS.
Es posible que Application Auto Scaling no agregue o elimine tareas según lo esperado por los siguientes motivos:
- No ha configurado correctamente las políticas de escalamiento.
- Ha eliminado o editado la alarma de CloudWatch que invoca las políticas de escalamiento.
- El escalamiento automático está suspendido.
- Ha especificado incorrectamente el formato de expresión cron en la acción programada.
- Ha utilizado AWS CloudFormation o AWS Cloud Development Kit (AWS CDK) para actualizar manualmente el recuento de tareas deseado y ha ingresado un valor incorrecto.
- El número deseado de tareas no está configurado correctamente.
- Su clúster de Amazon ECS no tiene suficientes recursos ni capacidad para ejecutar nuevas tareas.
- Tiene problemas de red.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Solución de problemas de alarmas y políticas de escalamiento de CloudWatch
Para solucionar problemas de alarmas y políticas de escalamiento de CloudWatch, complete las siguientes tareas en función de la política de escalamiento que utilice.
Objetivo escalable
Para comprobar si el servicio está registrado como un objetivo escalable con Application Auto Scaling, ejecute el comando describe-scalable-targets:
aws application-autoscaling describe-scalable-targets --service-namespace ecs --region example-region
Nota: Sustituya example-region por su región de AWS.
Si el servicio no está registrado, ejecute el comando register-scalable-target para registrarlo:
aws application-autoscaling register-scalable-target --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/your-cluster/your-service-name --min-capacity 1 --max-capacity 10 --region example-region
Nota: Sustituya your-cluster por el nombre de su clúster de Amazon ECS, your-service-name por el nombre de su servicio y example-region por su región.
En el resultado del comando anterior, compruebe el valor de DynamicScalingInSuspended, DynamicScalingOutSuspended y ScheduledScalingSuspended. Cuando DynamicScalingInSuspended o DynamicScalingOutSuspended se establece en true, Application Auto Scaling no actualiza la capacidad al iniciar una política de escalamiento. Cuando ScheduledScalingSuspended se establece en true, Application Auto Scaling no inicia las acciones de escalamiento que programó ejecutar durante el período de suspensión. Para obtener más información sobre cómo reanudar el escalamiento automático suspendido, consulte Suspensión y reanudación del escalamiento para Application Auto Scaling.
Después de registrar el servicio, configure las políticas de escalamiento y las alarmas de CloudWatch.
Escalamiento por pasos
Compruebe si CloudWatch está iniciando las alarmas asociadas a las políticas de escalamiento. Puede encontrar errores en el historial de alarmas de CloudWatch. Si no hay ningún ajuste por pasos para la vulneración delta, aparecerá el siguiente error: «No se pudo ejecutar la acción de escalamiento automático: no se encontró ningún ajuste por pasos para el valor métrico [xx, xx] y la vulneración delta xx». Para resolver este problema, asegúrese de establecer el umbral, los ajustes por pasos y el tipo de ajuste de escalamiento en la alarma de CloudWatch. Además, especifique todos los ajustes por pasos en sus políticas. Para desescalar horizontalmente, escriba**-infinity to 0**, y para escalar horizontalmente, escriba 0 to +infinity.
Nota: Si usa proveedores de capacidad de Amazon ECS, asegúrese de que haya suficientes instancias de contenedor para que se ejecuten las tareas.
Escalamiento del seguimiento de objetivos
Dado que las políticas de escalamiento y seguimiento de objetivos pueden afectar al comportamiento de escalamiento, no edite ni elimine las alarmas de CloudWatch asociadas. Si modifica o elimina estas alarmas, debe volver a crear la política de seguimiento de objetivos.
Cuando configura varias políticas de escalamiento, las políticas pueden entrar en conflicto y provocar una actividad consecutiva de desescalamiento o escalamiento horizontal. Cada política debe usar una métrica diferente si desea tener varias políticas de escalamiento y seguimiento de objetivos para un servicio de Amazon ECS.
Solución de problemas de expresiones cron incorrectas
Asegúrese de que la expresión cron de la configuración de acciones programadas para Application Auto Scaling utilice el siguiente formato: [Minutos] [Horas] [Día_del_Mes] [Mes] [Día_de_Semana] [Año]. Los seis campos deben estar separados por un espacio en blanco.
Para ver un ejemplo de acción que usa la expresión cron, consulte Creación de una acción programada que se ejecute de forma periódica.
Solución de problemas con la actualización del recuento de tareas deseado
Al actualizar el recuento de tareas deseado para un servicio de Amazon ECS, puede invocar un evento de escalamiento. Para el escalamiento horizontal, Application Auto Scaling aumenta el recuento deseado hasta la capacidad mínima. Para el desescalamiento horizontal, Application Auto Scaling aumenta el recuento deseado hasta la capacidad máxima. En ambos casos, Application Auto Scaling sigue escalando en función de la política de escalamiento, pero no modifica el recuento deseado.
Si crea su servicio Amazon ECS con CloudFormation o AWS CDK, el valor predeterminado de DesiredCount es 1. Si actualiza su servicio Amazon ECS con CloudFormation o AWS CDK, la aplicación utilizará el DesiredCount existente para los nuevos despliegues.
Para el valor de recuento deseado en la pila de CloudFormation o AWS CDK, especifique un valor entre los valores mínimo y máximo durante la actualización del servicio.
Nota: Asegúrese de que el recuento deseado cumpla con las necesidades de la configuración de despliegue del servicio, en particular los valores porcentuales mínimo y máximo.
Solución de problemas de capacidad del clúster
Para evitar problemas de capacidad, utilice los proveedores de capacidad de Amazon ECS para aprovisionar automáticamente las instancias de Amazon Elastic Compute Cloud (Amazon EC2).
Para evitar un escalamiento excesivo, el escalamiento automático usa el recuento real de tareas en ejecución en un servicio como punto de partida, no el recuento deseado. Si no hay suficientes recursos de instancias de contenedor para colocar las tareas adicionales, el escalamiento automático no puede completar el escalamiento. Para resolver este problema, utilice los proveedores de capacidad para escalar automáticamente la capacidad de las instancias de contenedor. De lo contrario, debe aumentar manualmente la capacidad de las instancias de contenedor.
Tras el periodo de recuperación, el escalamiento automático continúa escalando las actividades. Para las tareas de AWS Fargate, utilice los proveedores de capacidad de Fargate para administrar la capacidad de computación.
El escalamiento automático usa el recuento real de tareas en ejecución, no el recuento deseado, como punto de partida para el escalamiento. Si no hay suficientes recursos de instancias de contenedor para realizar las tareas adicionales, el escalamiento automático no puede completar la actividad de escalamiento. Sin embargo, para evitar intentos de escalamiento excesivos que no se pueden cumplir, el escalamiento automático sigue intentando escalar tanto como sea posible en función de los recursos disponibles.
Solución de problemas de escalamiento relacionados con la red
Comprobación de la configuración de las tareas en el modo de red awsvpc
Cuando el escalamiento automático aumenta el número de tareas, cada tarea en el modo de red awsvpc requiere su propia dirección IP. Si las subredes de la nube virtual privada (VPC) no tienen suficientes direcciones IP disponibles, la cantidad de tareas no se escala verticalmente. Supervise con regularidad el uso de las direcciones IP de su VPC. Si su configuración está cerca de los límites de capacidad, utilice bloques de CIDR más grandes o cree subredes nuevas.
Las tareas de Amazon ECS en modo de red awsvpc utilizan interfaces de red elásticas. Hay una cuota máxima para el total de interfaces de red en cada tipo de instancia de cada VPC. Si supera esta cuota, sus tareas no se iniciarán. Para comprobar el uso de la interfaz de red, siga estos pasos:
- Abra la consola de Amazon EC2.
- En el panel de navegación, seleccione Interfaces de red.
- Utilice la columna ID de instancia para ver las instancias a las que está conectada cada interfaz de red. Para ver más información sobre la interfaz de red, como las direcciones IP y los grupos de seguridad, elija la interfaz de red.
Verificación de que la configuración no bloquee el tráfico requerido
Los grupos de seguridad o las reglas de la lista de control de acceso de la red (ACL de la red) pueden bloquear el tráfico requerido y provocar errores en las comprobaciones de estado que causan eventos de escalamiento innecesarios. Asegúrese de que sus grupos de seguridad permitan el tráfico entrante a los puertos de la aplicación. Asegúrese también de que las ACL de la red permitan el tráfico entrante y saliente entre la aplicación y Amazon ECS.
Información relacionada
- Temas
- Containers
- Etiquetas
- Amazon Elastic Container Service
- Idioma
- Español

Contenido relevante
- preguntada hace un año
- preguntada hace un año
- preguntada hace 10 meses
- preguntada hace un año
- preguntada hace un mes