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.