Flexiant Cloud Orchestrator: con qué se come



Para proporcionar el servicio IaaS (Centro de datos virtual), en Rusonyx usamos la orquesta comercial Flexiant Cloud Orchestrator (FCO). Esta solución tiene una arquitectura bastante única, que la distingue de la conocida por el público en general Openstack y CloudStack.

Como hipervisores de nodo de cómputo, se admiten KVM, VmWare, Xen, Virtuozzo6 / 7, así como contenedores del mismo Virtuozzo. De los almacenes compatibles: almacenamiento local, NFS, Ceph y Virtuozzo.

FCO admite la creación y gestión de múltiples clústeres desde una única interfaz. Es decir, puede administrar el clúster Virtuozzo y el clúster KVM + Ceph cambiando entre ellos haciendo clic con el mouse.

En esencia, FCO es una solución integral para proveedores en la nube que, además de la orquestación, también incluye facturación, con todas las configuraciones, complementos de pago, cuentas, notificaciones, revendedores, tarifas, etc. Sin embargo, la parte de facturación no puede cubrir todos los matices rusos, por lo que nos negamos a usarla en favor de otra solución.

El sistema flexible de distribución de derechos a todos los recursos de la nube es muy agradable: imágenes, discos, productos, servidores, cortafuegos; todo esto puede ser "hurgado" y otorgado derechos entre usuarios, e incluso entre usuarios de diferentes clientes. Cada cliente puede crear varios centros de datos independientes en su nube y administrarlos desde un solo panel de control.



Arquitectónicamente, FCO consta de varias partes, cada una de las cuales tiene su propio código independiente, y algunas tienen su propia base de datos.

Skyline - interfaz de usuario y administrador
Jade - lógica de negocios, facturación, gestión de tareas
Tigerlily es un coordinador de servicios que gestiona y coordina el intercambio de información entre la lógica empresarial y los clústeres.
XVPManager : gestión de elementos de clúster: nodos, almacenamiento, red y máquinas virtuales.
XVPAgent : un agente instalado en nodos para interactuar con XVPManager



Una historia detallada sobre la arquitectura de cada componente que planeamos incluir en una serie de artículos, a menos, por supuesto, que el tema sea de interés.

La principal ventaja de FCO proviene de su "caja". Ofrece simplicidad y minimalismo. Para el nodo de control, se asigna una máquina virtual en Ubuntu, en la que se instalan todos los paquetes necesarios. Todos los ajustes se transfieren a los archivos de configuración en forma de valor variable:

# cat /etc/extility/config/vars … export LIMIT_MAX_LIST_ADMIN_DEFAULT="30000" export LIMIT_MAX_LIST_USER_DEFAULT="200" export LOGDIR="/var/log/extility" export LOG_FILE="misc.log" export LOG_FILE_LOG4JHOSTBILLMODULE="hostbillmodule.log" export LOG_FILE_LOG4JJADE="jade.log" export LOG_FILE_LOG4JTL="tigerlily.log" export LOG_FILE_LOG4JXVP="xvpmanager.log" export LOG_FILE_VARS="misc.log" … 

La configuración completa se corrige inicialmente en las plantillas, luego se inicia el generador
# build-config que formará el archivo vars e indicará a los servicios que vuelvan a leer la configuración. La interfaz de usuario es agradable y puede marcarse fácilmente.



Como puede ver, la interfaz consta de widgets, cuya administración está disponible para el usuario. Puede agregar / eliminar fácilmente widgets de la página, formando así el tablero que necesita.

A pesar de su cercanía, FCO es un sistema altamente personalizable. Tiene una gran cantidad de configuraciones y puntos de entrada para cambiar el flujo de trabajo:

  1. Los complementos personalizados son compatibles, por ejemplo, puede escribir su propio método de facturación o su propio recurso externo para proporcionar al usuario
  2. Se admiten disparadores personalizados para ciertos eventos, por ejemplo, agregar la primera máquina virtual al cliente cuando se crea
  3. Los widgets personalizados son compatibles con la interfaz, por ejemplo, incrustar videos de YouTube directamente en la interfaz de usuario.

Toda la personalización está escrita en el lenguaje FDL, que se basa en Lua. Si conoce a Lua, no habrá problemas con FDL.

Aquí hay un ejemplo de uno de los desencadenantes más simples que usamos. Este activador no permite a los usuarios compartir sus propias imágenes con otros clientes. Hacemos esto para que un usuario no pueda crear una imagen maliciosa para otros usuarios.

 function register() return {"pre_user_api_publish"} end function pre_user_api_publish(p) if(p==nil) then return{ ref = "cancelPublishImage", name = "Cancel publishing", description = "Cancel all user's images publishing", triggerType = "PRE_USER_API_CALL", triggerOptions = {"publishResource", "publishImage"}, api = "TRIGGER", version = 1, } end -- Turn publishing off return {exitState = "CANCEL"} end 

El núcleo de FCO llamará a la función de registro. Devolverá el nombre de la función a llamar. El parámetro "p" de esta función almacena el concurso de llamadas, y en la primera llamada estará vacío (nulo). Eso nos permitirá registrar nuestro disparador. En triggerType, mostramos que el activador se llama ANTES de la operación de publicación, y se aplica solo a los usuarios. Para los administradores de sistemas, por supuesto, permitimos que todo se publique. En triggerOptions, detallamos las operaciones para las cuales se disparará el disparador.

Y lo más importante, devuelva {exitState = "CANCEL"}, por lo que se desarrolló el desencadenador. Volverá a fallar cuando el usuario intente compartir su imagen en el panel de control.

En la arquitectura FCO, cualquier objeto (disco, servidor, imagen, red, adaptador de red, etc.) se representa como una entidad de recursos, que tiene parámetros comunes:

  • Recurso uuid
  • nombre del recurso
  • tipo de recurso
  • Propietario del recurso UUID
  • estado del recurso (activo, inactivo)
  • metadatos de recursos
  • claves de recursos
  • UUID del producto al que pertenece el recurso
  • Recurso VDC

Esto es muy conveniente cuando se trabaja en la API, cuando el trabajo con todos los recursos se realiza con el mismo principio. Los productos son configurados por el proveedor y el cliente los ordena. Dado que nuestra facturación está al margen, el cliente puede solicitar cualquier producto desde el panel de forma gratuita. Se considerará más adelante en la facturación. El producto puede ser: dirección IP por hora, un GB adicional de disco por hora o simplemente un servidor.

Puede marcar ciertos recursos con claves para cambiar la lógica de trabajar con ellos. Por ejemplo, podemos marcar tres nodos físicos con la tecla Peso y marcar algunos clientes con la misma clave, resaltando así estos nodos personalmente para estos clientes. Utilizamos dicho mecanismo para clientes VIP a quienes no les gustan los vecinos junto a sus máquinas virtuales. La funcionalidad en sí misma se puede aplicar mucho más ampliamente.

El modelo de licencia implica pagar por cada núcleo de un procesador de nodo físico. El costo también se ve afectado por la cantidad de tipos de clúster. Si planea usar juntos, por ejemplo, KVM y VMware, entonces el costo de la licencia aumentará.

FCO es un producto completo, su funcionalidad es muy rica, por lo que planeamos preparar varios artículos a la vez con una descripción detallada del funcionamiento de la parte de la red.

Después de haber trabajado con esta orquesta durante varios años, podemos marcarla como muy adecuada. Por desgracia, el producto no está exento de defectos:

  • tuvimos que optimizar la base de datos, porque las consultas comenzaron a disminuir a medida que aumentaba la cantidad de datos en ellas;
  • después de un accidente, debido a un error, el mecanismo de recuperación no funcionó, y tuvimos que elevar las máquinas de clientes insatisfechos con nuestro propio conjunto de scripts;
  • El mecanismo de detección de inaccesibilidad del nodo está conectado al código y no se puede personalizar. Es decir, no podemos crear nuestras propias políticas para determinar la inaccesibilidad de un nodo.
  • el registro no siempre es detallado. A veces, cuando necesita bajar a un nivel muy bajo para analizar un problema específico, el código fuente de algunos componentes no es suficiente para comprender los motivos;

TOTAL: en general, la experiencia del producto es buena. Estamos en contacto constante con los desarrolladores de la orquesta. Los chicos están dispuestos para una cooperación constructiva.

A pesar de su simplicidad, FCO tiene una amplia funcionalidad. En futuros artículos, planeamos profundizar en los siguientes temas:

  • networking en FCO
  • soporte de protocolo de recuperación en vivo y FQP
  • escribir complementos y widgets personalizados
  • conectar servicios adicionales como Load Balancer y Acronis
  • copia de seguridad
  • mecanismo unificado para configurar y configurar nodos
  • procesamiento de metadatos de máquina virtual

PD Escriba en los comentarios si otros aspectos son interesantes. Estén atentos!

Source: https://habr.com/ru/post/449196/


All Articles