Blog de Amazon Web Services (AWS)
Cómo configurar Amazon EC2 Auto Scaling basado en la utilización de la memoria mediante CloudWatch Agent
Con Amazon EC2 Auto Scaling puede ajustar dinámicamente el número de instancias de Amazon EC2, permitiendo que una aplicación tenga el menor coste posible, pero manteniendo un rendimiento adecuado.
De forma nativa, Auto Scaling se puede configurar en función de las métricas de CPU, las métricas de red y el número de solicitudes de un Application Load Balancer. Sin embargo, para configurarlo utilizando el porcentaje de consumo de memoria, se requiere una métrica personalizada de Amazon CloudWatch.
Descripción general de la solución
Para configurar este tutorial, necesita tener una VPC con al menos una Subred con acceso a Internet en su entorno.
Requisitos previos
En Auto Scaling Group crearemos dos Políticas usando la métrica personalizada. En la primera, se agrega una nueva instancia cuando el valor de esta métrica es mayor que 80%; y la segunda instancia, que elimina una instancia si el valor es menor que 30%.Para recopilar y enviar el consumo de memoria a una métrica personalizada de CloudWatch, utilizaremos CloudWatch Agent. Se instalará durante el inicio de la instancia a través de EC2 UserData. La configuración estará disponible de forma centralizada a través de un parámetro AWS Systems Manager.
Crear un parámetro en el almacén de parámetros
- Vaya a la consola de AWS Systems Manager
- En el panel de navegación, seleccione Almacén de parámetros y haga clic en el botón Crear parámetro
- Introduzca el valor /asg-mem-ec2/config en el campo Nombre
- Seleccionar tipo como formato String
- Introduzca el contenido a continuación en el campo Valor y haga clic en el botón Crear parámetro
Crear rol en IAM
1. Vaya a la consola de AWS IAM
2. En el panel de navegación, seleccione Roles y haga clic en el botón Crear rollo
3. Seleccione EC2 como el servicio que utilizará el desplazamiento y haga clic en Siguiente: Permisos
4. Seleccione las siguientes directivas:
- CloudWatchAgentServerPolicy
- AmazonssmManagedInstanceCore
5. Vaya a la sección Revisar e introduzca el valor ROLE-MEM-ASG en el campo Nombre del rol y haga clic en Crear rol
Crear configuración de lanzamiento en Amazon EC2
1. Vaya a la consola de Amazon EC2
2. En el panel de navegación, seleccione Iniciar configuraciones, y haga clic en el botón Crear configuración de inicio
3. En Elegir AMI seleccione la imagen más reciente de Amazon Linux
4. En Elegir tipo de instancia mantenga la configuración predeterminada
5. En Crear configuración de inicio
a. Introduzca el valor LC-MEM-ASG en el campo Nombre
b. En el rol de IAM seleccione el rol ROLE-MEM-ASG
c. Expanda la sección Detalles avanzados y rellene los datos de usuario con el siguiente contenido
6. En Configurar grupo de seguridad seleccione el grupo de seguridad de su elección
7. Vaya a la pestaña Revisar, compruebe los datos y haga clic en Crear configuración de inicio
8. En Elegir un par de claves existente seleccione Continuar sin un par de claves, confirme la casilla de verificación a continuación y haga clic en Crear configuración de inicio
Crear grupo de Auto Scaling en Amazon EC2
1. Vaya a la consola de Amazon EC2
2. En el panel de navegación, seleccione Grupos de Auto Scaling, y haga clic en el botón Crear grupos de Auto Scaling
3. Seleccione Launch Configuration LC-MEM-ASG creado en la sección anterior y haga clic en Next Step
4. En Crear grupo de Auto Scaling
a. Introduzca el valor ASG-MEM-ASG en el campo Nombre de Grupo
b. En Tamaño de grupo mantenga el valor 1
c. En Red y subred seleccione la VPC y las subredes de su elección
5. En Configurar directivas de escalado
a. Seleccione Usar políticas de escala para ajustar la capacidad de este grupo
b. En Escala entre introduzca los valores 1 y 2
c. En Tamaño de grupo de escala haga clic en el vínculo Escalar el grupo Auto Scaling usando políticas de escala escalada o simple
d. En Aumentar tamaño de grupo
i. Introduzca el valor AddInstance en el campo Nombre
ii. Haga clic en el vínculo Crear una directiva de escala simple
iii. Introduzca en Tomar la acción o los valores Añadir 1 unidades de capacidad
e. En Disminuir el tamaño del grupo
i. Introduzca el valor RemoveInstance en el campo Nombre
ii. Haga clic en el vínculo Crear una directiva de escala simple
iii. Introduzca en Tomar la acción los valores Eliminar 1 unidades de capacidad
6. En Configurar etiquetas
a. Introduzca el valor Nombre en Clave
b. Introduzca el valor INSTANCE-MEM-ASG en Valor
c. Mantener seleccionadas las nuevas instancias de etiqueta
Crear alarma de alta memoria en CloudWatch
Nota: Después de completar el paso anterior, la métrica que creó puede tardar unos 5 minutos en aparecer en CloudWatch
1. Vaya a la consola de Amazon CloudWatch
2. En el panel de navegación, seleccione Alarmas, y haga clic en el botón Crear alarma
3. Haga clic en Seleccionar métrica
a. En Espacios de nombres personalizados haga clic en CWAgent
b. En Métricas haga clic en AutoScalingGroup
c. Seleccione Grupo de Auto Scaling ASG-MEM-ASG
d. Finalice haciendo clic en el botón Seleccionar métrica
4. En el período de cambio de métrica a 1 minuto
5. En Definir la condición de alarma seleccione Mayor
6. En Condiciones escriba en el entonces… el valor 80 y, a continuación, haga clic en Siguiente
7. En Notificaciones haz clic en el botón Eliminar
8. En la acción Auto Scaling
a. Haga clic en Agregar acción de escalado automático
b. En Seleccionar un grupo seleccione Auto Scaling Group ASG-MEM-ASG
c. En Tomar la siguiente acción… seleccione AddInstance
d. Haga clic en Siguiente
9. Introduzca el valor HighMemoryAlarm-MEM-ASG en Nombre de alarma
10. Compruebe los datos y haga clic en el botón Crear alarma
Crear alarma de baja memoria en CloudWatch
1. Vaya a la consola de Amazon CloudWatch
2. En el panel de navegación, seleccione Alarmas, y haga clic en el botón Crear alarma
3. Haga clic en Seleccionar métrica
a. En Espacios de nombres personalizados haga clic en CWAgent
b. En Métricas haga clic en AutoScalingGroup
c. Seleccione Grupo de Auto Scaling ASG-MEM-ASG
d. Finalice haciendo clic en el botón Seleccionar métrica
4. En el período de cambio de métrica a 1 minuto
5. En Establecer la condición de alarma, seleccione Inferior
6. En Condiciones escriba en el entonces… el valor 30 y, a continuación, haga clic en Siguiente
7. En Notificaciones haz clic en el botón Eliminar
8. En la acción Auto Scaling
a. Haga clic en Agregar acción de escalado automático
b. En Seleccionar un grupo seleccione Auto Scaling Group ASG-MEM-ASG
c. En Tomar la siguiente acción… seleccione RemoveInstance
d. Haga clic en Siguiente
9. Introduzca el valor LowMemoryAlarm-MEM-ASG en Nombre de alarma
10. Compruebe los datos y haga clic en el botón Crear alarma
Prueba de Auto Scaling
1. Vaya a la consola de AWS Systems Manager
2. En el panel de navegación, seleccione Administrador de sesiones, y haga clic en el botón Iniciar sesión
3. Seleccione la instancia INSTANCE-MEM-ASG y haga clic en Iniciar sesión
4. En la sesión de terminal abierta, ejecute los siguientes comandos
Conclusión
En esta entrada de blog, describimos las instrucciones detalladas para configurar Amazon EC2 Auto Scaling para admitir aplicaciones que dependen principalmente del uso de memoria. Para recopilar la métrica aplicada en la configuración, utilizamos CloudWatch Agent.
Para obtener más información sobre otras métricas recopiladas por el agente de CloudWatch, visite Métricas recopiladas por el agente de CloudWatch.
Nota: Para evitar cargos futuros, recuerde eliminar todos los recursos creados.
Thiago Pádua
AWS Solutions Architect, trabaja con el desarrollo y la asistencia de socios del sector público. Anteriormente trabajó en el desarrollo de software e integración de sistemas, principalmente en la industria de las telecomunicaciones. Tiene un interés especial en la arquitectura de microservicios, sin servidor y contenedores.