Todo como Servicio con OpenStack

Publicado en

Sin duda, el cómputo en la nube está cambiando la forma en la que consumimos recursos de cómputo. Nos estamos acostumbrando a consumir todo “como servicio”.  

Una de las formas más básicas de consumir recursos como servicio es el denominado Infrastructure as a Service (IaaS) donde básicamente rentamos una máquina virtual conectada a la red y pagamos por el uso de procesamiento, almacenamiento y transferencia de datos. Empresas como Amazon, Microsoft, HP, e IBM ofrecen este servicio.

Sin embargo, también existen productos y proyectos para que las empresas puedan crear su propia nube. Dentro de estos proyectos, el que más destaca es OpenStack, una plataforma para construir nubes altamente escalables.

Openstack (http://openstack.org) es un sistema operativo de cómputo en la nube que controla grupos de recursos de cómputo, almacenamiento y redes. Se administra por medio de un panel de control (dashboard) y permite que los mismos usuarios puedan aprovisionar recursos a través de una interfaz web.

OpenStack es software libre (licencia Apache 2.0) y se construye de forma abierta y colaborativa. Es muy rico en características y altamente configurable, por lo que permite crear soluciones para todo tipo de nubes. Puede controlar múltiples hipervisores y manejadores de virtualización, además de ser compatible con una gran variedad de hardware y software, lo cual nos ayuda a mitigar casos de “vendor lock-in”.

Proyectos de OpenStack

OpenStack está organizado en torno a 3 grandes conceptos: cómputo, almacenamiento y red, que a su vez son soportados por varios servicios compartidos.

Al momento de editar este artículo, está por liberarse la versión Kilo de OpenStack (abril 2015), que incluye los siguientes proyectos:

  • Gestión de recursos de cómputo (Nova).

  • Almacenamiento de objetos (Swift).

  • Almacenamiento de bloques (Cinder).

  • Manejo de imágenes (Glance).

  • Aprovisionamiento de base de datos como servicio (Trove).

  • Manejo de redes y direcciones IP (Neutron).

  • Gestión de identidad y SSO (Keystone).

  • Panel de control (Horizon).

  • Orquestación de servicios (Heat).

  • Telemetría, para monitorear el uso de servicios (Ceilometer).

  • Aprovisionamiento de clusters Map-Reduce para Hadoop y Spark (Sahara).

  • Aprovisionamiento en “bare metal” (Ironic).

  • Mensajería entre aplicaciones (Zaqar).

  • Sistema de archivos compartido (Manila).

  • DNS como servicio (Designate).

  • Gestión de llaves secretas (Barbican).

Arquitectura

La figura 1 muestra un diagrama con un ejemplo de arquitectura común de OpenStack, donde se muestran los principales servicios y cómo interactúan entre sí.

Aunque a primer vista se ve complicada, en realidad no lo es tanto si nos abstraemos al nivel de los distintos servicios (compute, storage, network, etc). Los programas mantienen su información en una base de datos compartida. La comunicación entre programas se realiza típicamente por medio de APIs y es “stateless”.

La comunicación directa con el hardware o software a controlar se hace mediante agentes y/o plug-ins específicos del fabricante.

openstack-fig1.png

Figura 1: Arquitectura de OpenStack

Distribuciones de OpenStack

OpenStack sufre del mismo “problema” que GNU/Linux en cuanto a que la configuración, empaquetado e instalación manual es un compleja. Por ello, al igual que GNU/Linux Openstack se distribuye de una manera empaquetada. Es así que los “sospechosos comunes” son los que han creado distribuciones los cuales dan soporte y mantenimiento así como compatibilidad con sus propias distribuciones de GNU/Linux, una lista no extensiva de estas distribuciones de OpenStack son: RDO de RedHat, SUSE Cloud de SUSE, Ubuntu OpenStack, Mirantis.

También está Devstack, que es un “shellscript” que nos permite hacer un despliegue automatizado de OpenStack en una sola máquina virtual para propósitos de pruebas. Es una excelente forma de jugar un poco con la plataforma y entender un poco más como funciona OpenStack.

Conclusión

OpenStack es una excelente opción para aquellas empresas que desean establecer su propia infraestructura de cómputo como servicio. Al ser una plataforma abierta, ayuda a las empresas a evitar el evitar el vendor lock-in, reducir costos y tener mayor control sobre su futuro tecnológico.

Bio

Miguel Ángel Barajas (@gnuowned) es un Arquitecto Senior de Soluciones especializado en cómputo en la nube. Actualmente colabora con Cisco Systems atendiendo clientes en la región de Latinoamérica.