Blog de Amazon Web Services (AWS)

Explorando el programador de instancias para optimizar los costos de Amazon Elastic Compute Cloud (Amazon EC2)

Por Gerson Itiro Hidaka, Arquitecto de Soluciones para Integradores de Sistemas Globales

 

Uno de los principales cambios propuestos por la informática en la nube es el cambio en la adquisición de componentes físicos por consumo de servicios bajo demanda con pago por uso. Entre las muchas posibilidades que tenemos para optimizar el uso de instancias de Amazon EC2, una forma sencilla sería controlar el inicio y la parada de instancias bajo demanda, reduciendo el número total de horas utilizadas al final del mes y reduciendo el valor final de la factura.

A modo de comparación, supongamos que la instancia de Amazon EC2 permanece encendida durante todo el mes:

24 horas/día * 30 días = 720 horas.

Si consideramos que la misma instancia permanece conectada sólo 10 horas al día y sólo de lunes a viernes tenemos el siguiente cálculo:

10 horas/día * 22 días = 220 horas. (Reducción aproximada del 69%).

Cuando el entorno tiene muchas aplicaciones, que consisten en varias instancias en cada entorno, la administración manual de inicio/parada se convierte en un reto importante. El «Programador de instancias» (Instance Scheduler) es una solución fácil de configurar para automatizar el encendido de las instancias de Amazon EC2 y RDS.

El objetivo de esta entrada de blog es explorar las principales características de Instance Scheduler en la práctica.

 

Visión General de la Arquitectura del Programador de Instancias

 Todo comienza con el desencadenador de eventos de Amazon CloudWatch que se configura periódicamente (5 minutos) y activa el desencadenador de la función AWS Lambda. Esta función Lambda comprueba el estado actual de cada instancia, con etiquetas predeterminadas, y lo compara con el estado deseado almacenado en Amazon DynamoDB. Después de eso, la función Lambda aplica la acción de inicio o parada a instancias.

 

Figura 1 : Descripción general de la arquitectura de programación de instancias

 

Pasta de mano

Se requieren cuatro sencillos pasos para activar Instance Scheduler en una cuenta de AWS.

Paso 1: Aprovisionamiento de pila del programador de instancias.

Suponemos que se ha autenticado previamente en la consola de AWS. Para facilitar el aprovisionamiento de esta solución, AWS ha creado una solución preconfigurada con AWS CloudFormation. Simplemente haga clic en el siguiente enlace para acceder a la plantilla:

https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/create/template?templateURL=https:%2F%2Fs3.amazonaws.com%2Fsolutions-reference%2Faws-instance-scheduler%2Flatest%2Finstance-scheduler.template

 

Figura 2 – Crear pila

 

Haga clic en el botón «Siguiente».

En la siguiente pantalla se le presentarán varios parámetros que se pueden personalizar para adaptarse a diversos escenarios. Para fines iniciales de exploración, solo he personalizado un campo, la Región donde las instancias serán encendido/apagadas. Establecí la región en sa-east-1 y dejé todos los demás parámetros con el valor predeterminado.

Si desea más detalles sobre cada uno de los parámetros presentados aquí, consulte el siguiente enlace:

https://docs.aws.amazon.com/solutions/latest/instance-scheduler/deployment.html#step1

Las siguientes pantallas presentarán un resumen de los elementos seleccionados. Haga clic en «Siguiente» en todos ellos.

Paso 2: Establecimiento de periodos.

El siguiente paso es configurar el período de tiempo para el inicio y la detención de las instancias de Amazon EC2. Estos períodos se almacenan en DynamoDB. Algunos períodos han sido predeterminados por AWS CloudFormation y pueden modificarse y/o duplicarse. Simplemente acceda a DynamoDB, Tables y seleccione la tabla con el sufijo «ConfigTable». Al hacer clic en la pestaña «Artículos», tendrá acceso a períodos predeterminados.

 

Figura 3 – Configuración del período en DynamoDB

 

Para cambiar un período simplemente haga clic en la línea que desea cambiar y personalice los parámetros desde la propia consola de DynamoDB.

 

Figura 4 – Cambio de período

 

Paso 3: Configuración de programaciones.

Schedule es la configuración que se unirá a Period (configurada en el paso anterior) y TimeZone (Zona horaria). Para adaptarlo a la zona horaria, voy a duplicar el elemento «seattle-office-hour» cambiando el nombre a «sp-office-hours» y mantener el período como «office-hours».

 

Figura 5 – Configuración del «Período» y «Horario»

 

En el ejemplo anterior, las instancias de Amazon EC2 permanecerán conectadas entre las 08:00 a.m. y las 6:00 p.m.

 

Paso 4: Etiquetas en instancias.

El siguiente paso será determinar qué instancias se encenderán y apagarán de acuerdo con la programación que configuramos en el paso anterior. Para ello, simplemente añada una etiqueta en la instancia de Amazon EC2.

Haga clic en el menú Servicios, Amazon EC2.

Seleccione la instancia de Amazon EC2 que participará en el Programador de instancias.

 

Figura 6 : Instancias de Amazon EC2

 

Haga clic en la pestaña «Etiquetas».

Haga clic en el botón «Agregar» para añadir una nueva etiqueta en la instancia de Amazon EC2.

 

Figura 7 – Agregar etiquetas

 

En el campo Clave (Key) ingrese la cadena «Schedule» y en el campo Valor (Value) ingrese el nombre de la programación creada previamente. En mi ejemplo utilicé «sp-office-hours».

¡Listos! La instancia de Amazon EC2 se activará y desactivará según la programación personalizada en 4 pasos.

 

Programador de instancias en acción

Establecí un intervalo de tiempo de 8:00a.m. a 5:14p.m.. En la figura a continuación podemos observar que la máquina virtual está inicialmente activada para fines de prueba.

 

Figura 8 : Instancia conectada de Amazon EC2

 

Después de la hora establecida (17:14 hs) en el programador de instancias, la instancia virtual se cerró automáticamente, como se muestra en la figura siguiente:

 

Figura 9 : Instancia de Amazon EC2 desactivada

 

Todas las acciones del programador de instancias se escriben en CloudWatch.

Para comprobar las acciones simplemente abra CloudWatch, haga clic en el menú Logs, luego Log Group y haga clic en la línea correspondiente a la función Lambda del programador de instancias. En mi ejemplo, el grupo de registro es /AWS/lambda/Itiro-instance-Schedule-instanceSchedulerMain

 

Figura 10 : Registros de CloudWatch

 

Conclusión

La solución de programador de instancias automatiza la acción de encender y apagar instancias de Amazon EC2, lo que contribuye a optimizar los costos de Amazon EC2. Tiene sentido utilizar el programador de instancias en entornos con un número significativo de instancias de Amazon EC2, porque en esta situación es bastante difícil controlar la energía manualmente. Sin embargo, es importante prestar atención al costo generado por la propia solución del programador de instancias, que es bajo, pero será responsabilidad del cliente. La documentación oficial informa un costo aproximado para ejecutar durante 1 mes, pero también puede usar la Calculadora Mensual Simple para realizar esta estimación.

Inicie sesión en AWS Management Console hoy mismo y descubra cuánto puede ahorrar en su entorno eligiendo qué instancias bajo demanda de Amazon EC2 se pueden encender y apagarse según su escenario de uso.

 

Este artículo fue traducido del Blog de AWS en Portugués.

 


Sobre el autor

Gerson Itiro Hidaka es Arquitecto de Soluciones para Integradores de Sistemas Globales. Entusiasta de tecnologías como el Internet de las Cosas, Drones, Devops y experto en tecnologías como VMware, Container y Kubernetes. Trabaja en estrecha colaboración con Global System Integrators (GSI) para impulsar el viaje en la nube y crear soluciones para clientes.