Openstack… ¿Que es?, ¿Que NO es?

Openstack

NOTA: Aquí comparto con ustedes lo que yo he aprendido a lo largo del tiempo, no es la verdad absoluta ni pretendo ser experto en el tema (al menos en el momento que escribo este articulo) por lo que si en este articulo notan errores o áreas que puedan ser mejoradas, modificadas, etc. Por favor ¡Comenten!  Recuerden que estamos acá para compartir conocimiento y ser lo mas acertados posible.

Que tal gente, el día de hoy les voy a hablar sobre algo que esta en todos,TODOS lados… que al igual que el cloud computing o “computo de nube” ha sido repetido una y otra vez hasta que nos (Hemos ¿cansado?) familiarizado con el. En esta ocasión estaré hablando sobre Openstack, daremos un vistazo a que es Openstack, que necesidades o casos de uso cubre y donde exactamente estaría situado en nuestro datacenter o en el stack de software y de igual manera estaré hablando de que NO es openstack.

En VMworld asistí a varias sesiones de Openstack debido a que mi interés ha crecido bastante por lo que me dí a la tarea de dejar de ser alguien que lee sobre el tema y pasar a ser alguien que conozca openstack y pueda contribuir a la comunidad de habla hispana sobre este tema.

¿Que es Openstack?

Openstack es un conjunto de proyectos “open-source” o de codigo abierto, en sus inicios quienes contribuyeron con mas código fué rackspace y la NASA. Este conjunto de proyectos y grupo de empresas/desarrolladores tienen como objetivo el construir una plataforma de nube, como tal Openstack podría considerarse como un CMP o “Cloud Management Platform” que permite orquestrar y gestionar distintos aspectos de una infraestructura para dar servicios de nube. Si quisieramos hacer una analogía contra el stack de VMware, Openstack estaría al mismo nivel de vCAC (aunque podría compararse en ciertos puntos con vCD).

Lo interesante de OpenStack es su capacidad de extensibilidad a través de APIs que son “faciles” de consumir (muy al estilo de AWS), públicos y son “vendor free”, por lo que muchos service providers han volteado a ver a OpenStack como un posible elemento clave para su infraestructura. Esta pensado de manera modular de tal manera que en base a los requerimientos de “nube” que se necesiten entregar podemos ir integrando distintos proyectos a nuestra arquitectura.

Existen varios proyectos que conforman a Openstack, vamos a revisar los mas relevantes (para quienes venimos de un mundo VMware):

archopenstackImagen compartida por Scott Lowe @scott_lowe

  • OpenStack Compute (Nova)  – Este componente y/o proyecto de OpenStack se encarga de el ciclo de vida de las “instancias” que si lo comparamos con vSphere serían “VMs”, se comunica con los distintos hipervisores a través de APIs específicos a cada uno (KVM, ESXi, QEMU, Xen, y demás) para instanciar o crear estas VMs decidiendo donde deberán ser ejecutas las mismas y brindando los distintos servicios que estas requieren. Al igual que todos los componentes de OpenStack tiene APIs para su integración y consumo del servicio. En el caso especifico de VMware OpenStack ofrece dos “drivers” vmwareapi.VMwareESXDriver y vmwareapi.VMwareVCDriver para integrarse y poder hablar con vSphere, el primer driver nos permite consumir recursos de ESXi directamente mientras que el segundo permite consumir recursos desde un vCenter (construcciones lógicas como un cluster de DRS).

novahypshow(Cluster de vCenter registrado en Nova)

  • Glance – este servicio nos permite almacenar “imágenes” para nuestras “instancias” o VMs, estas imágenes pueden ser almacenadas en formatos como ISO, OVF, etc.. Puede trabajar en conjunto con Swift para poder contar con almacenamiento sea local,  S3 de Amazon, etc.

horizonimages(imagenes disponibles vistas desde horizon)

glance(Detalles de la imagen a través de glance)

  • Swift – almacenamiento de “objetos”, nos permite almacenar archivos considerados como objetos, pero estos al final del día no serán montados como directorios o utilizados como puntos de montaje, tiene una estructura de contenedores donde serán almacenados los distintos objetos.
  • Cinder – Cinder nos permite presentar almacenamiento de bloque directamente a las instancias, este proyecto surgió como la evolución de novavolume (que forma parte de nova) que permite montar almacenamiento de bloque a través iSCSI directamente a las instancias para que a través de LVM estas puedan utilizar dicho espacio como persistente. De igual manera nos permite presentar NFS a las instancias.

cindertest1GB(Prueba de volumen 1GB)

  • Neutron (antes Quantum) – este proyecto nos permite entregar networking a nuestras instancias, trabaja de la mano de distintos fabricantes para entregar el acceso, por ejemplo VMware a través de NSX, Cisco, etc…
  • Horizon – este proyecto nos ofrece gestión de OpenStack desde una interfaz web, aquí podemos crear instancias, modificarlas, gestionar swift, conectarnos a una consola de VM, etc, etc…

horizonopenstack

  • Keystone – servicio de identidad, maneja el autenticación, acceso y permisos a distintos componentes como nova, swift, cinder, y demás. Tiene su propio API (RESTful) para el consumo e integración con 3eros. Nos permite gestionar usuarios, grupos y roles. Trabaja a través de “tokens” para brindar acceso a los demás servicios una vez que se ha autenticado a un usuario.

rolestenantskeystone

Como podemos ver distintos proyectos conforman el “framework” de OpenStack, en este articulo no tocamos todos los proyectos que están allá afuera, pero estaré escribiendo artículos de mayor profundidad en los proyectos y tratar de hablar sobre los que aquí no fueron descritos.

¿Que NO es Openstack?

OpenStack no es:

  • Un producto – como lo hemos visto a lo largo del articulo se trata de un conjunto de servicios, que constituyen una nube. Es open source, por lo que el código esta allá afuera y lo podemos modificar para nuestras necesidades e incluso contribuir de vuelta a la comunidad. Este conjunto de código es mantenido y controlado por la fundación OpenStack.
  • Virtualización (hipervisor) – pudimos ver que Nova compute habla con hipervisores para poder crear instancias y demás, pero quien virtualiza es el hipervisor en cuestión… ej. ESXi, XenServer, KVM, etc… No nos confundamos, cuando estamos creando un ambiente de nube no necesitamos decidir si vamos a irnos por VMware o por OpenStack (al menos en esa capa de virtualización) ya que OpenStack esta en una capa muy arriba de la nube, podría competir con vCD y vCAC hablando específicamente de VMware y con otras CMPs de 3eros que están allá afuera.
  • 100% Gratis – Recordemos que aunque el código sea abierto y que nosotros podemos construir nuestra infraestructura a partir de OpenStack no quiere decir que los costos para mantenerlo, entrenamiento, troubleshooting, gestión y mantenimiento de capas que estén por debajo (ej. vSphere, networking, storage, etc.) sean gratuitas. Los Distros mas grandes de Linux están comenzando a ofertar su “sabor” o flavor de OpenStack, tenemos a Red Hat, a Canonical, etc. en este caso claramente se tendrá un costo no por el código si no por el soporte y demás.
  • Solo para Service Providers – OpenStack puede ser utilizado por cualquier tipo de empresa, no solo SPs, claramente la modularidad y facilidad de consumo a través de APIs es lo que hace tan interesante OpenStack para los SPs.

Algunos casos de Uso

OpenStack ofrece la capacidad de IaaS muy al estilo de AWS, donde las cargas,instancias o VMs, como nosotros nos guste llamarlas no son del todo tratadas a un nivel tan especifico como lo podemos hacer a nivel de vSphere+vCD, vSphere+vCD+vCAC, esto debido a que no existen mecanismos para el control de los SLAs (alta disponibilidad, control de “noisy neighbors (NetIOC,SIOC, etc)”, donde tal vez el brindar alta disponibilidad lo realizamos a través de la aplicacion/gOS, donde básicamente tenemos que diseñar para el fallo. Ambientes enterprise donde manejemos aplicaciones tier1 que tienen que cumplir al 100% con sus SLAs, tener manera de asegurar el rendimiento y demás (básicamente consentirlas mas :D) en este punto se verían mas beneficiadas de ambientes basados en vSphere.

Les recomiendo TOTALMENTE leer dos artículos de Massimo Re Ferre @mreferre sobre este tema donde podrán entender el principio de como se tratan a las cargas en distintos tipos de nube y cuales son indicadas para que tipo de aplicación y/o servicio:

http://it20.info/2012/12/vcloud-openstack-pets-and-cattle/

http://it20.info/2011/04/tcp-clouds-udp-clouds-design-for-fail-and-aws/

Entonces, regresando al tema de VMware vs OpenStack, mas bien les diría que piensen en OpenStack sobre “(aquí va el hipervisor/CMP)”…