wiki:Version2/Arquitectura

Version 7 (modified by adelcastillo, 14 years ago) (diff)

--

TOC(heading=Índice)?

En esta página encontrarás los principales componentes que componen el sistema OpenGnSys y que funciones tienen. Su lectura es importante tanto para el uso como para el desarrollo de OpenGnSys.

Servidor

En la arquitectura de OpenGnSys existe un servidor principal donde se centralizan toda la información y se encuentran algunos servicios imprescindibles. Aunque realmente los siguientes elementos se pueden separar en distintos ordenadores, por ahora recomendamos usarlos todos en el mismo.

Base de datos

El servidor de OpenGnSys tiene una base de datos donde se centralizan toda la información relevante del complejo, desde que los datos de los clientes, que sistemas operativos tienen cada uno, que imágenes tiene cada repo y un largo etc.

WebConsole

Es un servicio web y principal elemento de comunicación que se tiene para comunicarse con el sistema. Es un panel de control donde puedes administrar todo el complejo. Sus funcionalidades pueden verse en objetivos de OpenGnSys 2.0.

OGDaemon Server

Es un servicio cuya finalidad es recibir las respuestas de los clientes. El servidor, a través de la WebConsole?, manda diversas tareas a los clientes como apagar, restaurar una imagen en una partición, requerir que hardware utiliza, etc. Las respuestas de estos comandos se reciben por este servicio, que lo guarda en la base de datos y ejecuta la parte del código que se encarga de manejar esa respuesta.

Repositorio

El Repositorio es un servidor auxiliar para no tener que centralizar todo en un mismo ordenador. Su principal función es encender a los clientes por red, permitir que los clientes puedan arrancar por red y almacenar las imágenes que éstos utilizan para reinstalar los sistemas operativos. En la versión actual cada cliente tiene asignado un ÚNICO Repositorio, pero un Repositorio puede dar servicio a más de un cliente. Además puede haber más de un Repositorio y cada uno tendrá un grupo de ordenadores que administrará. Debido a la necesidades del arranque en red y el arranque remoto los Repositorios deben estar en el mismo ámbito de red que sus clientes. Por último recalcar que el Servidor también puede hacer las funciones de Repositorio si se configura adecuadamente.

Servicios

El Repositorio necesita correr unos servicios ajenos a OpenGnSys para que el sistema funcione. Todos están relacionados con el arranque en red de los clientes. Por ahora se usa DHCP, PXE, TFTP y NFS. El servicio DHCP obliga a que el Repositorio esté en la misma red que sus clientes. El DHCP permite coger una IP para arrancar en red, luego lo envía al servidor TFTP. De aquí se descargar el kernel y el initrd que usará para arrancar. El NFS guardará el resto de la distro que se arranca. Además NFS guarda los logs y las imágenes de los clientes. Por ahora OpenGnSys 2.0 no administra los servicios a través de la consola web. En futuras versiones, cuando sí se administren un cliente podrá tener varios Repositorios y cada uno puede tener una función distinta.

OGDaemon Repo

Este demonio, por ahora es igual que el del cliente y si se sigue mantienendo general, seguirá siendo así. Simplemente recibe comandos, los ejecuta y manda la salida de vuelta al servidor. En el caso del repositorio puede usarse para configurar los servicios, arrancarlos, pararlos, reiniciarlos, etc. Pero eso será en futuras versiones ya que no está planeado para la versión 2.0. Por ahora sólo se usará para mandar la orden de arrancar ordenadores por red ayudándose del programa wakeonlan.

Más información en: Version2/Arquitectura/

Cliente

El cliente es cada ordenador que administraremos desde la consola web. Para poder administrarlo completamente deben tener asociado un Repositorio. Principalmente arrancarán por red una distro preparada para realizar todas las funciones que un cliente de OpenGnSys debería hacer. También se trabaja para que esta distro pueda arrancar desde el disco duro y ganar así velocidad. Desde esta distro podremos modificar sus discos duros creando imágenes de sus particiones, restaurandolas, reparticionando, etc. Además también mostrará un menú donde el usuario podrá elegir las operaciones que les gustaría ejecutar, como reinstalar o arrancar un S.O.

OGLive

Es una distribución que se ha creado desde el grupo de desarrollo. Se utiliza la tecnología live debian http://live.debian.net/ Actualmente se genera una Ubuntu Lucid. Con está tecnología podemos crear una distribución que tenga:

  • El menor software posible.
  • Los últimos módulos que permitan detectar el hardware más moderno.
  • El software cliente de OpenGnSys.
  • Arranque a través de una interfaz de red.
  • Arranque a través de un disco duro interno o externo.
  • Arranque desde CD-ROM.
  • Un arranque rápido.
  • Una animación en el arranque.

Engine

Actualmente una serie de funciones bash que permiten realizar todo tipo de operaciones de una manera sencilla. Las operaciones van desde saber que IP tiene el cliente, como crear particiones, crear imágenes, arrancar una partición, etc. Para llamar a esas funciones de una manera coherente se han creado scripts que llamaban a esas funciones bash. Muchas veces los scripts son simplemente una llamada a una función, pero otras hacen cosas más complejas y realiza una serie de procesos con diversasa llamadas a funciones.

Se está estudiando como mejorar este sistema ya que presenta limitaciones sobretodo a la hora de las comunicaciones con el Servidor.

OGDaemon Client

Los scripts del engine se llaman a través de un servicio creado por nosotros. Este servicio recibe comandos desde el Servidor y los ejecuta. La salida la envía de vuelta al servidor. Este programa no es muy complejo, está hecho en Python. Es un servidor web usando webpy. En este puerto escucha peticiones, las parsea y si llega correctamente lo ejecuta. Si el proceso tarda mucho va mandando mensajes de que el proceso todavía se está ejecutando al Servidor. La salida la va mandando a medida que se va generando para que llegue la mayor información posible al Servidor, de esta forma se ha implementado un progreso para saber cuanto le falta.

Más información

Para más información puedes irte a la página de desarrollo de este mismo Wiki.