Anatomía de una nube de fuente abierta

Bloques de construcción para la Infraestructura como un Servicio

La computación en nube ya no es una tecnología que esté en la cúspide de los descubrimientos, sino una tecnología valiosa e importante que está cambiando de manera fundamental la forma en que usamos y desarrollamos aplicaciones. Como usted esperaría, Linux® y la fuente abierta proporcionan las bases para la nube (para infraestructuras tanto públicas como privadas). Explore la anatomía de la nube, su arquitectura, y las tecnologías de fuente abierta utilizadas para crear estas plataformas computacionales y de almacenamiento dinámicas y escalables.

M. Tim Jones, Senior Principal Software Engineer, Emulex Corp.

M. Tim Jones es arquitecto de firmware integrado y el autor de Inteligencia Artificial: Un Enfoque de Sistemas, Programación de Aplicaciones GNU/Linux,Programación de Aplicaciones AI, y Programación de Sockets BSD desde una Perspectiva Multi-lenguaje. Su experiencia en ingeniería va desde el desarrollo de kernels para vehículos espaciales geo-sincronizados hasta arquitectura de sistemas incorporados y desarrollo de protocolos de redes. Es arquitecto sénior para Emulex Corp. en Longmont, Colo.


Nivel de autor contribuyente en developerWorks

23-01-2012

El uso de la nube como una abstracción es bastante común para el sistema distribuido que es Internet, en los últimos se ha visto que esta abstracción se ha expandido para incorporar infraestructuras altamente virtualizadas y escalables que se aprovisionan fácilmente con un servicio (tanto local como remotamente). Este artículo no da una definición profunda sobre la arquitectura de nube y sus beneficios, y en lugar de ello hace referencia a lecturas que valen la pena en la sección Recursos .

Anatomía de la computación en nube

Este artículo comienza con una exploración sobre las abstracciones esenciales de las arquitecturas en nube (desde la Infraestructura como un Servicio [IaaS]) y luego va más allá de los bloques de construcción hacia soluciones más altamente integradas.

Acrónimos de uso frecuente

  • API: Application programming interface
  • E/S: Entrada/Salida
  • SLA: Acuerdo de nivel de servicio
  • IU: Interfaz de usuario

Aunque no es un requisito, la virtualización proporciona beneficios únicos para la construcción de arquitecturas dinámicamente escalables. Además de la escalabilidad, la virtualización introduce la capacidad para migrar máquinas virtuales (VMs) entre servidores físicos para propósitos de balanceo de carga. La Figura 1 (llamada algunas veces monitor de máquina virtual [VMM]). Esta capa proporciona la capacidad para ejecutar múltiples sistemas operativos (y sus aplicaciones) de manera simultánea en una sola máquina física. En el hypervisor existe un objeto llamado máquina virtual que encapsula el sistema operativo, las aplicaciones y la configuración. De forma opcional, la emulación de dispositivo puede proporcionarse en el hypervisor o como una VM. Finalmente, dada la nueva naturaleza dinámica de la virtualización y las nuevas capacidades que proporciona, se necesitan nuevos esquemas de administración. Esta administración se efectúa mejor en capas, considerando la administración local en el servidor, así como administración de infraestructura de alto nivel, proporcionando la orquestación general del entorno virtual.

Figura 1. Elementos esenciales de un nodo de la nube
Elementos esenciales de un nodo de la nube

Si usted toma los nodos de la Figura 1 y los multiplica en una red física con almacenamiento compartido, orquestando la administración de toda la infraestructura, proporcionando luego balanceo de carga de primer plano de las conexiones entrantes (bien sea en un escenario público o privado) con caché y filtrado, tendrá una infraestructura virtual llamada nube. Esta nueva construcción se muestra en la Figura 2. Las máquinas inactivas pueden apagarse hasta que se necesiten para capacidad de cómputo adicional (proporcionando mejor eficiencia de energía), con VM balanceadas (incluso dinámicamente) a lo largo de los nodos dependiendo de sus cargas individuales.

Figura 2. Infraestructura de la computación en nube
Infraestructura de la computación en nube

Con la arquitectura básica de una nube definida, exploremos ahora dónde se está aplicando la fuente abierta para crear una infraestructura de nube dinámica.


Tecnologías centrales de la fuente abierta

El panorama Linux está presenciando una ola de desarrollo enfocado en infraestructuras virtualizadas para administración, virtualización e integración a gran escala de paquetes de software en nube. Vamos a comenzar con una visión de la fuente abierta a nivel de nodo individual, luego pasaremos hacia la infraestructura para ver lo que está sucediendo allí.

Hypervisores

La base de la nube a nivel de nodo es el hypervisor. Aunque la virtualización no es un requisito, proporciona capacidades indiscutibles en cuanto a arquitecturas escalables y eficientes en energía. Existen numerosas soluciones de virtualización de fuente abierta, pero dos soluciones clave son las que transforman el sistema operativo Linux en un hypervisor: Linux Kernel Virtual Machine (KVM) y Lguest. KVM es la solución de hypervisor oficial, la cual se está implementando en entornos de producción. Lguest es una solución enfocada en Linux que solo se ejecuta en VMs Linux pero que está integrada al kernel y que está encontrando usos más amplios.

Además de convertir a Linux en un hypervisor, hay otras soluciones que adoptan un enfoque de huésped centrado en VM. User-Mode Linux (UML) es otro enfoque que modifica un kernel de huésped Linux para ejecutarse encima de otro sistema operativo Linux (sin extensiones de hypervisor). Como la mayoría de los usuarios desean ejecutar un kernel no modificado, se prefieren soluciones de virtualización completa (como KVM).

Este enfoque UML también es popular, pero requiere hardware virtualizado (como una consola, disco virtual y redes).

Emulación de dispositivos

El hypervisor proporciona los medios para compartir la CPU con múltiples sistemas operativos (virtualización de CPU), pero para proporcionar virtualización completa, todo el entorno debe estar virtualizado para las VM. La emulación de máquina — o plataforma — puede efectuarse de diversas formas, pero hay un paquete popular de fuente abierta que soporta numerosos hypervisores llamado QEMU. QEMU es un emulador e hypervisor completo. Pero KVM utiliza QEMU para emulación de dispositivo como un proceso separado en el espacio del usuario (vea la Figura 1). Una característica interesante de QEMU es que como proporciona emulación de disco (mediante el formato QCOW), QEMU proporciona otros recursos avanzados como capturas instantáneas y migración de VM en vivo.

KVM, desde el kernel 2.6.25, utiliza virtio como medio para optimizar el desempeño de virtualización de E/S. Esto lo hace introduciendo controladores paravirtualizados en el hypervisor con ganchos desde el huésped para llevar el desempeño a niveles casi nativos. Esto solo funciona cuando el sistema operativo puede ser modificado para este propósito, pero se puede utilizar en huésped Linux en escenarios de hypervisor Linux.

Actualmente, virtio y QEMU trabajan conjuntamente para que las transacciones de dispositivo emulado puedan optimizarse entre el huésped Linux y el emulador QEMU en el espacio de usuario.

Redes Virtuales

Mientras las VM se consolidan en servidores físicos, las necesidades de red de la plataforma se intensifican. Pero en lugar de forzar toda la red de VM hacia la capa física de la plataforma, se pueden virtualizar las comunicaciones locales. Para optimizar la comunicación de red entre VMs, existe la introducción del conmutador virtual. El vSwitch se comporta como un conmutador físico, pero está virtualizado en la plataforma (ver Figura 3). En esta figura, las interfaces virtualizadas (VIFs) asociadas con las VMs se comunican mediante el conmutador virtual con las interfaces físicas (PIFs).

Figura 3. Vista de alto nivel de Open vSwitch con interfaces físicas y virtuales
Vista de alto nivel de Open vSwitch con interfaces físicas y virtuales

La fuente abierta también está respondiendo a este problema, con una solución bastante interesante llamada Open vSwitch. Además de proporcionar un conmutador virtual para entornos virtuales, el vSwitch también puede integrarse a lo largo de plataformas físicas y proporcionar recursos de nivel corporativo como redes virtuales de área local (VLANs), Calidad de Servicio (QoS) basada en prioridades, trunking, y soporte para aceleración de hardware (como adaptadores de red de virtualización de E/S de raíz única [IOV]). El Open vSwitch actualmente está disponible para kernels 2.6.15 y soporta el rango de soluciones de virtualización basadas en Linux (Xen, KVM, VirtualBox) y estándares de administración (Remote Switched Port Analyzer [RSPAN], NetFlow, etc.).

Herramientas y tecnologías de VM

Como las VMs son una agregación del sistema operativo, el sistema de archivos raíz y la configuración, el espacio está listo para el desarrollo de herramientas. Pero para aprovechar todo el potencial de las VMs y herramientas, debe haber una forma portátil de ensamblarlas. El enfoque actual, llamado Open Virtualization Format (OVF) es una construcción de VM que es flexible, eficiente y portátil. El OVF empaqueta una imagen de disco virtual en un empaquetador XML que define la configuración de la VM, incluyendo configuración de red, requerimientos de procesador y de memoria, y una variedad de metadatos extensibles para definir aún más la imagen y sus necesidades de plataforma. La capacidad clave proporcionada por el OVF es la portabilidad para distribuir VMs de manera agnóstica en cuanto a hypervisor.

Existen numerosas herramientas para administrar imágenes de VM (VMIs) y para convertirlas hacia y desde otros formatos. El ovftool de VMware es una herramienta útil que usted puede usar para conversión VMI (por ejemplo, para convertir de formato VMware Virtual Disk Development Kit [VMDK] en OVF). Esta herramienta y otras son útiles en cuanto usted tiene la VMI, pero ¿qué sucede si usted tiene un servidor físico que desea convertir en una VMI? Usted puede emplear una herramienta bastante útil llamada Clonezilla para este propósito. Aunque esta se desarrolló originalmente como una herramienta para clonar discos para recuperación de desastres, usted puede utilizarla para convertir una instancia de servidor físico en una VM para fácil implementación en una infraestructura virtualizada. Existen muchas otras herramientas (como recursos creados sobre libvirt) o están en desarrollo para conversión de administración, a medida que el formato OVF gana aceptación.

Administración Local

Este artículo explora la administración desde dos perspectivas. Esta sección trata sobre la administración de plataforma; una sección posterior de expande hacia la administración de infraestructura al nivel superior.

Red Hat introdujo la biblioteca libvirt como una API para administrar virtualización de plataforma (hypervisores y VMs). Lo que hace interesante al libvirt es que soporta numerosas soluciones de hypervisores (siendo KVM y Xen dos de ellas) y proporciona vinculaciones API para numerosos lenguajes (como C, Python y Ruby). Este proporciona "lo último" en administración, haciendo interfaz directamente con el hypervisor de plataforma y extendiendo APIS hacia soluciones de administración de infraestructura más grandes. Con libvirt, iniciar y detener VMs es fácil, y proporciona APIs para operaciones más avanzadas, como la migración de VMs entre plataformas. Usando libvirt, también es posible usar su shell (compilado encima de libvirt), llamado virsh.


Tecnologías de infraestructura de fuente abierta

Ahora que ha visto algunas de las soluciones de fuente abierta a nivel de nodo virtualizado, observemos algunas otras aplicaciones de fuente abierta que soporten esta infraestructura. Este artículo explora tres categorías. Las primeras dos son tecnologías a nivel de infraestructura que complementan las soluciones que discutimos previamente. La tercera categoría consiste en soluciones integradas que reúnen todas las piezas para una implementación más simple.

Tecnologías de E/S

Construir una arquitectura Web escalable y balanceada depende de la capacidad para balancear tráfico Web a lo largo de los servidores, que implementen la funcionalidad de backend. Existen numerosas soluciones para balanceo de carga, pero recientemente Yahoo! abrió la fuente de una solución llamada Traffic Server. Traffic Server es interesante porque encapsula un gran número de capacidades en un paquete para infraestructuras nube, incluyendo administración de sesión, autenticación, filtrado, balanceo de carga y enrutamiento. Yahoo! inicialmente adquirió el producto a Inktomi, pero ahora extendió el producto y lo introdujo a la fuente abierta.

Administración de infraestructura

La administración de infraestructura a escala más grande (administrando más hypervisores e incluso más VMs) puede lograrse de diferentes formas. Dos de las soluciones más comunes están construidas a partir de la misma plataforma (libvirt). El paquete oVirt es una herramienta abierta de administración de VM que se escala desde un pequeño número de VMs hacia miles de VMs que se ejecutan en cientos de hosts. El paquete oVirt desarrollado por Red Hat, es una consola de administración basada en Web que además de la administración tradicional, soporta la automatización de almacenamiento en clúster y el balanceo de carga. La herramienta oVirt está escrita en lenguaje Python. VirtManager, también basada en libvirt y desarrollada por Red Hat, es una aplicación con una IU GTK+ (en lugar de estar basada en Web como oVirt). VirtManager presenta una visualización en pantalla mucho más rica (para desempeño en vivo y uso de recursos) e incluye un visor de cliente VNC para una consola gráfica completa para VMs remotas.

Y Puppet es otro paquete de fuente abierta diseñado para infraestructura de centro de datos (una nube). Aunque no está diseñada para infraestructuras virtuales únicamente, simplifica la administración de infraestructuras grandes al abstraer los detalles del sistema del sistema operativo par. Esto lo hace utilizando el lenguaje Puppet. Puppet es ideal para automatizar tareas administrativas sobre grandes números de servidores y actualmente es de amplia utilización.


Soluciones IaaS integradas

Los siguientes paquetes de fuente abierta toman un enfoque más holístico al integrar toda la funcionalidad necesaria en un solo paquete (incluyendo virtualización, administración, interfaces y seguridad). Cuan do se añaden a una red de servidores y almacenamiento, estos paquetes producen infraestructuras flexibles de computación y almacenamiento en nube (IaaS). Para detalles sobre estas plataformas, vea Recursos.

Eucalyptus

Uno de los paquetes más populares de fuente abierta para la creación de infraestructuras de computación en nube es Eucalyptus (acrónimo de Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems). Lo que hace que sea único es que su interfaz es compatible Amazon Elastic Compute Cloud (Amazon EC2 — la interfaz de computación en nube de Amazon). Adicionalmente, Eucalyptus incluye Walrus, que es una aplicación de almacenamiento en nube compatible con Amazon Simple Storage Service (Amazon S3 — la interfaz de almacenamiento en nube de Amazon).

Eucalyptus soporta KVM/Linux y Xen en cuanto a hypervisores e incluye la distribución de clúster Rocks para administración de clúster.

OpenNebula

OpenNebula es otra aplicación interesante de fuente abierta (bajo la licencia de Apache) desarrollada en la Universidad Complutense de Madrid. Además de soportar la construcción de nubes privadas, OpenNebula soporta la idea de nubes híbridas. Una nube híbrida permite combinar una infraestructura de nube privada con una infraestructura de nube pública (como Amazon) para permitir grados incluso mayores de escalamiento.

OpenNebula soporta Xen, KVM/Linux y VMware y depende de elementos como libvirt para administración e introspección.

Nimbus

Nimbus es otra solución IaaS que se enfoca en la computación científica. Con Nimbus usted puede tomar prestados recursos remotos (como los proporcionados por Amazon EC2) y administrarlos localmente (configurar, implementar VMs, supervisar, etc.). Nimbus se transformó en el proyecto Workspace Service (parte de Globus.org). Al depender de Amazon EC2, Nimbus soporta Xen y KVM/Linux.

Plataforma de Nube Xen

Citrix ha integrado a Xen en una plataforma IaaS, usando Xen como el hypervisor mientras incorpora otras capacidades de fuente abierta como Open vSwitch. Una ventaja interesante de la solución Xen es su enfoque en la administración basada en estándares (incluyendo OVF, Distributed Management Task Force [DTMF], el Common Information Model [CIM], y la Virtualization Management Initiative [VMAN]) del proyecto Kensho. La pila de administración Xen soporta garantías SLA, junto con mediciones detalladas para devoluciones.

OpenQRM

Finalmente pero no menos importante está OpenQRM, que está categorizada como una plataforma de administración de centro de datos. OpenQRM proporciona una consola individual para manejar todo un centro de datos virtualizado que se puede conectar en términos de arquitectura para permitir la integración de herramientas de terceros. OpenQRM integra soporte para alta disponibilidad (mediante redundancia) y soporta una variedad de hypervisores, incluyendo KVM/Linux, Xen, VMware y Linux VServer.


Avanzando

Se podrían escribir grandes volúmenes sobre el rol de liderazgo que está jugando la fuente abierta en el área de la nube y la virtualización, pero este artículo proporciona una corta introducción sobre algunas de las soluciones populares y visibles disponibles actualmente. Si su intención es construir una nube con base en sus propios requerimientos, a partir de piezas individuales o si simplemente desea una solución cohesiva que funcione lista para utilizar, la fuente abierta le tiene cubierto. Consulte la sección Recursos para más detalles sobre las soluciones tratadas aquí y sobre otras.

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que se registra en developerWorks, se crea un perfil para usted. Información sobre su perfil (nombre, país/región y compañia) estará disponible al público y acompañará cualquiera de sus publicaciones. Puede actualizar su cuenta IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Cloud computing
ArticleID=788097
ArticleTitle=Anatomía de una nube de fuente abierta
publish-date=01232012