hit counter

Sistemas y servicios informáticos para Internet. Curso 2009-2010

Capítulo 13. Eucalyptus

Tabla de contenidos

13.1. Preparación del entorno de trabajo
13.2. Trabajando con Eucalyptus
13.2.1. Ejecución de imágenes ya disponibles
13.2.2. Ejecución de imágenes nuevas
13.2.3. Ejecución de varias instancias

13.1. Preparación del entorno de trabajo

Para trabajar con Eucalyptus debes utilizar las herramientas de Amazon. Empieza descargándotelas:

$> wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-30349.zip
$> wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.3-26357.zip

Nota

Fíjate que ya estás utilizando servicios de cloud: las herramientas están alojadas en S3, el servicio de almacenamiento en cloud de Amazon

Descomprime las herramientas, instálalas y prepara el entorno de ejecución para trabajar con ellas:

$> wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-30349.zip
$> wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.3-26357.zip
$> unzip ec2-api-tools-1.3-30349.zip -d $HOME/ec2
$> unzip ec2-ami-tools-1.3-26357.zip -d $HOME/ec2
$> export EC2_HOME=$HOME/ec2/ec2-api-tools-1.3-30349
$> export EC2_AMITOOL_HOME=$HOME/ec2/ec2-ami-tools-1.3-26357
$> export PATH=$PATH:$EC2_AMITOOL_HOME/bin:$EC2_HOME/bin
$> export JAVA_HOME=/usr/java/default
$> echo "export EC2_HOME=$HOME/ec2/ec2-api-tools-1.3-30349" >> $HOME/.bashrc
$> echo "export EC2_AMITOOL_HOME=$HOME/ec2/ec2-ami-tools-1.3-26357" >> $HOME/.bashrc
$> echo "export PATH=$PATH:$EC2_AMITOOL_HOME/bin:$EC2_HOME/bin" >> $HOME/.bashrc

Para trabajar con Eucalyptus es necesario registrarse como usuario. En un navegador, abre la dirección https://tecgrid03.epv.uniovi.es:8443 y pide una cuenta con el botón Apply y rellenando los datos básicos que se te piden. Avisa al profesor para que te active la cuenta.

Una vez que tengas activada la cuenta, entra en el interfaz de configuración de Eucalyptus. Debes descargarte el certificado pulsando en el botón Download Certificate. Copia el archivo .zip descargado a tu cuenta en tecgrid03.epv.uniovi.es con el nombre cert.zip (para ello puedes usar por ejemplo WinSCP). Descomprime el certificado con esta orden:

$> unzip cert.zip -d $HOME/.eucalyptus

Este fichero contiene los certificados X.509 para trabajar con esta instalación de Eucalyptus. Siempre que quieras trabajar con Eucalyptus tienes que ejecutar la siguiente orden para que las herramientas de Amazon utilicen estos certificados:

$> . $HOME/.eucalyptus/eucarc

Las herramientas de Amazon utilizan la variable http_proxy, pero como se va a acceder a direcciones de una red privada que no están disponibles para el proxy, es neceario desactivarlo:

$> unset http_proxy

13.2. Trabajando con Eucalyptus

13.2.1. Ejecución de imágenes ya disponibles

En primer lugar, se puede analizar las zonas de disponibilidad en esta nube:

$> ec2-describe-availability-zones verbose
AVAILABILITYZONE        mesa3   tecgrid03.epv.uniovi.es

A continuación se pueden ver las imágenes disponibles:

$> ec2-describe-images
IMAGE   emi-F49C1184    image-bucket/ttylinux.img.manifest.xml  admin   available       public          i386    machine
IMAGE   eki-90551389    kernel-bucket/vmlinuz-2.6.16.33-xen.manifest.xml        admin   available       public          i386    kernel

Como puedes observar, hay imágenes dentro del bucket image y dentro del kernel. Vamos a utilizar una de estas imágenes para lanzar una máquina:

$> ec2-run-instances emi-F49C1184 --kernel eki-90551389
RESERVATION     r-3F6B070B      joaquin joaquin-default
INSTANCE        i-451F0761      emi-F49C1184    0.0.0.0 0.0.0.0 pending         0               m1.small        2009-03-22T21:26:31+0000                eki-90551389

La línea anterior te devuelve un nombre de instancia (i-451F0761 en este caso) que podrás utilizar para manejarla. Inicialmente la imagen está pendiente de ser arrancada. Ejecuta ec2-describe-instances hasta que veas que ha pasado al estado running:

$> ec2-describe-instances
RESERVATION     r-3F6B070B      joaquin default
INSTANCE        i-451F0761      emi-F49C1184    0.0.0.0 192.168.3.19    running         0               m1.small        2009-03-22T21:26:31+0000                eki-90551389

Fíjate que esta orden ofrece otra información muy importante: la dirección IP de la instancia arrancada. Como puedes observar, es una dirección privada dentro de la red privada de la mesa3. Por lo tanto, no estará disponible desde el exterior. Para que esto fuera posible, sería necesario disponer de direcciones públicas.

$> ssh root@192.168.3.19
The authenticity of host '192.168.3.19 (192.168.3.19)' can't be established.
RSA key fingerprint is 93:e7:a9:8a:df:3d:4a:bc:9e:5c:45:23:17:b5:53:cd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.3.19' (RSA) to the list of known hosts.
joaquin@192.168.3.19's password:

Nota

Tienes que cambiar la dirección IP de la orden anterior y de todas las siguientes por la que tenga tu instancia

Nota

La contraseña es root

Dentro de la instancia lanzada, crea un archivo con esta orden, sustituyendo "MI_NOMBRE" por tu nombre:

$> echo "Soy MI_NOMBRE" > MI_NOMBRE
RESERVATION     r-3F6B070B      joaquin default
INSTANCE        i-451F0761      emi-F49C1184    0.0.0.0 192.168.3.19    running         0               m1.small        2009-03-22T21:26:31+0000                eki-90551389

Sal de la máquina virtual con:

$> exit
logout
Connection to 192.168.3.19 closed.
[joaquin@tecgrid03 ~]$

Ahora vas a acabar la instancia lanzada con:

$> ec2-terminate-instances i-451F0761
INSTANCE        i-451F0761      running shutting-down

Comprueba con ec2-describe-instances que la máquina se apaga:

$> ec2-describe-instances
RESERVATION     r-3F6B070B      joaquin default
INSTANCE        i-451F0761      emi-F49C1184    0.0.0.0 192.168.3.19    terminated              0               m1.small        2009-03-22T21:26:31+0000                eki-90551389
$> ec2-describe-instances

Lanza una nueva instancia, entra en ella y comprueba si está el fichero que habías creado. Cuando lo hayas hecho, desde dentro de la máquina ejecuta halt y comprueba con ec2-describe-instances que termina la instancia igual que ec2-terminate-instances.

Nota

La sesión de SSH se queda colgada, así que tendrás que abrir otra terminal para matar el proceso de SSH.

13.2.2. Ejecución de imágenes nuevas

La máquina anterior era una ya disponible, como las que ofrece Amazon creadas inicialmente, pero también puedes crear tus propias imágenes en las que tengas tus propias aplicaciones y datos. Vamos a subir el sistema de ficheros con el que trabajaste anteriormente, que tenía el fichero msg.txt. Este ejercicio sirve también para comprobar cómo funciona el almacenamiento S3.

Ejecuta las siguientes órdenes para subir la imagen a Walrus, el equivalente de S3 de Eucalyptus. En primer lugar, crea un bundle:

$> ec2-bundle-image -i ttylinux-xen -d .
Please specify a value for arch [i386]:
Bundling image file...
Splitting /tmp/ttylinux-xen.tar.gz.enc...
Created ttylinux-xen.part.0
Generating digests for each part...
Digests generated.
Creating bundle manifest...
ec2-bundle-image complete.

Esto te ha creado en el directorio actual dos ficheros: ttylinux-xen.manifest.xml y ttylinux-xen.part.0.

Sube ahora el bundle a la nube con esta orden:

$> ec2-upload-bundle -b image-bucket-$USER -m ttylinux-xen.manifest.xml
Are you sure you want to specify a different EC2 public certificate? [y/n]
y
Using specified EC2 public certificate: /home/joaquin/.eucalyptus/cloud-cert.pem.
Setting bucket ACL to allow EC2 read access ...
Uploading bundled image parts to http://156.35.171.92:8773/services/Walrus/image-bucket-joaquin ...
Uploaded ttylinux-xen.part.0 to http://156.35.171.92:8773/services/Walrus/image-bucket-joaquin/ttylinux-xen.part.0
Uploading manifest ...
Uploaded manifest to http://156.35.171.92:8773/services/Walrus/image-bucket-joaquin/ttylinux-xen.manifest.xml
Bundle upload completed.

Por último, debes registrarlo para que sea posible usar este fichero como imagen de una máquina virtual:

$> ec2-register image-bucket-$USER/ttylinux-xen.manifest.xml
IMAGE   emi-A32514B0

Ejecuta esta orden para ver la nueva imagen:

$> ec2-describe-images
IMAGE   emi-A32514B0    image-bucket-joaquin/ttylinux-xen.manifest.xml  joaquin available       public          i386    machine
IMAGE   emi-F49C1184    image-bucket/ttylinux.img.manifest.xml  admin   available       public          i386    machine
IMAGE   eki-90551389    kernel-bucket/vmlinuz-2.6.16.33-xen.manifest.xml        admin   available       public          i386    kernel

Ahora vas a lanzar una máquina virtual que utilice esta imagen:

$> ec2-run-instances emi-A32514B0 --kernel eki-90551389
RESERVATION     r-44450825      joaquin joaquin-default
INSTANCE        i-2BDE0564      emi-A32514B0    0.0.0.0 0.0.0.0 pending         0               m1.small        2009-03-22T22:40:29+0000                eki-90551389

Nota

Fíjate que debes sustituir emi-A32514B0 por el identificador de la máquina que te haya devuelto ec2-register

Espera hasta que esté lista la máquina y conéctate a ella:

$> ec2-describe-instances
RESERVATION     r-44450825      joaquin default
INSTANCE        i-2BDE0564      emi-A32514B0    0.0.0.0 192.168.3.19    running         0               m1.small        2009-03-22T22:40:29+0000                eki-90551389

13.2.3. Ejecución de varias instancias

A continuación debes repetir el proceso para lanzar otra instancia.

Escribe un fichero en una de las instancias y comprueba si lo ves en la otra.

Comprueba que puedes hacer un ssh desde una instancia a la otra.

Si tuvieses un distribución con un servidor web, un servidor de bases de datos, clientes de ssh, etc., podrías montar una arquitectura todo lo compleja que deseases con estas máquinas virtuales.

Termina las dos instancias lanzadas, desregistra las imágenes y bórralas de Walrus. Para realizar estas acciones, puedes buscar ayuda al final de esta página de la guía de usuario de Eucalyptus.