Este documento describe la investigación de dos plataformas libres para computación en la nube: OpenStack y OpenNebula. OpenStack es una plataforma de código abierto para implementar nubes públicas y privadas de manera escalable, mientras que OpenNebula es una plataforma para administrar infraestructura virtual en centros de datos distribuidos. La investigación compara las características, usos y ventajas de ambas plataformas para determinar cuál es más adecuada para el proyecto.
1. Plataformas libres para la computación en la nube, basado en el estudio de
Openstack y Open nebula.
(Proyecto de Investigación)
Ingenieros en formación:
Leydi Franco
Helbeth Franco
Wilmar Robert Cachimbo
Mentora:
Zeida Maria Solarte Astaiza
Tutor:
Carlos Fernando Vega Barona
Colectivo:
51G
PEF:
148 Plataformas libres para computación en la nube
Programa de Ingeniería Informática
Universidad Autónoma de Occidente
Santiago de Cali (Valle)
2016
2. Investigación de computación en la nube, basada en OpenStack y
Opennebula
Antes de iniciar con la investigación de Opennebula y Openstack, se
comparte la definición de computación en la nube de la siguiente forma:
“La computación en la nube, concepto conocido también bajo los términos servicios en la
nube, informática en la nube, nube de cómputo o nube de conceptos, del inglés cloud
computing, es un paradigma que permite ofrecer servicios de computación a través de
Internet.”
La computación en la nube (Cloud Computing) cuenta con tres tipo de
usuarios objetivos:
Público: Este servicio se le ofrece a tercero donde empresas se encarga de
montar toda la infraestructura en la nube. Como el caso de Amazon Elastic
Compute Cloud.
Privado: Organizaciones monta toda la infraestructura adaptados a sus
organización y monta todos su recursos además tiene toda la libertad y
movilidad del todo el sistema.
Híbrido: básicamente es una combinación entre los servicios que ofrece las
organizaciones público y privado. Lo que hace es conseguir un API que
permita una buena integración entre ellos.
OPENSTACK
El proyecto OpenStack se define así mismo como una plataforma de cloud
computing hecha con software libre para desplegar nubes públicas y
privadas, desarrollada con la idea de ser sencilla de implementar,
masivamente escalable y con muchas prestaciones. OpenStack
proporciona una solución de Infraestructura como servicio (IaaS) a través
de un conjunto de servicios interrelacionados.
OpenStack ha optado por utilizar la licencia de software libre Apache 2.0,
una licencia de software libre permisiva y no copyleft. Pero no todo es la
licencia, sino que en un proyecto de software libre es muy importante saber
cómo se toman las decisiones de desarrollo y si se aceptan o no
contribuciones de otros. En el caso de OpenStack se ha optado por un
desarrollo completamente abierto, en el que se pueden aceptar opiniones y
contribuciones de cualquiera. El diseño de nuevas funcionalidades se
realiza mediante "blueprints" en launchpad y se presentan y acuerdan
muchos aspectos en los summits semestrales que se celebran en distintas
ciudades del mundo. Todo el código del proyecto OpenStack está
3. disponible a través de github y se pueden enviar correcciones de errores o
modificaciones a través del Gerrit de OpenStack. La metodología de
desarrollo de OpenStack también merece que se destaque, ya que gracias
a la utilización de metodologías ágiles se consigue que cerca de 1000
personas repartidas por todo el globo hayan participado en el desarrollo de
Havana, la última versión de OpenStack. Todo el código de OpenStack está
desarrollado en Python, de nuevo un acierto, ya que se trata de un lenguaje
de programación completamente libre y con una enorme progresión en los
últimos años.
" OpenStack es una colección de código abierto
tecnologías de la entrega de un masivamente escalable
sistema operativo nube " - openstack.org
Licencia Apache 2.0, no existe versión Enterprise"
Proceso de diseño abierto
Repositorios públicos de código fuente
Todos los procesos de desarrollo deben estar documentados
y ser
Transparentes
Orientado para adoptar estándares abiertos
Diseño modular que permite flexibilidad mediante el uso de
APIs
https://opensource.com/resources/what-is-openstack
https://openwebinars.net/que-es-eso-de-openstack-por-que-deberia-
conocerlo/
OPENSTACK OPENNEBULA
Que es: El proyecto OpenStack se
define así mismo como una
plataforma de cloud
es una plataforma para
computación en la nube
orientado a centros de
4. computing hecha con
software libre para
desplegar nubes públicas y
privadas, desarrollada con
la idea de ser sencilla de
implementar, masivamente
escalable y con muchas
prestaciones. OpenStack
proporciona una solución
de Infraestructura como
servicio (IaaS) a través de
un conjunto de servicios
interrelacionados.
OpenStack ha optado por
utilizar la licencia de
software libre Apache 2.0,
una licencia de software
libre permisiva y no
copyleft. Pero no todo es la
licencia, sino que en un
proyecto de software libre
es muy importante saber
cómo se toman las
decisiones de desarrollo y
si se aceptan o no
contribuciones de otros. En
el caso de OpenStack se
ha optado por un desarrollo
completamente abierto, en
el que se pueden aceptar
opiniones y contribuciones
de cualquiera. El diseño de
nuevas funcionalidades se
realiza mediante
"blueprints" en launchpad y
se presentan y acuerdan
muchos aspectos en los
summits semestrales que
se celebran en distintas
ciudades del mundo. Todo
el código del proyecto
OpenStack está disponible
a través de github y se
pueden enviar correcciones
de errores o modificaciones
a través del Gerrit de
OpenStack. La metodología
de desarrollo de OpenStack
también merece que se
datos distribuidos y
heterogéneos,
proporcionando la
infraestructura virtual para
construir nubes privadas,
públicas, e
implementaciones híbridas
de infraestructura como
servicio (IaaS).
OpenNebula es software
de fuente abierta
amparado en la Licencia
apache 2.
5. destaque, ya que gracias a
la utilización de
metodologías ágiles se
consigue que cerca de
1000 personas repartidas
por todo el globo hayan
participado en el desarrollo
de Havana, la última
versión de OpenStack.
Todo el código de
OpenStack está
desarrollado en Python, de
nuevo un acierto, ya que se
trata de un lenguaje de
programación
completamente libre y con
una enorme progresión en
los últimos años.
Como se usa: OpenStack no es un solo
producto, sino un conjunto
de aplicaciones que pueden
combinarse en función de
las características y
necesidades de cada caso,
hay algunos componentes
fundamentales y otros
opcionales. Este esquema
de funcionamiento difiere
mucho de soluciones "llave
en mano", normalmente
privativas que incluyen un
conjunto más o menos fijo
de componentes muy bien
integrados entre sí pero
poco flexible. OpenStack
tiene una gran flexibilidad y
permite implementar un
cloud privado en una
pequeña empresa o
algunos de los mayores
clouds públicos del mundo,
como contrapartida, exige
que la persona encargada
de la implementación y la
administración del cloud
tenga suficientes
conocimientos en todas o la
mayor parte de tecnologías
OpenNebula orquesta el
almacenamiento, la red,
los servicios de
virtualización, así como el
control y la seguridad, a la
hora de desplegar
servicios multi-tier (p. ej.
cluster de computadoras )
como máquinas virtuales
en infraestructuras
distribuidas, combinando
los recursos del propio
centro de datos y los
recursos de la nube
remota según políticas
previamente definidas .
Según Informe de la
Comisión Europea "; pocos
proyectos de investigación
sobre la nube, en el
sentido más amplio se han
iniciado, el más importante
entre ellos probablemente
sea OpenNebula ..."
6. subyacentes. Cada
componente de OpenStack
es totalmente autónomo y
funcional y utiliza el
protocolo AMQP de gestión
de colas para comunicarse
con el resto de
componentes y una API
web RESTful para
comunicarse con procesos
"externos" o los usuarios
Ejemplo típico de
funcionamiento: lanzar una
instancia
Dependiendo de los
componentes de cada
cloud y de si estos están en
el mismo o diferentes
equipos, o incluso del
número de estos
componentes que hay en el
cloud, se hará más o
menos complejo el proceso
de lanzar una instancia,
pero a grosso modo
podríamos resumirlo en los
siguientes pasos:
Un usuario se autentica en
Keystone, bien
directamente o a través del
panel web Horizon. De esta
manera obtiene un token de
sesión que le permitirá
realizar acciones con el
resto de componentes de
OpenStack sin necesidad
de volver a autenticarse y
estas acciones estarán
limitadas por los permisos
del rol que tenga asignado
el usuario en Keystone.
El usuario solicita a Glance
la lista de imágenes
disponibles. Estas
imágenes las tendrá
alojadas glance
directamente en el equipo
que se ejecuta o bien serán
objetos almacenados en
7. Swift.
El usuario selecciona una
imagen y solicita a Nova
que la instancie, para lo
que nova le pedirá las
características de la
instancia (ram, disco, vcpu,
etc.) y una vez recibidas las
características, elegirá el
nodo del cloud más
adecuado para ejecutar la
instancia.
De la configuración de la
red virtual donde se
encuentra situada la
instancia se encarga
Neutron (antes conocido
como Quantum),
permitiendo no sólo que se
pueda acceder a la
instancia desde fuera, a
través de la denominada IP
flotante, sino incluso de la
configuración de redes
complejas.
Para qué sirve: OpenStack es un sistema
operativo en la nube que
controla grandes
volúmenes de cómputo,
almacenamiento y recursos
de red a lo largo de un
centro de datos, todo ello
gestionado a través de un
panel de control que
proporciona a los
administradores un control
a la vez que fortalecen a
sus usuarios de los
recursos de provisión a
través de una interfaz web.
Ventajas: * Permite gestionar el
almacenamiento de datos
en varios servidores que
trabajen de manera
conjunta en clusters
* Para garantizar la
replicación de los datos y la
integridad a través de todo
* Administra
infraestructuras virtuales
de Datacenter
* Combina Tecnologías de
virtualización,
almacenamiento y redes
* Se pueden construir
lAAS públicas, privadas e
8. el clúster, permite añadir
nuevos nodos y
configurarlos de manera
automática
* Comunidad en
crecimiento
* Soporte corporativo
híbridas
* Soporta el manejo de
redes virtuales que
interconecta las diferentes
máquinas virtuales
Desventajas: * Base de código joven
* Futuro incierto
* Configuración inicial
Cuadro Comparativo
OpenStack OpenNebula
Adaptabilidad Muy Alto Muy Alto
Escalabilidad Muy Alto Muy Alto
Topologías Muy Alto Medio
Interfaz Web Muy Alto Alto
Instalación Muy Alto Medio
Manejo de Instancias Muy Alto Medio
Soporte Muy Alto Medio
Términos:
Infrastructure as a Service (IaaS): Principalmente almacenamiento y
capacidades de cómputo (máquinas virtuales) ofrecidos como servicio en la
nube. Los administradores de sistemas de todo el mundo pueden hoy en día
plantearse montar un servicio en una máquina física, una máquina virtual o
una instancia en el cloud, ofreciendo esta última unas opciones muy
interesantes sobre todo para despliegues de demanda variable. Los
servicios de cloud IaaS más conocidos son los de Amazon Web Services,
RackSpace Cloud, Joyent o Windows Azure.
Conclusión
Una de las conclusiones que queremos resaltar es que independientemente
de las ventajas y/o desventajas que encontramos sobre estas dos
herramientas trabajar con OpenStack es una de las mejores opciones
9. debido a que tendremos más facilidad de encontrar información ya
OpenNebula tiene muy poca información que nos pueda servir al momento
de llevar a cabo la implementación del proyecto; esta conclusión se basa en
las herramientas a utilizar.
Anexos
Video de pasos para lanzar una instancia con OpenStack:
https://vimeo.com/51806641
Video de información OpenStack; Introducción a openstack en Español;
Introducción a la plataforma para clouds híbridas OpenStack
https://www.youtube.com/watch?v=M54cAbkPQ04
Definiciones:
IaaS: abarca aspectos como el espacio en servidores virtuales, conexiones de red,
ancho de banda, direcciones IP y balanceadores de carga. Físicamente, el
repertorio de recursos de hardware disponibles procede de multitud de servidores y
redes, generalmente distribuidos entre numerosos centros de datos, de cuyo
mantenimiento se encarga el proveedor del servicio cloud. El cliente, por su parte,
obtiene acceso a los componentes virtualizados para construir con ellos su propia
plataforma informática. Tomado de: http://www.interoute.es/what-iaas
API: Una API (siglas de ‘Application Programming Interface’) es un conjunto de
reglas (código) y especificaciones que las aplicaciones pueden seguir para
comunicarse entre ellas: sirviendo de interfaz entre programas diferentes de la
misma manera en que la interfaz de usuario facilita la interacción humano-software.
Tomado de: http://www.ticbeat.com/tecnologias/que-es-una-api-para-que-sirve/
10. Bibliografía
Articulo Victoria Martinez de la Cruz publicado en febrero 2013 Actualizado
20 junio 2016: http://vmartinezdelacruz.com/en-pocas-palabras-como-funciona-
openstack/
Chanel Biz de Barbara Becares https://vimeo.com/51806641
Omar Eduardo García Gutiérrez, Co-Founder & Project lead at Sahuaro
Labs, Entrepreneu; 16 septiembre 2013
http://es.slideshare.net/eeduardogarcia/plataformas-libres-del-cloud
http://www.gonzalonazareno.org/cloud/material/intro-openstack.pdf