Ubuntu Enterprise Cloud

UEC Architecture

Ubuntu Enterprise Cloud permite el despliegue de una Cloud privada, con el enfoque infraestructura como servicio(IaaS) compatible con Amazon EC2. Usa el hypervisor KVM y una versión de Eucalyptus modificada para usarlo. En este post revisaremos la arquitectura e instalación de Ubuntu Enterprise Cloud, siendo principalmente un resumen, y traducción, de la documentación pertinente.

Una visión general de los componentes se presenta en el siguiente diagrama, tomado del white paper Ubuntu Enterprise Cloud Architecture:

UEC Architecture

Cloud Controller

Provee la interface con la que el usuario de la cloud interactúa. Esta interface se compone de una API SOAP standard compatible con la API de Amazon EC2, una interfaz de consulta más simple que es usada por euca2ools y ElasticFox,  y una interfaz web tradicional para la interacción directa.

Walrus Storage Controller(WS3)

Implementa APIs REST y SOA que son compatibles con Amazon Simple Storace Protocol (S3). Es usado para almacenar las imágenes de máquinas que pueden ser instanciadas por UEC y para acceder y almacenar datos. Actualmente la máquina en la cual corre el Cloud Controller también corre WS3, pero se espera que ésta limitación sea removida en las siguientes versiones.

Elastic Block Storage Controller(EBS)

Corre en la misma máquina que el Cluster Controller y se configura cuando éste es instalado. Permite crear dispositivos de bloques persistentes que pueden ser montados en máquinas en ejecución.  Estos dispositivos pueden ser usados como cualquier dispositivo de bloques, por ejemplo creando en ello un sistema de archivos.

EBS permite crear instantaneas de volúmenes, que son almacenados en WS3. Las instantaneas pueden ser usadas como punto de inicio para nuevos EBS. La misma instantánea puede ser usada para instanciar tantos volúmenes como se desee.

A nivel de red los dispositivos de bloques se acceden usando ATA over Ethernet(AoE). Dado que los paquetes no pueden ser ruteados se requiere  que tanto el EBS como los nodos que tienen las imágenes de las máquinas que lo acceden estén en el mismo segmento Ethernet.

Cluster Controllers

Opera entre los Node Controllers y el Cloud Controller. Recibe las peticiones para asignar imágenes de máquinas del Cloud Controller y decide cual Node Controller correrá la instancia de máquina (MInst). Esta decición es tomada en base a los reportes de estado que el Cluster Controller recibe de cada Node Controller. También puede responder al Cloud Controller acerca de la capacidad del cluster de correr tipos específicos de instancia, ayudándolo a decidir sobre cual cluster correr nuevas instancias.

El Cluster Controller está a cargo de manejar las redes virtuales que las Minst corran y enrutar el tráfico entre ellas. Los Cluster Controllers también corren los EBS Controllers. El grupo formado por un Cluster Controller y EBS Controller y un número variable de Node Controllers conforman el equivalente a las “zonas de disponibilidad” de Amazon.

Node Controllers

Corre en las máquinas físicas en las cuales se instanciarán las imágenes de máquinas. Interactúa con el hypervisor y el sistema operativo corriendo en el nodo, según es instruido por el Cluster Controller. La tarea inicial del Node Controller es descubrir el entorno en el cual está corriendo, en términos de recursos disponibles(memoria, espacio en disco, tipo de procesador y número de núcleos) así como máquinas virtuales en ejecución que puedieron se iniciadas independientemente del Node Controler, Cluster Controller y Cloud Controller.

Los node controllers esperan y realizan las tareas solicitadas por el Cluster Controller (iniciar o parar instancias) o responde a consultas de disponibilidad.

Cuando le llega una petición para instanciar una imágen de máquina el NC debe:

  1. verificar la autenticidad de la petición.
  2. Descargar la imagen de WS3(Las imágenes son cacheadas, para iniciar varias instancias en una máquina sólo se descarga una vez).
  3. Se crea la intefaz de red virtual (VNI).
  4. Inicia la instancia de la máquina corriendo como una maquina virtual.

Para detenerla se realizan las operaciones opuestas en el orden 1,4,3.

Instalación y despliegue.

A continuación se describirán los pasos necesarios para desplegar UEC con una máquina sirviendo como controlador (cloud controller, cluster controller, storage controller, walrus) y varias máquinas como nodos (node controller). Siguiendo el procedimiento de instalación desde CD.

Paso 0: Prerrequisitos

Para el controlador, directamente desde la página de Ubuntu:

Hardware Minimo Sugerido Notas
CPU 1GHz 2 x 2GHz Para front-ent “todo en uno”(como en nuestro caso) ayudo tener al menos un procesador dual core.
Memoria 2GB 4GB El front-end java se beneficia de la cantidad de memoria disponible.the Java web front end benefits from lots of available memory
Disco 5400rpm IDE 7200rpm SATA Discos más lentos funcionan, pero lleva a tiempos de inicio de la instancia mucho más altos.
Espacio en Disco 40GB 200GB 40GB es suficiente sólo para una imagen, cache, etc.A Eucalyptus no le gusta quedarse sin espacio.
Networking 100Mbps 1000Mbps Las imágenes de máquina tienen cientos de MB, y necesitan ser copiadas a través de la red a los nodos.

Para los nodos:

Hardware Mínimo Sugerido Notas
CPU VT extensions VT, 64-bit, Multicore Procesadores de 64-bits pueden corer instancias tanto i386 como amd64; por defecto, Eucalyptus correrá sólo 1VM por Nucleo en un nodo.
Memoria 1GB 4GB Memoria adicional significa más, y más grandes, invitados (VM).
Disco 5400rpm IDE 7200rpm SATA or SCSI Los nodos de Eucalyptus tienen uso intensive de disco. Espera por I/O será, probablemente, el cuello de botella para el desempeño.
Espacio en disco 40GB 100GB Las imágenes serán “cacheadas” localmente. A Eucalyptus no le gusta quedarse sin espacio.
Networking 100Mbps 1000Mbps Las imágenes de máquina tienen cientos de MB, y necesitan ser copiadas a través de la red a los nodos.

Paso 1: Instalación del controlador.

  1. Descargar la imágen iso de Ubuntu Server 10.04(o 10.10)
  2. Cuando inicie seleccionar “Install Ubuntu Enterprise Cloud”.
    bootscreen.png
  3. El instalador va a detectar si existe otro componente de Eucalyptus. Si no encuentra un nodo cloud controller solicitará la dirección, en éste caso, la dejaremos en blanco(ésta máquina será nuestro Cloud Controller).
    uec1.png
  4. Se pueden seleccionar los componentes deseados. Para nuestro caso seleccionaremos en la primera máquina Cloud Controller, Walrus storage service, Cluster Controller y Storage controller.
    uec2.png
  5. El instalador hará dos preguntas más durante la instalación especificas a cloud:
    1. Nombre del cluster, e.g. cluster1.
      uec3.png
    2. Un rango de direcciones IP públicas en la red local que puedan ser asignadas a las instancias.e.g. 192.168.1.200-192.168.1.249.
      uec4.png

Paso 2:

Instalación de los nodos:

La instalación del Node Controller es simple. Asegurandose que se está conectado a la rede en la cual el controlador de Cloud o el controlador de cluster está corriendo.

  1. Se inicia, desde la misma ISO, en el nodo.
  2. Selecciona “Install Ubuntu Enterprise Cloud”
  3. Él instalador debería detectar el Cluster y preseleccionar la instalación “Node”.
  4. Confirmar el esquema de particionamiento.
  5. El resto de la instalación debería seguir de manera ininterrumpida. Al terminar la instalación se reinicia la máquina.

Paso 3: Registro de los nodos.

El registro de los nodos es automático. Si se instala un nuevo nodo a partír de una instalación existente de Ubuntu instalando los paquetes de UEC será necesario registrarlo.

Paso 4: Obtener Credenciales

Una vez se inicia el controlador los usuarios deben obtener sus credenciales. Lo pueden hacer a través del un navegador web o por linea de comandos.

A través del navegador:

Ingresa a:

https://<cloud-controller-ip-address>:8443/

Inicia sesión con el usuario admin, la primera vez la contraseña será admin se solicitará actualizar el correo del administrador y la contraseña. Una vez la primera configuración está completa se selecciona la pestaña credenciales(“credentials”) en la parte superior izquierda de la pantalla.

Se hace clic en descargar credenciales para obtener los certificados. Se descargan y descomprimen en:

 ~/.euca
cd ~/.euca
unzip -d ~/.euca mycreds.zip
Desde línea de comandos:

Estando en una terminal en el controlador:

mkdir -p ~/.euca
chmod 700 ~/.euca
cd ~/.euca
sudo euca_conf --get-credentials mycreds.zip
unzip mycreds.zip
ln -s ~/.euca/eucarc ~/.eucarc
cd -
Usar los certificados:

Es necesario configurar EC2 API y las herramientas AMI del servidor usando certificados X.509.

  1. Intalar las herramientas requeridas de usuario cloud:
    sudo apt-get install euca2ools
  2. Para validar que todo está funcionando correctamente, obtener los detalles de disponibilidad del cluster local:
    . ~/.euca/eucarc
    euca-describe-availability-zones verbose
    AVAILABILITYZONE   myowncloud                 192.168.1.1
    AVAILABILITYZONE   |- vm types                free / max   cpu   ram  disk
    AVAILABILITYZONE   |- m1.small                0004 / 0004   1    192     2
    AVAILABILITYZONE   |- c1.medium               0004 / 0004   1    256     5
    AVAILABILITYZONE   |- m1.large                0002 / 0002   2    512    10
    AVAILABILITYZONE   |- m1.xlarge               0002 / 0002   2   1024    20
    AVAILABILITYZONE   |- c1.xlarge               0001 / 0001   4   2048    20

Paso 5: Instalar una imagen desde el almacén.

Acceder a través de un navegador web a:

https://<cloud-controller-ip-address>:8443/

Ingresar usuario y contraseña, si es necesario, y seleccionar la pestaña store. Buscar entre las imágenes disponibles y hacer clic en instalar en la imagen deseada.

Una vez instalada la imagen se puede seleccionar el link “how to run” para ver el comando para instanciarla.

Paso 6: Ejecutar una imagen

Hay varias formas de ejecutar una imagen en UEC:

Fuentes

Ubuntu Enterprise Cloud Architecture

Ubuntu Private Cloud

ACTUALIZACIÓN 20/07/2012

Desde Ubuntu 11.10 Ubuntu Enterprise Cloud es reemplazado por Ubuntu Cloud Infraestructure, basado en Open Stack.