Clusters: Qué son y para qué sirven?

Clusters: Qué son y para qué sirven?

Un cluster esta conformado por varias computadoras las cuales se comunican por medio de una conexión a red trabajando en un proyecto el cual seria muy largo para una sola computadora, resolviéndolo en un tiempo razonable.

¿Que es un cluster ?

La Respuesta mas simple es un conjunto de computadoras las cuales trabajan en conjunto para resolver una tarea.

Existen varios tipos de cluster

Alta-disponibilidad (Fail-over o High-Availability): este tipo de cluster esta diseñado para mantener uno o varios servicios disponibles incluso a costa de rendimiento, ya que su foco principal es que el servicio jamas tenga interrupciones como por ejemplo una base de datos.

Alto-rendimiento (HPC o High Performance Computing): este tipo de cluster está diseñado para obtener el máximo rendimiento de la aplicación utilizada incluso a costa de la disponibilidad del sistema, es decir el cluster puede sufrir caidas, este tipo de configuración esta orientada a procesos que requieran mucha capacidad de cálculo.

Balanceo de Carga (Load-balancing): este tipo de cluster esta diseñado para balancear la carga de trabajo entre varios servidores, esto permite tener, por ejemplo, un sitio web sin caidas por una carga excesiva de peticiones en un momento dado (excepto que se sobrepase la capacidad de todas las máquinas) Actualmente un cluster load-balancing es también fail-over con el extra del balanceo de la carga y a menudo con mayor número de nodos.

Los clusters Beowulf han sido diseñados específicamente para estas tareas de tipo masivo, teniendo en contrapartida otras limitaciones que no lo hacen tan accesible para el usuario como un openMosix.

Mainframes y supercomputadoras vs. clusters

Tradicionalmente los mainframes y las supercomputadoras han estado construidas solamente por unos fabricantes muy concretos y para un colectivo elitista que necesitaba gran potencia de cálculo, como pueden ser empresas o universidades. Pero muchos colectivos no pueden afrontar el costo económico que supone adquirir una máquina de estas características, y aquí es donde toma la máxima importancia la idea de poder disponer de esa potencia de cálculo, pero a un precio muy inferior. El concepto de cluster nació cuando los pioneros de la supercomputación intentaban difundir diferentes procesos entre varias computadoras, para luego poder recoger los resultados que dichos procesos debían producir. Con un hardware más barato y fácil de conseguir se pudo perfilar que podrían conseguirse resultados muy parecidos a los obtenidos con aquellas máquinas mucho más costosas, como se ha venido probando desde entonces. Modelos de clusters NUMA, PVM y MPI Hay diferentes formas de hacer procesamiento paralelo, entre las más conocidas y usadas podemos destacar NUMA, PVM y MPI. Las máquinas de tipo NUMA (Non-Uniform Memory Access) tienen acceso compartido a la memoria donde pueden ejecutar su código de programa. En el kernel de Linux hay ya implementado NUMA, que hace variar el número de accesos a las diferentes regiones de memoria. PVM / MPI son herramientas que han estado ampliamente utilizadas y son muy conocidas por la gente que entiende de supercomputación basada en GNU/Linux. MPI es el estándar abierto de bibliotecas de paso de mensajes. MPICH es una de las implementaciones más usadas de MPI, tras MPICH se puede encontrar LAM, otra implementación basada en MPI también con bibliotecas de código abierto. PVM (Parallel Virtual Machine) es un primo de MPI que también es ampliamente usado para funcionar en entornos Beowulf. PVM habita en el espacio de usuario y tiene la ventaja que no hacen falta modificaciones en el kernel de Linux, basicamente cada usuario con derechos suficientes puede ejecutar PVM.

Requerimientos Mínimos

Un nodo tendría que contener, como mínimo, una CPU 486 y una tarjeta madre Intel. Los procesadores Intel 386 funcionarían, pero su rendimiento raramente valdría la pena. Los requerimientos de memoria dependen de los requerimientos de datos de la aplicación y del paralelismo, pero un nodo tendría que contener como mínimo 16MB de memoria. La mayoría de aplicaciones necesitaran 32MB o más por nodo. Usando un espacio de disco centralizado, los nodos se pueden inicializar desde un disquete, un pequeño disco duro o un sistema de archivos en red. Entonces los nodos pueden acceder a su partición raíz desde un servidor de archivos a través de la red, normalmente usando el Network File System (NFS). esta configuración funciona mejor en un entorno con mucho ancho de banda en las conexiones y con un gran rendimiento en el servidor de archivos. Para un mejor rendimiento bajo otras condiciones, cada nodo tendría que tener suficiente espacio en el disco local para el sistema operativo, la memoria virtual y los datos. Cada nodo tendría que tener como mínimo 200 MB de espacio de disco para los componentes del sistema operativo y la memoria virtual, pero 400 MB o más permite tener espacio libre que puede ser usado para las aplicaciones en tiempo de ejecución. Como mínimo cada nodo tiene que incluir una tarjeta de red Ethernet o Fast Ethernet. Alternativamente, interconexiones de más alto rendimiento, incluyendo la Gigabit Ethernet y la Myrinet, podrían ser usadas en conjunción con CPUs más rápidas. Finalmente, cualquier tarjeta de vídeo, una lectora de disquetes, la caja y la batería, completan un nodo funcional. Los teclados y los monitores solo se necesitan para la carga y configuración inicial del sistema operativo, a no ser que las máquinas individuales sean usadas interactivamente además de servir como nodos en el sistema paralelo. Todos los componentes hardware escogidos necesitan el soporte de drivers o módulos en Linux. Generalmente esto no es un problema si el hardware tiene algunos meses.

Muchas fuentes de información acerca del hardware soportado están disponibles en la WWW . Particularmente interesante es la completa lista de drivers y la excelente documentación para una amplia variedad de tarjetas de red hecha por Donald Becker’s. El soporte delas tarjetas de vídeo no es importante en los nodos, ya que normalmente no ejecutan un servidor X; no obstante, el nodo master puede gestionar el cluster. Un servidor X seria útil para esta máquina. Si un componente particular presenta un problema, preguntar en los grupos de noticias puede ayudar a encontrar información acerca del hardware soportado por Linux.

Espero que con esto les quede un poco mas claro que son y para que se usan los clusters… les añado unas web donde obtener mas informacion….

http://openmosix.sourceforge.net/

http://www.beowulf.org

http://www.beowulf-underground.org/ <– muy buena informacion pero en inglés

http://www.linuxhpc.org/