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 así el número total de horas utilizadas al final del mes y reduciendo así 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» 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.
Paso a paso
Se requieren cuatro sencillos pasos para activar Instance Scheduler en una cuenta de AWS.
Paso 1: Aprovisionamiento del stack de Instance Scheduler.
Suponemos que se ha autenticado previamente en el portal. 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:
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 encendidas/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:
Las siguientes pantallas presentarán un resumen de los elementos seleccionados. Haga clic en «Siguiente» en todos ellos.
Paso 2: Configuración 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 «Items», tendrá acceso a períodos predeterminados.
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.
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 a «office-hours».
En el ejemplo anterior, las instancias de Amazon EC2 permanecerán encendidas entre las 08:00 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 inserte 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.
Haga clic en la pestaña «Etiquetas».
Haga clic en el botón «Agregar» para insertar una nueva etiqueta en la instancia de Amazon EC2.
En el campo Clave ingrese la cadena «Schedule» y en el campo Valor 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
Programador de instancias en acción
Establecí un intervalo de tiempo de 8:00 a 5:14. En la figura a continuación podemos observar que la máquina virtual está inicialmente activada para fines de prueba.
Después de la hora establecida (17:14 hs) en el programador de instancias, la instancia virtual se apagó automáticamente, como se muestra en la figura siguiente:
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
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 costes 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 el encendido y apagado manualmente. Sin embargo, es importante prestar atención al coste generado por la propia solución del programador de instancias, que es bajo, pero será responsabilidad del cliente. La documentación oficial informa de un costo aproximado para ejecutar durante 1 mes, pero también puede usar la Calculadora de costos 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 apagar 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.
Sobre el traductor
Armando Barrales Hernández es Arquitecto de Soluciones en AWS México.