¿Cómo soluciono los problemas de escalamiento con mi proveedor de capacidad de Amazon ECS?

7 minutos de lectura
0

He configurado un proveedor de capacidad para mi clúster de Amazon Elastic Container Service (Amazon ECS). Sin embargo, el proveedor de capacidad no escala como debería hacerlo.

Descripción breve

El proveedor de capacidad de su clúster de Amazon ECS no escala ni desescala horizontalmente de forma automática por uno o varios de los siguientes motivos:

  • El servicio Amazon ECS no está asociado al proveedor de capacidad.
  • Las políticas de escalamiento relacionadas con el proveedor de capacidad no están asociadas al grupo de escalamiento automático.
  • El porcentaje de capacidad objetivo no está configurado correctamente en el proveedor de capacidad.
  • Está usando el escalamiento administrado para el proveedor de capacidad y el grupo de escalamiento automático tiene políticas de escalamiento personalizadas adjuntas.
  • El grupo de escalamiento automático lanzó la instancia de contenedor, pero no puede unirse al clúster.
  • Las instancias de contenedor están protegidas contra el desescalamiento.
  • El proveedor de capacidad está bloqueado en un estado de error.
  • El grupo de escalamiento automático está bloqueado en un ciclo de escalamiento y desescalamiento.

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Para escalar los proveedores de capacidad, complete las siguientes tareas.

El servicio Amazon ECS no está asociado al proveedor de capacidad

Para comprobar que el servicio Amazon ECS está asociado al proveedor de capacidad, ejecute el comando describe-services:

aws ecs describe-services --cluster example-cluster --services example-service --region example-region --query services[].capacityProviderStrategy

Si su servicio Amazon ECS está asociado al proveedor de capacidad, el resultado es similar al del siguiente ejemplo:

[
  [
    {
      "capacityProvider": "example-capacity-provider",
      "weight": 1,
      "base": 1
    }
  ]
]

Asegúrese de que el campo CapacityProviderStrategy no sea nulo en la salida. Para ver la configuración del servicio, revise en los eventos de AWS CloudTrail las llamadas a las API CreateService y UpdateService.

Para resolver este problema, ejecute el comando update-service para actualizar el servicio Amazon ECS. También puede usar la consola de Amazon ECS para actualizar el servicio.

Las políticas de escalamiento relacionadas con el proveedor de capacidad no están asociadas al grupo de escalamiento automático

Al crear un proveedor de capacidad y asociarlo a un grupo de escalamiento automático, el grupo de escalamiento automático crea una política de escalamiento. Esta política de escalamiento utiliza el seguimiento de objetivos para modificar la capacidad de modo que pueda adaptarse a las cargas del clúster.

Para solucionar este problema, revise en los eventos de CloudTrail las API UpdateAutoScalingGroup, CreateCapacityProvider y UpdateCapacityProvider.

Para verificar que el grupo de escalamiento automático se haya creado como adjunto al clúster, ejecute el comando describe-cluster:

aws ecs describe-clusters --clusters example-cluster --include ATTACHMENTS --region example-region --query clusters[].attachments[]

La salida de este comando tiene un aspecto similar al ejemplo siguiente:

[
  {
    "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 utiliza una política de escalamiento administrado, complete los siguientes pasos para comprobar si la política está asociada al grupo de escalamiento automático:

  1. Abra la consola de Amazon ECS.
  2. Abra el clúster que desee comprobar.
  3. Seleccione la pestaña Infraestructura.
  4. En la pestaña Proveedores de capacidad, elija el grupo de escalamiento automático para el proveedor de capacidad que desea comprobar. Aparece la página Grupos de escalamiento automático en la consola de Amazon EC2.
  5. Seleccione la pestaña Escalamiento automático.
  6. Para el grupo de escalamiento automático, confirme que la política de escalamiento utilice la métrica CapacityProviderReservation.

El porcentaje de capacidad objetivo no está configurado correctamente en el proveedor de capacidad

La métrica de CloudWatch utiliza los mismos valores de capacidad objetivo que la política de escalamiento del seguimiento de objetivo administrada por Amazon ECS. El valor de capacidad objetivo se utiliza para la métrica de CloudWatch que se utiliza en la política de escalamiento del seguimiento de objetivo administrada por Amazon ECS. Este valor de capacidad objetivo se iguala en función del máximo esfuerzo. Los valores permitidos para esta métrica son números enteros del 1 al 100. Por ejemplo, si establece la capacidad objetivo en el 100 %, se utilizarán todas las instancias. Todas las instancias que no estén ejecutando tareas se desescalan horizontalmente. Para configurar la capacidad sobrante, defina la capacidad objetivo en un valor inferior al 100% en función de sus necesidades.

Para actualizar el proveedor de capacidad con el porcentaje de capacidad objetivo correcto, consulte Actualización de un proveedor de capacidad de Amazon ECS.

El grupo de escalamiento automático lanzó la instancia de contenedor, pero no puede unirse al clúster

Siga estos pasos:

Sus instancias de contenedor están protegidas contra el desescalamiento

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. Para obtener más información, consulte Control de las instancias que termina Amazon ECS.

Para asegurarse de que el grupo de escalamiento automático pueda terminar las instancias antiguas al cambiar la capacidad deseada, complete las siguientes tareas:

Para más información, consulte ¿Cómo soluciono el error «The managed termination protection setting for the capacity provider is invalid» en Amazon ECS?

El proveedor de capacidad está bloqueado en un estado de error

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, ejecute el comando describe-capacity providers. Además, revise los eventos de CloudTrail y compruebe si hay errores relacionados con la API CreateCapacityProvider.

El grupo de escalamiento automático está bloqueado en un ciclo de escalamiento y desescalamiento

Cuando el valor de la métrica que se especifica en su política de escalamiento de servicios de Amazon ECS aumenta, el grupo de escalamiento automático escala horizontalente y lanza instancias. Sin embargo, si el valor de la métrica cae tras el pico repentino, el grupo de escalamiento automático intenta desescalar horizontalmente las instancias. Si el valor de la métrica fluctúa varias veces en poco tiempo, el grupo de escalamiento automático queda bloqueado en un ciclo de escalamiento. Para evitar este problema, defina el valor umbral de la métrica en la política de escalamiento para que coincida con su carga de trabajo.

Información relacionada

Análisis detallado del escalamiento automático de clústeres de Amazon ECS

¿Cómo puedo solucionar el error DELETE_FAILED al eliminar el proveedor de capacidad en Amazon ECS?

Clústeres de Amazon ECS para el tipo de lanzamiento Fargate

Proveedores de capacidad de Amazon ECS para el tipo de lanzamiento EC2

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un mes