Encendido y Apagado de maquinas en AWS
Tue, Sep 1, 2015Dado que Amazon nos va a cargar costes por cada hora (o fracción) que esté levantada una máquina, es posible conseguir un importante ahorro de costes manteniendo nuestras máquinas operativas solo cuando son necesarias.
Encendido y Apagado
La forma más simple de encender o apagar una máquina es desde la propia consola web de Amazon EC2 https://aws.amazon.com/console. Sin embargo la consola no nos permite establecer ningún tipo de encendido o apagado programado, para ello utilizamos las siguientes opciones.
Scripts
Mediante un script de Amazon Command Line http://docs.aws.amazon.com/cli/latest/ es posible lanzar el encendido de una maquina EC2.
Por ejemplo un script CMD desde Windows para levantar una instancia de maquina EC2 podría ser el siguiente:
@mode con cols=150
@echo *******************************************
@echo * START de instancia AWS EC2
@echo *******************************************
@echo -------------------------------------------
@echo SHOW INSTANCES AT START:
@echo -------------------------------------------
@echo %date% %time%
call ec2-describe-instance-status -A -H
@echo -------------------------------------------
@echo START INSTANCE i-7e496098 Tomcat
@echo -------------------------------------------
call ec2-start-instances i-7e496098
@echo -------------------------------------------
@echo SHOW INSTANCES NOW:
@echo -------------------------------------------
call ec2-describe-instance-status -A -H
@echo -------------------------------------------
@echo SHOW VOLUMES NOW:
@echo -------------------------------------------
call ec2-describe-volumes -H
@echo %date% %time%
@echo *******************************************
@echo * END
@echo *******************************************
Este script se puede programar mediante el cron de una máquina para que se lance en el horario deseado de encendido.
Servicio de un tercero
Existen diversos servicios de terceros que pueden realizar el encendido y apagado de nuestras máquinas. De esta forma evitamos tener que contar con una máquina corriendo donde programar nuestros scripts. Uno de ellos es Skeddly
Utilizar el CRON de la propia máquina
Este mecanismo solo es válido para el apagado y se basa en añadir una tarea de apagado en el propio CRON de la maquina a apagar.
Por ejemplo la siguiente entrada en el CRON de Linux apaga la maquina todos los días a una hora concreta.
# m h dom mon dow command
#Apagado
#Todos los dias a las 19:50
50 19 * * * /sbin/shutdown -h now
http://www.taringa.net/post/linux/7152247/Una-guia-de-crontab.html
Configuración en QUERECON AWS
Las maquinas se arrancan mediante Skeddly. Las maquinas se apagan mediante tareas en su propio CRON.
De esta forma está configurado el siguiente horario de servicio:
- Horario Habitual
- Lunes a Jueves de 08:00 a 19:45
- Viernes de 08:00 a 15:45
- Horario de Verano
- Lunes a Viernes de 08:00 a 15:45
Costes
Para una maquina t2.micro en EU-Irlanda el coste de ejecución es de 0,014$/hora. Una maquina encendida las 24 horas, 365 días al año, sería un coste de 122,64$.
- Horario Habitual
- Lunes a Jueves de 08:00 a 19:45 (12 horas)
- Viernes de 08:00 a 15:45 (8 horas)
- Total: 56 horas - 0,784$
- Horario de Verano
- Lunes a Viernes de 08:00 a 15:45 (8 horas)
- Total: 40 horas - 0,56$
Para un año completo, tomando 12 meses, 53 semanas anuales, de las que 9 serían con horario de verano, sería un total de 39,54$. Lo que supone un ahorro del 67%.
A estos costes de ejecución habría que sumar los de almacenamiento aprovisionado, que no varían si la maquina está encendida o no, y los de trasferencias de datos que van a depender del uso que sé a la maquina y no del tiempo que esté encendida
Por ejemplo, para un disco EBS de 8Gb con un snapshot , dado que el precio de alojamiento EBS General Purpose es de 0,11$ por GB-mes, habría que añadir 1,76$ mensual.