Ayer
nos llegó una beta para EC2, el nuevo
servicio de Amazon para servidores virtuales integrado en su servicio de S3.
Cuando
oí por primera vez de que iba, rápidamente pensé en esos lentos y poco
productivos servidores virtuales, que no haces otra cosa que batallar por los
recursos entre los demás usuarios de la maquina virtual. Pero, ya que habíamos
sido de los pocos elegidos, decidí hecharle un vistazo, a fin de cuentas el
servicio de S3 es impecable, y si Amazon decide sacar un servicio así es por
que está orgulloso de él.
¿Cómo
funciona?
Básicamente
han unido algo parecido a UML con un repositorio de imágenes guardadas en S3.
Mediante un conjunto de herramientas puede ordenar el inicio de una máquina
virtual con una de las imágenes que tengas en tu repositorio, y en poco menos
de un minuto tu máquina se ha “instanciado”, tiene una IP pública y puedes
acceder a ella mediante SSH. Por cada
hora (o fracción) que tengas una instancia encendida, has de pagar 0.10$, lo
cual hace que cada servidor nos cuesta entre 70 y 75 dólares dependiendo del mes.
¿Que
tipo de imágenes se pueden cargar?
Pues en
principio cualquier imagen que sea compatible con el núcleo de Linux 2.6,
aunque ellos sólo soportan Redhat Fedora 3 y 4. Como ya me acostumbré a Debian
y cualquier otra cosa me cansa rápidamente, me puse manos a la obra para hacer
una imagen de Debian usando debootstrap … Lo cierto es que fue un rotundo
fracaso además de una pérdida de tiempo enorme: generar la imagen, instalar
todo lo que quería instalar, comprimirlo, y enviarlo. Y acabé haciendo una
copia de las imágenes públicas existentes de prueba.
¿Es
permanente la información que guardemos en el servidor?
Pues la
respuesta es tristemente: No. Si la instancia se termina, todo lo que haya en
el servidor se perderá y solo se recuperará la imagen inicial con la que
arrancó el servidor. Toda nuestra base de datos, logs y configuraciones se
perderán. Es por eso que tenemos a nuestra disposición herramientas de backup
muy muy útiles, que, sacando partida a la velocidad y agilidad de S3, se
convierte en una tarea muy simple.
Es por
este motivo que es casi OBLIGADO hacer un sistema de archivos distribuido entre
varias instancias. De lo contrario, te arriesgas a la peor de tus pesadillas,
lo cual, sube los costes considerablemente.
¿Es
más rápido que un servidor virtual?
Aunque
la respuesta es claramente sí, todavía se nota mucho más ágil un servidor
normal (especialmente en tareas pesadas como compilar o mover grandes
cantidades de datos).
Aquí
teneis algunos benchmarks muy simples que he hecho:
Aunque
la diferencia es una nada despreciable 1/3 parte más lento que nuestros servidores dedicados, es más que suficiente para un servidor
especializado (web, base de datos, servidor de aplicaciones,…).
Sorprendentemente,
vemos a nuestro buen AMD/FreeBSD rompiendo los esquemas nuevamente. Aunque, al
ser otra plataforma, no es lícito comparar los resultados.
¿Es
robusto para poner nuestras aplicaciones más críticas?
Aquí es
donde claramente brilla sobre los servidores habituales. Se adapta al 100% a nuestras necesidades.
Implementa firewalls i herramientas de administración en grupos que parecen sacadas de un libro de magia. (Por ejemplo, uno de los
parámetros cuando creamos una instancia es, ¡el número de éstas! Por lo que
podemos arrancar directamente un cluster de 20 servidores web y otros 10 de
bases de datos en pocos minutos, que se escala a tus necesidades).
Algunas
curiosidades…
Parece
ser que las CPUs son Amd Opterons, como no podía ser de otra forma (AMD
Opteron(tm) Processor 250). La plataforma consta de 1.75GB de memoria ram y
160GB de disco duro *volátil*.
Las
herramientas internas para la creación de las imágenes y la publicación de
estas en el servidor de S3 están hechas en Ruby.
No es
posible asignar una IP estática a un servidor. Siempre se obtiene por DHCP. En
función de algunas instancias, es posible que un servidor use la IP de otra
instancia que hayas terminado recientemente.
El ping
con Google es de 2ms =)´´´
La
prueba
Para
ver qué tal se comporta el servidor virtual, hemos hecho una réplica de
Pricenoia dentro de los servidores virtuales de Amazon en esta dirección:
http://domU-12-31-33-00-02-6A.usma1.compute.amazonaws.com/
Claramente
parece responder un poco peor que nuestro ya viejo Freebsd, aunque demuestra un
rendimiento excepcional en las operaciones de cálculo y procesado de textos.
Lamentablemente
parece que todavía están realizando pruebas, y tiene micro-cortes que son
bastante molestos. Se puede notar en el web, pero se nota especialmente al
acceder vía SSH (he llegado a ver como se quedaba congelada la sesión SSH
durante más de 30 segundos) aunque por lo general tiene una respuesta
estupenda.
ya puedes montar tu s3 en una instancia de ec2 :) ahora tu sabes como puedo levantar más instancias de ec2??
saludos.
Posted by: xanatos | 03/21/2007 at 19:36
hola que tal, bueno ya puede levantar más instancias, :o pero ahora no se si tu ya lo habras hecho, levantar instancias en paralelo de ec2, o sea que al estar casi a su limite una, se prenda otra, y asi sucecivamente.
Saludos.
Posted by: xanatos | 04/10/2007 at 18:39
Lo único que he aprendido es que EC2 está muy bien, pero necesitas un "master" externo a EC2 para redirigir todo el tráfico. Una especie de proxy inverso a tu cluster de EC2 es la mejor manera de gestionarlo todo bien.
Mediante unos simples scripts de ruby es posible levantar instancias, y ya dependiendo de cada aplicación, y con estadísticas en las manos, es posible automatizar que se creen y se den de baja las instancias según las necesidades.
Posted by: Horaci | 05/15/2007 at 18:01
Alguien sabe si hay alguna forma fácil de hacerse una cuenta de test, me gustaría probar el servicio antes de recomendarlo a la empresa y luego salir mal parado.
Posted by: Oriol | 06/08/2007 at 09:44
Alguien sabe si hay alguna forma fácil de hacerse una cuenta de test, me gustaría probar el servicio antes de recomendarlo a la empresa y luego salir mal parado.
Posted by: Oriol | 06/08/2007 at 09:44