Notas sobre OpenStack

Se me ocurrió hacer una pequeña secuencia de publicaciones sobre OpenStack para así aportar mi granito de arena a la comunidad. Ahora bien, no pienso seguir el orden que siguen en otros blogs que he visto, quizás por un problema de haraganería o por falta de tiempo, pero mi intención es organizarlas en base al interés que me despertaron cada uno de los elementos que conforman la plataforma.

Entonces, inicialmente el orden es el siguiente (recalco, de momento es este, aunque puede cambiar a posteriori):

  • Notas sobre OpenStack: Intro
  • Notas sobre OpenStack: Comenzando con el Panel de Control (Dashboard) Horizon
  • Notas sobre OpenStack: Mirando, muy embelesado, como trabaja Nova
  • Notas sobre OpenStack: Si no entiendes cómo trabaja Neutron, nunca dominarás tus miedos, así que sigue intentándolo
  • Notas sobre OpenStack: Comandos útiles que muchas veces nos salvan la vida, no todo se puede hacer con Horizon

Intro

Hace poco más de un año Armando Felipe Puentes Denis me hablaba sobre una plataforma de Cloud Computing llamada OpenStack con la que ya llevaba trabajando un buen tiempo. Al principio pensé que me estaba hablando de otro de los tantos softwares que existen para hacer nubes de almacenamiento, o de otra onda rara.

Satisfaciendo mi curiosidad inicial me dispuse a leer someramente sobre OpenStack, pero no a la profundidad con la que me hablaba Armando (que, realmente, en ese momento por más que me decía, yo estaba totalmente perdido sobre el tema). En medio de la conversación hice lo de siempre, ir a Wikipedia para saber en qué consistía el dichoso OpenStack.

En la Wikipedia en español apareció algo por dónde empezar, pero quedé insatisfecho con lo que vi, así que fui a la versión en inglés, donde fue que sacié dicha curiosidad inicial. Ya introducido en el tema, me dediqué a buscar documentación. Entre la que me proporcionaba Armando (que me perdía aún más), más la que encontraba en Internet (manuales, artículos de interés, laboratorios, videos en YouTube, etc.), hice mi propia documentación para leerla en cualquier rato libre que tuviese. Créanme, no me canso de leer ni de ver los videos descargados.

Pero hay una gran realidad: para introducirse en el vasto y extenso mundo de OpenStack hay que contar con varios elementos a tu favor: tiempo, interés, perseverancia, algo de recursos para crear un pequeño laboratorio virtual de pruebas y, sobre todo, muchísima paciencia (si la podemos tener en sobredosis, mucho mejor). Con esto les digo que, en cierta medida, gracias a ese período de convalecencia de tres meses que tuve, pude concentrarme en aprender algo de esta interesante plataforma. Sí, algo, porque mientras más uno lee sobre el tema, más se da cuenta de que le falta mucho más por saber.

Ah, y muy importante, en esta plataforma uno se encuentra con algo muy parecido a lo que sucede en el mundo Android: la diferencia entre versiones. Sí, en la documentación chocarán con comandos totalmente diferentes, aunque hagan lo mismo en esencia, esto es debido a las versiones que se han liberado. Así que hay que ser capaz de abstraerse a tal extremo para poder extrapolarlos a la versión con la que trabajé: Ocata.

Por ello, y basado en lo poco que he aprendido, he decido compartirlo con ustedes mediante una secuencia de artículos. Aclaro que me puedo equivocar en el entendimiento de algunos conceptos o en la metodología de trabajo, por lo que les pido que las críticas sean más bien constructivas y no destructivas.

Si está confundido acerca de las diferencias entre OpenStack y virtualización, no es el único. Sin embargo, se trata de dos cosas distintas y este texto describirá cómo distinguirlos, revisaremos algunos casos de uso en los que conviene utilizar OpenStack y, finalmente, despejaremos las dudas sobre algunos mitos acerca de esta plataforma de nube de código abierto.

Virtualización La virtualización se origina en la creación de particiones, que significa dividir un servidor físico en múltiples servidores lógicos. Al proveer un enfoque lógico a los recursos de cómputo, en lugar de un enfoque físico, es posible hacer un par de cosas de gran utilidad: le permite “engañar” a sus sistemas operativos para que crean que un grupo de servidores es un solo conjunto de recursos de cómputo, lo que le permite ejecutar múltiples sistemas operativos simultáneamente en una sola máquina. Una vez que el servidor físico queda dividido, cada servidor lógico puede ejecutar un sistema operativo y sus aplicaciones independientemente.

La virtualización ofrece redundancia y alta disponibilidad en su infraestructura, pero toma mucho tiempo añadir la capacidad necesaria para incrementar el desempeño de salida. Obtener mejor desempeño implica “crecer” o “escalar verticalmente” al añadir más memoria y procesadores para hacer que los hipervisores físicos tengan un mejor desempeño… pero existe un límite a la capacidad máxima del servidor.

El cómputo en la nube, por su parte, cambia el enfoque de consumir hardware a consumir recursos compartidos como servicio. OpenStack es un software de código abierto utilizado para crear nubes públicas y privadas; por ejemplo, para ofrecer servicios consumibles en lugar del hardware en sí. El cómputo en la nube es atractivo por muchas razones, en particular por su modelo de utilidad de pagar solo por lo que se usa y la posibilidad de encender o apagar más recursos de manera muy rápida.

Ya que la virtualización ha existido desde hace décadas, ofrece arquitecturas de referencia y prácticas comunes detalladas; OpenStack, por su parte, ofrece gran flexibilidad, pero esa flexibilidad conlleva mayor responsabilidad: debe decirle qué quiere hacer. Para la nube en general aún se desarrollan arquitecturas de referencia y prácticas comunes.

Operar OpenStack también exige una filosofía de infraestructura diferente: DevOps, la práctica en la que ingenieros de operaciones y desarrollo trabajan en conjunto desde diseño hasta el proceso de desarrollo y hasta brindar soporte a producción. El objetivo de DevOps es crear una cultura y ambiente en el que desarrollar, probar y lanzar software ocurre de manera más rápida y confiable.

Más diferencias:

  • Los recursos de nube son agnósticos y desechables, mientras que la virtualización exige el cuidado y alimentación de máquinas virtuales. Con OpenStack, puede decirle adiós a la reconstrucción y reimplementación.
  • La nube ofrece la posibilidad de automatizar desde el primer momento lo que solían ser las funciones manuales.
  • La nube le permite autoservicio, lo que da la opción de utilizar sus recursos para enfocarse a dar más valor a su negocio. La nube permite que sus usuarios aprovisionen lo que necesitan cuando lo necesitan.
  • El ecosistema de nube fue diseñado con y para los usuarios finales.

Casos de uso

Para aquellos que siguen evaluando la nube a nivel general o que no están seguros de si OpenStack es adecuado para las necesidades de su negocio, a continuación presentamos una breve lista de casos de uso que han demostrado aprovechar las ventajas de OpenStack:

  • ejecutar una plataforma de ecommerce que necesita ser escalable y que tiene contacto directo con el cliente;
  • ejecutar aplicaciones distribuidas en distintos niveles (cargas de trabajo);
  • ejecutar herramientas de desarrollo de código abierto como parte del canal CI/CD (integración continua/ suministro continuo);
  • utilizar metodologías ágiles como método de desarrollo de aplicaciones;
  • exponer API de cara al cliente que necesitan escalarse de acuerdo con la carga;
  • para aquellos que buscan migrar aplicaciones legacy a una plataforma de nube e iniciar una transformación TI organizacional con miras a implementar nuevas aplicaciones.

Algunas otras consideraciones para evaluar sus opciones:

  • OpenStack NO es un hipervisor. Es un “administrador de hipervisores” que busca remover la preocupación sobre hardware y su administración.
  • La flexibilidad es poder: la cantidad de flexibilidad que OpenStack ofrece desde un punto de vista de diseño e implementación es el potencial que todos los administradores de infraestructura quieren y necesitan.
  • Progreso a través de la automatización: solo se pueden cosechar todos los beneficios que OpenStack ofrece si automatiza tanto como sea posible.

Desmitifiquemos OpenStack

Finalmente, quiero dejar en claro algunos mitos acerca de OpenStack que he escuchado por años, y muchos de esos mitos se relacionan directamente con algunas de las funcionalidades que existen en la actualidad en las plataformas de virtualización.

Mito: OpenStack no soporta máquinas virtuales o VM ni migración.

Hechos:

  • Dentro de OpenStack, el proyecto Nova tiene la capacidad de migrar o evacuar instancias de una computadora huésped a través de KVM (el hipervisor sugerido).
  • El componente Nova específico responsable de lidiar con esto es Nova Scheduler.
  • Puede experimentar una pausa de dos segundos durante la migración.

Mito: No existe ninguna función que permita consumir recursos de manera equitativa a través de su nube dentro de OpenStack.

Hechos:

  • Como ya se mencionó anteriormente, OpenStack sí tiene la capacidad de migrar instancias, aun si eso no es una labor automática inteligente; el usuario tendría que desarrollar la automatización que ejecute esta labor o hacerla manualmente.
  • La nube contra un cómputo de estado estacionario: las aplicaciones diseñadas para recursos dinámicos prescindibles, es decir, la nube, no sufre afectaciones al perder un nodo de cómputo ni/o instancias.

Mito: Ninguna de las soluciones de almacenamiento de OpenStack son distribuidas.

Hechos:

  • Una de las características y proyectos más avanzados dentro del ecosistema OpenStack es Cinder, que provee la capacidad para definir múltiples backends para volúmenes de almacenamiento de bloques. Cada uno de estos backends puede apuntar ya sea a un almacenamiento efímero local o a un dispositivo de almacenamiento compartido.
  • Esos backends también pueden ser definidos como tipos de volumen; por su parte, Nova percibe el tipo de volumen.

Mito: OpenStack no percibe la salud del hipervisor:

Hechos:

  • OpenStack únicamente utiliza el modelo de servicio, por ejemplo, cada componente es tratado como un servicio. Eso implica que OpenStack percibe la salud de todos los servicios que se ejecutan dentro de su ecosistema.
  • Si un nodo de cómputo o una instancia fallan, OpenStack NO intentará reiniciarlo; el servicio será marcado como ‘caído’ y las peticiones serán manejadas por los otros recursos (recuerde que el objetivo de la nube es tener recursos desechables).

Mito: No hay solución en OpenStack para recuperar su información.

Hechos:

  • Medianamente cierto. Al utilizar proyectos OpenStack como Cinder y Swift, puede integrar sin interrupciones muchos dispositivos de almacenamiento externo.
  • Sin embargo, OpenStack maneja la preservación de datos a través de un modelo distribuido: los datos importantes NO deben ser guardados en almacenamiento local efímero sino en algún tipo de almacenamiento compartido (EMC, NetApp, Pure…), lo cual sería una solución de gran disponibilidad.

Mito: En OpenStack, si pierde un nodo de cómputo, su aplicación falla.

Hechos:

  • OpenStack tiene protecciones que pueden configurarse para lidiar con fallas en nodos de cómputo.
    • El componente Nova Scheduler administra la distribución de instancias a través de múltiples nodos de cómputo; imagínelo como un balanceo de recursos.
    • OpenStack ofrece muchos mecanismos para lograrlo, dependiendo de sus necesidades particulares. Ejemplos incluidos:

Conozca más sobre los fundamentos de OpenStack o regístrese para una sesión estratégica gratuita. Varias empresas en Internet como Rackspace ha escalado OpenStack exitosamente a miles de nodos y lo opera en nubes de algunas de las compañías más grandes del mundo.

Continuará…..

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4 / 5. Recuento de votos: 2

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*