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:
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:
- verificar la autenticidad de la petición.
- Descargar la imagen de WS3(Las imágenes son cacheadas, para iniciar varias instancias en una máquina sólo se descarga una vez).
- Se crea la intefaz de red virtual (VNI).
- 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.
- Descargar la imágen iso de Ubuntu Server 10.04(o 10.10)
- Cuando inicie seleccionar “Install Ubuntu Enterprise Cloud”.
- 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).
- 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.
- El instalador hará dos preguntas más durante la instalación especificas a cloud:
- Nombre del cluster, e.g. cluster1.
- 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.
- Nombre del cluster, e.g. cluster1.
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.
- Se inicia, desde la misma ISO, en el nodo.
- Selecciona “Install Ubuntu Enterprise Cloud”
- Él instalador debería detectar el Cluster y preseleccionar la instalación “Node”.
- Confirmar el esquema de particionamiento.
- 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.
- Intalar las herramientas requeridas de usuario cloud:
sudo apt-get install euca2ools
- 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:
- Desde linea de comandos
- Usando una herramienta compatible con UEC como Landscape.
- Usando Hybridfox, un fork de ElasticFox.
Fuentes
Ubuntu Enterprise Cloud Architecture
ACTUALIZACIÓN 20/07/2012
Desde Ubuntu 11.10 Ubuntu Enterprise Cloud es reemplazado por Ubuntu Cloud Infraestructure, basado en Open Stack.
Muy bueno el artículo, alguna forma de administrar esta aplicación?
Hey como puedo crear mi propia aplicacion para que este como imagen cualquier app que hayas creado , dejarla como soft en la nube.
Hay varias opciones para crear una nueva imagen, una de ellas es usando vmbuilder. Hay un pequeño video de cómo crear, y registrar, una imagen personalizada para UEC en el canal de ubuntucloud.
Has hecho realemente una nube siguiendo este tuto por que me he pegado en algo ya que se omite pasos ….y hay poca informacion de esto
Ya hace algunos meses desde la última vez, pero cuéntame cual es el problema por si te puedo ayudar. En el tutorial me salté los pasos que no eran específicos a UEC, que son iguales a una instalación típica de Ubuntu Server.