Tutorial: Escalado de instancias de contenedor conCloudWatchAlarmas de - Amazon Elastic Container Service

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: Escalado de instancias de contenedor conCloudWatchAlarmas de

nota

En diciembre de 2019, Amazon ECS lanzó el escalado automático de clústeres, como un método alternativo para escalar instancias de contenedor. Para obtener más información, consulte Escalado automático de clústeres de Amazon ECS.

Los siguientes procedimientos le ayudan a crear un grupo de Auto Scaling para un clúster de Amazon ECS. El grupo de Auto Scaling contiene instancias de contenedor que puede aumentar (y reducir) con alarmas de CloudWatch.

En función de los tipos de instancia Amazon EC2 que utilice en sus clústeres y de la cantidad de instancias de contenedor que tenga en un clúster, las tareas tienen una cantidad limitada de recursos que pueden utilizar cuando se ejecutan. Amazon ECS monitoriza los recursos disponibles en el clúster para trabajar con los programadores con el fin de colocar tareas. Si el clúster se queda sin alguno de estos recursos, por ejemplo memoria, finalmente no podrá lanzar más tareas hasta agregar más instancias de contenedor, reducir el número de tareas deseadas en un servicio o detener algunas de las tareas en ejecución del clúster para liberar el recurso limitado.

En este tutorial, creará una alarma de CloudWatch y una política de escalado por pasos utilizando la métrica MemoryReservation para el clúster. Cuando la reserva de memoria del clúster está por encima del 75 % (lo que significa que solo el 25 % de la memoria del clúster está disponible para reserva de nuevas tareas), la alarma activa el grupo de Auto Scaling para agregar otra instancia y proporcionar más recursos a sus tareas y servicios.

Prerequisites

En este tutorial se supone que tiene métricas de CloudWatch habilitadas para sus clústeres y servicios. Las métricas no están disponibles hasta que los clústeres y servicios envían las métricas a CloudWatch y no puede crear alarmas de CloudWatch para métricas que no existen todavía. Para obtener más información, consulte HabilitaciónCloudWatchMétricas de.

Paso 1: Creación de unCloudWatchpara una métrica de

Una vez que haya habilitado las métricas de CloudWatch para los clústeres y los servicios, y que las métricas para el clúster se encuentren visibles en la consola de CloudWatch, puede configurar alertas relativas a ellas. Para obtener más información, consulte Creación de alarmas de Amazon CloudWatch en la Guía del usuario de Amazon CloudWatch.

Para este tutorial, crea una alarma en la métrica MemoryReservation del clúster para alertar cuando la reserva de memoria del clúster sea superior al 75%.

Para crear una alarma de CloudWatch para una métrica

  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación izquierdo, elija Alarms (Alarmas), Create Alarm (Crear alarma).

  3. En el panel CloudWatch Metrics by Category, seleccione ECS Metrics > ClusterName.

  4. En la página Modify Alarm, elija la métrica MemoryReservation para el clúster predeterminado y seleccione Next.

  5. En la sección Alarm Threshold, escriba el nombre y la descripción de la alarma.

    • Name: memory-above-75-pct

    • Description: Cluster memory reservation above 75%

  6. Defina el requisito de umbral y periodo de tiempo para MemoryReservation superior al 75% durante un periodo de tiempo.

    
                                CloudWatchUmbral de alarma de
  7. (Opcional) Configure el envío de una notificación cuando se activa la alarma. También puede optar por eliminar la notificación si no desea configurar una ahora.

  8. Elija Create Alarm. Ahora puede utilizar esta alarma para activar su grupo de Auto Scaling para agregar una instancia de contenedor cuando la reserva de memoria se encuentre por encima del 75%.

  9. (Opcional) También puede crear otra alarma que se active cuando la reserva de memoria se encuentre por debajo del 25%, lo cual se puede utilizar para eliminar una instancia de contenedor de su grupo de Auto Scaling.

Paso 2: Cree una configuración de lanzamiento para unaAuto Scalinggrupo

Ahora que ha habilitado las métricas de CloudWatch y ha creado una alarma basada en una de estas métricas, puede crear una configuración de lanzamiento y un grupo de Auto Scaling para el clúster. Para obtener más información y otras opciones de configuración, consulte Lanzar configuraciones en la Guía del usuario de Amazon EC2 Auto Scaling.

Para crear una configuración de lanzamiento de Auto Scaling

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación izquierdo, elijaAuto ScalingGroups.

  3. En la página Welcome to Auto Scaling, elija Create Auto Scaling Group.

  4. En la página Create Auto Scaling group (Crear grupo de Auto Scaling), elija Create a new launch configuration (Crear una nueva configuración de lanzamiento).

  5. En el paso Choose AMI del asistente Create Auto Scaling Group, elija Community AMIs.

  6. Elija la última Amazon ECS-optimized Amazon Linux 2 AMI para su grupo de Auto Scaling. Para obtener información sobre cómo recuperar la última Amazon ECS-optimized Amazon Linux 2 AMI, consulte RecuperaciónAmazon ECS-Optimized AMImetadatos.

  7. En la páginaSeleccionar tipo de instanciapaso de laCreación de un grupo de Auto Scaling, elija un tipo de instancia para suAuto Scalingy elijaSiguiente: Configure details.

  8. En el paso Configure details del asistente Create Auto Scaling Group, introduzca la siguiente información. Todos los demás campos son opcionales. Para obtener más información, consulte la sección relacionada con la creación de configuraciones de lanzamiento en la Guía del usuario de Amazon EC2 Auto Scaling.

    • Name: Escriba un nombre para la configuración de lanzamiento.

    • Rol de IAM: Seleccione laecsInstanceRolePara sus instancias de contenedor. Si ha configurado esta función, consulte Amazon ECSinstancia de contenedorIAMrol de.

    • Tipo de dirección IP: Seleccione la opción de tipo de dirección IP para sus instancias de contenedor. Para que el tráfico externo pueda ponerse en contacto con sus contenedores, seleccione Assign a public IP address to every instance (Asignar una dirección IP pública a cada instancia).

  9. Expanda la sección Advanced Details (Detalles avanzados) para especificar datos de usuario para las instancias de contenedores de Amazon ECS. Para obtener más información, consulte Amazon ECSConfiguración del agente de contenedor de.

    Pegue el script siguiente en el campo User data (Datos de usuario). Haga referencia al nombre de clúster con el que está trabajando.

    #!/bin/bash echo ECS_CLUSTER=my-cluster >> /etc/ecs/ecs.config
  10. Seleccione Next (Siguiente): Adición de almacenamiento.

  11. En la páginaAdición de almacenamientopaso de laCreación de un grupo de Auto Scaling, realice los cambios de configuración de almacenamiento que necesite para sus instancias y haga clic enSiguiente: Página Configure Security Group (Configurar grupo de seguridad).

  12. En el paso Configure Security Group (Configurar grupo de seguridad) del asistente Create Auto Scaling group (Crear grupo de Auto Scaling), seleccione un grupo de seguridad existente que satisfaga las necesidades de sus contenedores o cree un nuevo grupo de seguridad y elija Review (Revisar).

  13. Revise la configuración de lanzamiento y elija Create launch configuration.

  14. Seleccione una clave privada para conectarse a las instancias con SSH y elija Create launch configuration (Crear configuración de lanzamiento). Pase a la creación de un grupo de Auto Scaling con su nueva configuración de lanzamiento.

Paso 3: Creación de unAuto ScalingGrupo de con políticas de escalado por pasos

Una vez que la configuración de lanzamiento está completa, continúe con el procedimiento siguiente para crear un grupo de Auto Scaling que utilice su configuración de lanzamiento.

Para crear un grupo de Auto Scaling con políticas de escalado por pasos

  1. En la páginaConfiguración de detalles de grupo de Auto Scalingpaso de laCreación de un grupo de Auto Scaling, especifique la siguiente información y haga clic enSiguiente: Configurar políticas de escalado:

    • Group name: Escriba un nombre para laAuto Scalinggrupo.

    • Tamaño del grupo: Especifique el número de instancias de contenedor con las que se ha realizado laAuto Scalingdebería arrancarse.

    • Red: Seleccione una VPC en la que lanzará las instancias de contenedor.

    • Subredes: Seleccione las subredes en las que desea lanzar las instancias de contenedor. Para un clúster de alta disponibilidad, le recomendamos que habilite todas las subredes de la región.

  2. En el paso Configure scaling policies del asistente Create Auto Scaling Group, elija Use scaling policies to adjust the capacity of this group.

  3. Introduzca el número mínimo y máximo de instancias de contenedor de su grupo de Auto Scaling.

  4. Elija Scale the Auto Scaling group using step or simple scaling policies (Escalar el grupo de Auto Scaling mediante políticas de escalado por pasos o simples).

  5. En la sección Increase Group Size (Aumentar tamaño del grupo), introduzca la siguiente información:

    • Ejecutar directiva cuando: Seleccione lamemory-above-75-pct CloudWatchque ha configurado anteriormente.

    • Realice la acción: Introduzca el número de unidades de capacidad (instancias) que desea añadir a su clúster cuando se activa la alarma.

  6. Si ha configurado una alarma para activar una reducción del tamaño del grupo, configúrela en la sección Decrease Group Size y especifique cuántas instancias se deben eliminar en caso de que la alarma se active. De lo contrario, minimice la sección Decrease Group Size (Reducir el tamaño de grupo) haciendo clic en la X que se encuentra en la esquina superior derecha de la sección.

    nota

    Si configura el grupo de Auto Scaling para eliminar instancias de contenedor, las tareas que se ejecutan en las instancias del contenedor eliminado también se detienen. Si sus tareas se ejecutan como parte de un servicio, Amazon ECS reinicia esas tareas en otra instancia si los recursos necesarios están disponibles (CPU, memoria, puertos). Sin embargo, las tareas que se iniciaron manualmente no se reinician automáticamente.

  7. SeleccionarReview (Revisar),CrearAuto ScalingGroup.

Paso 4: Verifique y pruebe suAuto Scalinggrupo

Ahora que ha creado suAuto Scaling, debería ver las instancias que se inician en el grupoAmazon EC2consoleInstancias(Se ha creado el certificado). Estas instancias deben registrarse en su clúster de ECS así como después del lanzamiento.

Verifique que las instancias EC2 están registradas en el clúster. En la consola de ECS, seleccione el clúster con el que ha registrado las instancias. En la página Cluster, elija ECS Instances. Compruebe que el valor Agent Connected (Agente conectado es True (Verdadero) para las instancias mostradas.

Para probar que su grupo de Auto Scaling esté configurado correctamente, cree algunas tareas que consumen una cantidad de memoria considerable y empiece a lanzarlas en su clúster. Una vez que el clúster supere el 75 % de reserva de memoria de la alarma de CloudWatch para el número de periodos especificado, debería ver un nuevo lanzamiento de instancia en la consola Amazon EC2.

Paso 5: Limpieza

Puede eliminar una política de escalado si ya no la necesita. También debe eliminar las alarmas de CloudWatch. Eliminar una política de escalado por pasos elimina la acción de alarma subyacente, pero no elimina la alarma de CloudWatch asociada a la política de escalado, aunque ya no tenga una acción asociada.

Para eliminar una directiva de escalado por pasos y su alarma de CloudWatch asociada

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, en Auto Scaling, elija Auto Scaling Groups (Grupos).

  3. Seleccione el grupo de Auto Scaling.

  4. En la pestaña Scaling Policies (Políticas de escalado), seleccione Actions (Acciones), Delete (Eliminar).

  5. Cuando se le indique que confirme, seleccione Yes, Delete.

  6. Realice lo siguiente para eliminar la alarma de CloudWatch asociada a la política.

    1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

    2. En el panel de navegación, elija Alarms.

    3. Elija la alarma y elija Action (Acción), Delete (Eliminar).

    4. Cuando se le pida confirmación, seleccione Delete (Eliminar).

Cuando haya completado este tutorial, puede que desee conservar el grupo de Auto Scaling y las instancias Amazon EC2 en servicio para el clúster. No obstante, si no está utilizando estos recursos de forma activa, debería plantearse limpiarlos para que la cuenta no incurra en cargos innecesarios. Puede eliminar su grupo de Auto Scaling para terminar las instancias Amazon EC2 que contiene, pero la configuración de lanzamiento permanece intacta. Puede crear un nuevo grupo de Auto Scaling con la configuración de lanzamiento más tarde, si decide hacerlo.

Para eliminar su grupo de Auto Scaling

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación izquierdo, elijaAuto ScalingGroups.

  3. Elija el grupo de Auto Scaling que creó anteriormente.

  4. Elija Actions (Acciones), Delete (Eliminar).

  5. Elija Yes, Delete (Sí, eliminar).