Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
¿Cómo soluciono los problemas de escalamiento con mi proveedor de capacidad de Amazon ECS?
He creado un proveedor de capacidad para mi clúster de Amazon Elastic Container Service (Amazon ECS) con el tipo de inicio de Amazon Elastic Compute Cloud (Amazon EC2). Sin embargo, el proveedor de capacidad no escala según lo esperado.
Descripción corta
Los siguientes problemas hacen que tu proveedor de capacidad de Amazon EC2 no escale ni desescale horizontalmente de forma automática:
- No asociaste el servicio Amazon ECS al proveedor de capacidad.
- No adjuntaste las políticas de escalamiento del proveedor de capacidad al grupo de Amazon EC2 Auto Scaling.
- No configuraste correctamente el porcentaje de capacidad objetivo.
- Estás usando el escalamiento administrado para el proveedor de capacidad y las políticas de escalamiento personalizadas están adjuntas al grupo de EC2 Auto Scaling.
- El grupo de Amazon EC2 Auto Scaling inició la instancia de contenedor, pero no puede unirse al clúster.
- Las instancias de contenedor no pueden desescalarse horizontalmente ni verticalmente.
- El proveedor de capacidad está bloqueado en un estado de error.
- El grupo de escalamiento automático está bloqueado en un bucle de escalamiento.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Comprobación de que se ha asociado el servicio Amazon ECS al proveedor de capacidad
Para confirmar si asociaste el servicio Amazon ECS al proveedor de capacidad, ejecuta el siguiente comando describe-services de la AWS CLI:
aws ecs describe-services --cluster example-cluster --services example-service --region example-region --query 'services[].capacityProviderStrategy'
Nota: Sustituye example-cluster por el nombre de tu clúster, example-service por el nombre de tu servicio y example-region por tu región de AWS.
Si asociaste el servicio Amazon ECS al proveedor de capacidad, recibirás un resultado similar al del siguiente ejemplo:
[ [ { "capacityProvider": "example-capacity-provider", "weight": 1, "base": 1 } ] ]
Asegúrate de que el valor de capacityProviderStrategy no sea [].
Para agregar un proveedor de capacidad al servicio, ejecuta el siguiente comando update-service:
aws ecs update-service --cluster example-cluster --service example-service --region example-region --capacity-provider-strategy capacityProvider=capacity-provide-name,weight=weight-value,base=base-value --force-new-deployment
Nota: Sustituye example-cluster por el nombre de tu clúster, example-service por el nombre de tu servicio, example-region por tu región y capacity-provider-name por el nombre de tu proveedor de capacidad. Además, sustituye weight-value por el total de tareas que utilizan el proveedor de capacidad y base-value por la cantidad mínima de tareas que debe ejecutar el proveedor de capacidad.
También puedes usar la consola de Amazon ECS para actualizar el servicio.
Asegurarse de adjuntar las políticas de escalamiento del proveedor de capacidad al grupo de escalamiento automático
Cuando asocias un proveedor de capacidad a un grupo de escalamiento automático, Amazon ECS crea una política de escalamiento que modifica la capacidad en función de la carga del clúster.
Para solucionar problemas relacionados con las políticas de escalamiento, revisa los eventos de AWS CloudTrail para ver las llamadas a la API PutScalingPolicy, UpdateAutoScalingGroup, CreateCapacityProvider y UpdateCapacityProvider. Asegúrate de que la política se pueda asociar al grupo de escalamiento automático y de que el proveedor de capacidad funcione según lo previsto.
Para verificar que el grupo de escalamiento automático está adjunto al clúster, ejecuta el siguiente comando describe-cluster:
aws ecs describe-clusters --clusters example-cluster --include ATTACHMENTS --region example-region --query 'clusters[].attachments[]'
Nota: Sustituye example-cluster por el nombre de tu clúster y example-region por tu región.
Resultado de ejemplo:
[ { "id": "100a23456-5f0b-4abc-b998-d6789d111a", "type": "as_policy", "status": "CREATED", "details": [ { "name": "capacityProviderName", "value": "example-capacityProvider" }, { "name": "scalingPlanName", "value": "ECSManagedAutoScalingPlan-bb60c8fa-3ed7-4808-b39c-abcdef2345" } ] } ]
Si utilizas una política de escalamiento administrado, completa los siguientes pasos para comprobar si has asociado la política al grupo de escalamiento automático:
- Abre la consola de Amazon ECS.
- En el panel de navegación, selecciona Clústeres.
- Selecciona tu clúster.
- Selecciona la pestaña Infraestructura.
- Selecciona la pestaña Proveedores de capacidad.
- Selecciona tu grupo de escalamiento automático.
Nota: Esta acción te redirige a la página de grupos de escalamiento automático en la consola de Amazon EC2. - Selecciona la pestaña Escalamiento automático.
- Elige Acciones y, a continuación, selecciona Editar política de escalamiento dinámico.
- En el campo JSON de métrica personalizada, comprueba que la política incluya la métrica CapacityProviderReservation.
Comprobación de la configuración del porcentaje de capacidad objetivo
Comprueba la métrica CapacityProviderReservation de Amazon CloudWatch para que tu proveedor de capacidad pueda realizar un seguimiento del uso de sus instancias de contenedor. La política de escalamiento y seguimiento de objetivos asociada al grupo de escalamiento automático ajusta la cantidad de instancias en ejecución para garantizar que CapacityProviderReservation coincida con el valor de capacidad objetivo. Por ejemplo, si estableces la capacidad objetivo en el 100 %, Amazon ECS usa todas las instancias y desescala horizontalmente las instancias que no ejecutan tareas.
Para configurar la capacidad adicional, actualiza Establecer capacidad objetivo a un valor inferior a 100.
Asegúrate de que la instancia que se inició desde el grupo de escalamiento automático pueda unirse al clúster
Si la instancia no puede unirse al clúster, consulta ¿Por qué mi instancia de Amazon EC2 no puede unirse al clúster de Amazon ECS?
Asegurarse de que las instancias de contenedor no estén protegidas contra las acciones de desescalamiento horizontal o vertical
En el caso de los proveedores de capacidad que utilizan una protección de terminación administrada, Amazon ECS evita la terminación de las instancias de Amazon EC2 con tareas durante una acción de desescalamiento horizontal.
Para detener todas las tareas en ejecución y permitir que el grupo de escalamiento automático termine la instancia de EC2, utiliza la consola de Amazon ECS para drenar la instancia. O bien, ejecuta el siguiente comando update-container-instances-state:
aws ecs update-container-instances-state --cluster example-cluster --container-instances example-container --status DRAINING --region example-region
Nota: Sustituye examples-cluster por el nombre de tu clúster, example-container por tu instancia de contenedor y example-region por tu región.
Si las tareas siguen ejecutándose en la instancia de contenedor después de drenarla, consulta ¿Cómo soluciono el problema que provoca que las tareas de Amazon ECS tarden mucho en detenerse cuando la instancia de contenedor está configurada en DRENAJE?
Para seguir solucionando los problemas de protección de terminación administrada, consulta ¿Cómo soluciono el error "The managed termination protection setting for the capacity provider is invalid" en Amazon ECS?
Si las protecciones de escalamiento bloquean las acciones de desescalamiento vertical en la instancia, se mostrará el siguiente mensaje de error en el historial de actividades de escalamiento automático:
"Could not scale to desired capacity because all remaining instances are protected from scale-in."
Para resolver este problema, comprueba tus herramientas o herramientas de terceros, como Terraform o GitLab. Asegúrate de que no eliminen la etiqueta AmazonECSManaged del grupo de escalamiento automático. Amazon ECS requiere esta etiqueta para administrar el escalamiento. Para comprobar si falta la etiqueta AmazonECSManaged, consulta el historial de eventos de CloudTrail para ver el evento SetInstanceProtection. Si ves SetInstanceProtection, debes volver a agregar la etiqueta al grupo de escalamiento automático.
Comprobación del estado del proveedor de capacidad
Al usar un proveedor de capacidad, se recomienda crear un nuevo grupo de escalamiento automático y no reutilizar un grupo existente. Es posible que las instancias en estado de ejecución asociadas al grupo existente y registradas en un clúster de Amazon ECS no se registren correctamente.
Para ver el estado del proveedor de capacidad, ejecuta el comando describe-capacity providers:
aws ecs describe-capacity-providers \ --capacity-providers MyCapacityProvider
Si el estado del proveedor de capacidad es INACTIVO, significa que se eliminó el proveedor de capacidad.
Además, revisa los eventos de CloudTrail para ver si hay errores relacionados con la API CreateCapacityProvider.
Asegurarse de que el grupo de escalamiento automático no esté bloqueado en un bucle de escalamiento
Cuando la capacidad objetivo que se especifica en tu política de escalamiento de servicios de Amazon ECS aumenta, el grupo de escalamiento automático escala horizontalmente e inicia instancias. Sin embargo, si el valor de la métrica cae tras el pico repentino, el grupo de escalamiento automático desescala horizontalmente las instancias. Si la capacidad objetivo fluctúa con frecuencia en un periodo corto de tiempo, el grupo de escalamiento automático queda bloqueado en un ciclo de escalamiento. Para evitar este problema, configura el valor de capacidad objetivo para que coincida con tu carga de trabajo.
Información relacionada
Deep dive on Amazon ECS cluster auto scaling (Análisis detallado del escalamiento automático de clústeres de Amazon ECS)
¿Cómo puedo solucionar los errores al eliminar un proveedor de capacidad en Amazon ECS?
Clústeres de Amazon ECS para el tipo de lanzamiento de AWS Fargate
- Temas
- Containers
- Etiquetas
- Amazon Elastic Container Service
- Idioma
- Español

Contenido relevante
- preguntada hace 8 meses
- preguntada hace 10 meses
- preguntada hace 2 meses
- preguntada hace un año
- preguntada hace un año