Bienvenido a un nuevo artículo en el que vamos hablar de como funciona el sistema multi-nodo en Openstack.
Una de las cosas más difíciles que tiene Openstack es comprender como funciona su arquitectura. Y es difícil porque no existe una arquitectura cerrada como tal, ni una obligación de instalar cada cosa en un sitio.
En VMware vSphere la instalación es clara. ESXi por un lado, vCenter por el otro, extras por otro.
Pero en Openstack esto no es igual: Tienes una total libertad para elegir no sólo la escalabilidad horizontal (suma de nodos, hypervisores, etc), sino también en donde vas a instalar cada componente.
Esto hace que Openstack sea un sistema totalmente personalizado, pero a la vez complejo.
Si todavía no sabes muy bien que es Openstack, te lo aclaro en este artículo.
Contenido del artículo
Instalación Allinone vs instalación multi-nodo en Openstack
Si acabas de empezar en el mundo de Openstack, todo el mundo te dirá que lo mejor que puedes hacer es instalar una versión allinone como Devstack (ubuntu) o Packstack (Centos/Red Hat).
Estas versiones facilitan mucho la instalación ya que con unos pocos comandos tienes montado un entorno Openstack completo.
Si todavía no la tienes, te dejo la guía de como instalar Openstack Packstack
A parte de facilitar la instalación, estas versiones lo que hacen son instalar todos los componentes de Openstack en un mismo nodo.
Obviamente, esto para montar un entorno de desarrollo o de pruebas para aprender es magnífico, pero para un entorno de producción….es arriesgado.
Aunque Packstack te permite añadir nodos de computo (es decir hypervisores), sigues teniendo el problema de que el resto de componentes no están escalados.
Si falla el nodo controlador (es decir donde has instalado tu sistema allinone), adiós a tu sistema.
Por eso en entornos de producción lo que se hace es instalar un entorno bastante complejo en el que se hacen 2 cosas:
- Separar los componentes.
- Montar un sistema HA (alta disponibilidad) entre los nodos para conseguir repartir la carga (activo/activo) o para levantar el servicio en caso de que uno de los nodos caiga (activo/pasivo).
Por supuesto todo esto lo enfoco a empresas grandes.
Una empresa pequeña no puede plantearse tener 200 nodos, por lo que quizá una instalación allinone y agregando nodos de computo (hypervisores) puede ser suficiente, aunque yo intentaría siempre tener al menos 2 nodos controladores con HA aunque tengas que integrar todos los componentes en él.
La base del sistema multi-nodo en Openstack
Ahora que tenemos claro que separar los nodos en Openstack es siempre una buena idea en entornos de producción, vamos a ver de que manera podemos plantear este sistema multinodo en nuestra plataforma Openstack.
Para ello, aunque como te he dicho al principio esto es totalmente libre y abierto y no hay una norma obligatoria, se suele seguir una base a la hora de dividir nuestros nodos.
Esta base o teoría dice que debemos dividir nuestros nodos al menos en 3 de la siguiente manera:
- Nodo controlador que es la base de nuestro sistema. Esto nodo debe contener al menos Nova (que por si no lo tienes claro es el gestor de todo el sistema Openstack) y suele integrar Keystone, Glance y Horizon. Dependiendo de lo grande que sea tu sistema, puedes integrar Cinder y Swift (block y object storage) en este nodo, pero los entornos grandes intentan separarlo en nodos independientes para cada uno.
- Nodo network o de red en el que se suele instalar Neutron.
- Nodo de computo o hypervisor en el que irá instalado el hypervisor que se elija (KVM, QEMU…) y una api de Nova para gestionarlo. Además tiene que llevar instalados los plugins de Neutron que vayamos a utilizar.
Todos estos nodos deberían estar conectados entre si por una red independiente de administración.
Una forma de representar gráficamente este sistema podría ser de la siguiente manera:
Por supuesto estos nodos podrían escalararse horinzontalmente, es decir añadir nodos iguales para aumentar la carga. Por ejemplo de esta forma:
Repito: Esto es solo una idea. No tienes porque instalar tu sistema Openstack así.
Lo que hace potente a Openstack es que todo esto es personalizable a tu proyecto.
Cómo plantear un entorno multi-nodo Openstack en producción 100% efectivo
El entorno para mi que una empresa grande debería plantearse es el siguiente.
5 nodos con HA implementados divididos en:
- Nodo controlador
- Nodo de red
- Nodo de computo
- Nodo de almacenamiento en bloque
- Nodo de almacenamiento de objetos
Esto podría representarse de esta manera:
Por si no te ha quedado claro todavía, añadir nodos horizontalmente es añadir nodos iguales a los que tienes en la imagen. Por ejemplo: 20 nodos controller, 15 nodos network, 200 nodos de computo, 40 de almacenamiento en bloque y 100 de objeto.
Si tienes mas componentes de Openstack, deberías valorar si añadirlos a tu sistema de 5 nodos escalable, o si agregar un nodo para ello.
Conclusión del sistema multi-nodo en Openstack
La conclusión es que tu sistema puede ser como tú quieras y como tu proyecto necesite.
Por supuesto diseñar esta arquitectura requiere unos conocimientos avanzados de Red, Almacenamiento y computo que no está al alcance de todo el mundo.
Por eso debes entender que administrar y diseñar Openstack son cosas muy distintas.
Un administrador no debe saber hacer todo esto, debe saber administrarlo, y de hecho en la certificación COA no te van a pedir en ningún momento que sepas instalar Openstack.
Si quieres saber más sobre el sistema multi-nodo en Openstack, hablo de manera mucho más extensa en el curso Openstack desde Cero.
Por supuesto, en la documentación oficial de Openstack también tienes mucha información, y si te atreves y tienes un pc con buenos recursos, puedes seguir adelante e instalar tu propio sistema multi-nodo.
¡Si te ha gustado comparte y te espero en el próximo artículo!