Aunque parezca sencillo de responder no lo es en absoluto. Podría incluirse alguna definición de algún libro, pero el problema es que ni los expertos en clusters ni la gente que los implementa se ponen de acuerdo en que es aquello en lo que trabajan.

Un cluster podemos entenderlo como:
Un conjunto de máquinas unidas por una red de comunicación trabajando por un servicio conjunto. Según el servicio puede ser: Dar alta disponibilidad, alto rendimiento, etc...

Por supuesto esta definición no es estricta, de hecho uno de los problemas que tiene es que es demasiado vaga porque por ejemplo dos consolas de videojuegos conectadas para jugar en red ¿se consideran cluster? Pero si en vez de estar jugando se está usando el kit de GNU/Linux haciendo procesamiento paralelo ¿entonces se podría considerar cluster?
Realmente el cambio de ambiente es mínimo, desde luego a nadie se le ocurriría definir cluster en base al contenido de los programas que se ejecuten y de hecho es posible que los juegos tengan más capacidades de procesamiento distribuido que los propios programas, entonces ¿qué es un cluster?
Hay definiciones que distinguen entre cluster de máquinas SMP y clusters formados por nodos monoprocesadores.
Hay arquitecturas clusters que se denominan constelaciones1 y se caracterizan por que cada nodo contiene más procesadores que el número de nodos. A pesar de todo, las constelaciones siguen siendo clusters de componentes o nodos aventajados y caros. De hecho entre las máquinas que aparecen en el top500 existen unos pocos clusters que pertenecen a organizaciones que no son gigantes de la informática, lo cual indica el precio que pueden llegar a tener estos sistemas.
Por poner unos ejemplos de la disparidad de opiniones que existen, se adjuntan las definiciones que dan ciertas autoridades de esta materia:

Un cluster consiste en un conjunto de maquinas y un servidor de cluster dedicado, para realizar los relativamente infrecuentes accesos a los recursos de otros procesos, se accede al servidor de cluster de cada grupo. Del libro Operating System Concepts de Silberschatz Galvin.

Es una clase de arquitectura de computador paralelo que se basa en unir maquinas independientes cooperativas integradas por medio de redes de interconexión para proveer un sistema coordinado, capaz de procesar una carga. Del autor Dr. Thomas Sterling.



Sabían que...google es un cluster?
:: Cada clúster de Google se compone de 359 racks, 31.654 servidores, 63.184 CPUs, 126.368 GHz de potencia de procesamiento, 63.184 Gbytes de RAM y 2.527 Tbytes de espacio en Disco Duro. Cada uno de estos clústers puede atender hasta 40 millones de búsquedas por día. Si en cada uno de los más de 20 datacentes que Google tiene repartidos por diversas regiones del mundo (Norteamérica, Asia y Europa) hay al menos un clúster, estaríamos hablando de un total de más de 600.000 servidores.

:: Cada uno de los clústers tiene una arquitectura muy similar (servidores web, servidores donde se almacenan los índices y servidores donde se almacenan los documentos), que se describe bastante bien en este documento.

:: Los ingenieros de Google son capaces de construir y hacer funcionar un clúster de Google en tres días.

:: La información está replicada más de tres veces para garantizar la fiabilidad a base de redundancia.

Características de un cluster
Para crear un cluster se necesitan al menos dos nodos. Una de las características principales de estas arquitecturas es que exista un medio de comunicación (red) donde los procesos puedan migrar para computarse en diferentes estaciones paralelamente. Un solo nodo no cumple este requerimiento por su condición de aislamiento para poder compartir información. Las arquitecturas con varios procesadores en placa tampoco son consideradas clusters, bien sean máquinas SMP o mainframes, debido a que el bus de comunicación no suele ser de red, sino interno.
Por esta razón se deduce la primera característica de un cluster:

1- Un cluster consta de 2 o más nodos.
Los nodos necesitan estar conectados para llevar a cabo su misión. Por tanto:

2- Los nodos de un cluster están conectados entre sí por al menos un canal de comunicación.
Por ahora se ha referenciado a las características físicas de un cluster, que son las características sobre las que más consenso hay. Pero existen más problemas sobre las características del programario de control que se ejecuta, pues es el software el que normalmente dotará al conjunto de máquinas de capacidad para migrar procesos, balancear la carga en cada nodo, etc.

3- Los clusters necesitan software de control especializado.
El problema también se plantea por los distintos tipos de clusters, cada uno de ellos requiere un modelado y diseño del software distinto.
Como es obvio las características del cluster son completamente dependientes del software, por lo que no se tratarán las funcionalidades del software sino el modelo general de software que compone un cluster. Para empezar, parte de este software se debe dedicar a la comunicación entre los nodos. Existen varios tipos de software que pueden conformar un cluster:

Software a nivel de aplicación.
Este tipo de software se sitúa a nivel de aplicación, se utilizan generalmente bibliotecas de carácter general que permiten la abstracción de un nodo a un sistema conjunto, permitiendo crear aplicaciones en un entorno distribuido de manera lo mas abstracta posible. Este tipo de software suele generar elementos de proceso del tipo rutinas, procesos o tareas, que se ejecutan en cada nodo del cluster y se comunican entre sí a través de la red.

Software a nivel de sistema.
Este tipo de software se sitúa a nivel de sistema, suele estar implementado como parte del sistema operativo de cada nodo, o ser la totalidad de éste.
Es más crítico y complejo, por otro lado suele resolver problemas de carácter mas general que los anteriores y su esencia, por norma general, es mayor.
A pesar de esta división existen casos en los cuales se hace uso de un conjunto de piezas de software de cada tipo para conformar un sistema cluster completo. Son implementaciones híbridas donde un cluster puede tener implementado a nivel de kernel parte del sistema y otra parte estar preparada a nivel de usuario.

Esquema y otras características
Las características básicas de un cluster de carácter general podrán resumirse en el siguiente esquema:

1. Un cluster consta de 2 o mas nodos conectados entre sí por un canal de comunicación funcional.
2. En cada nodo es imprescindible un elemento de proceso, memoria y un interfaz para comunicarse con la red del cluster.
3. Los clusters necesitan software especializado. Este software y las máquinas conforman el cluster. El software puede ser:
a) aplicación
b) sistema
4. Se define acoplamiento de un cluster como nivel de colaboración que une los elementos del cluster. De este modo se categorizan en:
a) Acoplamiento fuerte
b) Acoplamiento medio o moderado
c) Acoplamiento débil
5. Todos los elementos del cluster trabajan para cumplir una funcionalidad conjunta, sea esta la que sea. Es la funcionalidad la que caracteriza el sistema.
o Mejora sobre la disponibilidad
o Mejora del rendimiento
En general la catalogación de los clusters se hace en base a cuatro factores de diseño bastante ortogonales entre sí:
o Acoplamiento
o Control
o Homogeneidad
o Seguridad

Clasificación según el servicio prioritario

Generalmente el diseño de un cluster se realiza para solucionar problemas de tipo:
o Mejora de rendimiento
o Abaratamiento del coste
o Distribución de factores de riesgo del sistema
o Escalabilidad

El punto inicial ha sido explicado anteriormente: el coste para doblar las prestaciones de un equipo no suele ser habitualmente a costa de pagar el doble, sino unas cuantas veces m´as. El modelo de los clusters permite que la mejora de rendimiento sea evidente respecto a grandes mainframes a un precio realmente asequible. Lo que explica a su vez el segundo punto, acerca del coste de los clusters, que permite relaciones rendimiento precio que se acercan a un margen lineal dependiendo del cluster implementado.
Por otro lado esta la distribución de riesgos. La mayoría de los usuarios tienen sus servicios, aplicaciones, bases de datos o recursos en un solo ordenador, o dependientes de un solo ordenador. Otro paso mas adelante es colocar las bases de datos replicadas sobre sistemas de archivos distribuidos de manera que estos no se pierdan por que los datos son un recurso importante. Actualmente el mercado de la informática exige no solo que los datos sean críticos sino que los servicios estén activos constantemente. Esto exige medios y técnicas que permitan que el tiempo en el que una máquina esté inactiva sea el menor posible. La distribución de factores de riesgo a lo largo de un cluster (o la distribución de funcionalidades en casos más generales) permite de una forma única obtener la funcionalidad de una manera más confiable: si una máquina cae otras podrían dar el servicio.
Por último está el factor de escalabilidad, del cual se habló en el tema de introducción. Cuanto más escalable es un sistema menos costaría mejorar el rendimiento, lo cual abarata el coste, y en el caso de que el cluster lo implemente distribuye más el riesgo de cada de un sistema.
En cualquier caso, todas estas características dan pie a los tipos de clusters que se van a ver.

Alto rendimiento (HP, high performance)
Los clusters de alto rendimiento han sido creados para compartir el recurso más valioso de un ordenador, es decir, el tiempo de proceso. Cualquier operación que necesite altos tiempos de CPU puede ser utilizada en un cluster de alto rendimiento, siempre que se encuentre un algoritmo que sea paralelizable.
Existen clusters que pueden ser denominados de alto rendimiento tanto a nivel de sistema como a nivel de aplicación. A nivel de sistema tenemos openMosix, mientras que a nivel de aplicación se encuentran otros como MPI, PVM, Beowulf y otros muchos. En cualquier caso, estos clusters hacen uso de la capacidad de procesamiento que pueden tener varias máquinas.

Alta disponibilidad (HA, high availability)
Los clusters de alta disponibilidad son bastante ortogonales en lo que se refieren a funcionalidad a un cluster de alto rendimiento. Los clusters de alta disponibilidad pretenden dar servicios 7/24 de cualquier tipo, 90 Capítulo 4. Clusters son clusters donde la principal funcionalidad es estar controlando y actuando para que un servicio o varios se encuentren activos durante el máximo periodo de tiempo posible. En estos casos se puede comprobar como la monitorización de otros es parte de la colaboración entre los nodos del cluster.

Alta confiabilidad (HR, high reliability)
Por ultimo, están los clusters de alta confiabilidad. Estos clusters tratan de aportar la máxima contabilidad en un entorno, en la cual se necesite saber que el sistema se va a comportar de una manera determinada. Puede tratarse por ejemplo de sistemas de respuesta a tiempo real.
Pueden existir otras catalogaciones en lo que se refiere a tipos de clusters, en nuestro caso, solamente hemos considerado las tres que más clusters implementados engloban, si bien existe alguno de ellos que puede ser considerar o como cluster de varios tipos a la vez.

Requerimientos hardware
Para la instalación básica de un cluster necesitaremos al menos dos computadoras conectadas en red. Podremos conectarlas mediante un cable cruzado entre las respectivas tarjetas de red, con un hub o con un switch.
Evidentemente cuanto más rápida sea la conexión entre máquinas, más eficaz será nuestro sistema global.
Actualmente Fast Ethernet es un estándar, permitiendo múltiples puertos en una máquina. Gigabit Ethernet es más cara y no es recomendable probar con ella sin antes haberse asegurado un correcto funcionamiento con
Fast Ethernet y comprobar que realmente se necesita este extra en la velocidad de transferencia de datos entre nodos.
Siempre podremos hacer funcionar varias tarjetas Fast en cada nodo para asignarles luego la misma dirección (IP) y de esta forma poder obtener múltiples en la velocidad.
El resto del hardware necesario dependerá de las decisiones que se hayan hecho con el sistema de ficheros (en red o no), la instalación de monitores gráficos en todos o solo algunos nodos, etc.
Algunas disposiciones hardware especiales pueden encontrarse en la sección Nodos sin discos del capítulo Tutórales para casos especiales.

Planteamientos del cluster
Para configurar tu cluster openMosix en un pool de nodos, o conjunto de estaciones de trabajo, tendremos diferentes opciones, cada una con sus ventajas e inconvenientes.
En una single-pool todos los servidores y estaciones de trabajo son utilizadas como un cluster único: cada máquina forma parte del cluster y puede migrar procesos hacia cada uno de los otros nodos existentes.
Esta configuración hace que tu propia máquina forme parte del pool.
En un entorno llamado server-pool los servidores son parte del cluster mientras que las estaciones de trabajo no lo son. Si quisiéramos ejecutar aplicaciones en el cluster necesitaremos entrar en él de forma específica. De este modo las estaciones de trabajo permanecerán libres de procesos remotos que les pudieran llegar.
Existe una tercera alternativa llamada adaptive-pool, donde los servidores son compartidos mientras que las estaciones de trabajo podrán entrar y salir del cluster. Podemos imaginar que las estaciones deban ser usadas durante un cierto intervalo de tiempo diario, y que fuera de este horario puedan ser aprovechadas para las tareas del cluster.

Que es un Superordenador?
Una supercomputadora es un término genérico que se aplica a una computadora que puede funcionar mucho mejor que una computadora ordinaria.
Un superordenador se utiliza típicamente para los usos científicos y de la ingeniería que realizan grandes cantidades de cómputos, grandes bases de datos por ejemplo.
El superordenador puede también aplicarse a los sistemas que son mucho más lentos pero aún impresionantemente rápidos.
En realidad, la mayor parte de sistemas supercomputacionales son múltiples ordenadores entrelazados que realizan procesamientos paralelos después de uno de los dos accesos de procesamientos paralelos generales:
• SMP, o multiprocesamiento simétrico
• MPP, o Proceso masivo paralelo

En el SMP (también conocido como " fuertemente conectado" o como un sistema "Todo compartido ", la memoria de la parte de los procesadores, el bus de la entrada/salida, y una sola copia del sistema operativo controla los procesadores. Dieciséis procesadores son el límite superior generalmente en la mayoría de los sistemas de SMP. Los sistemas de SMP tienen una ventaja sobre los de MPP al realizar el tratamiento transaccional en línea (OLTP) en el cual muchos usuarios emplean un sistema simple de transacciones para tener acceso a la misma base de datos. El equilibrio dinámico de la carga de trabajo es la facilidad que permite que SMP brille para esta tarea.
Los sistemas de MPP (también conocidos como “débilmente conectado” o como un sistema “Nada compartido”) son caracterizados por un número de procesadores, cada uno con su propio sistema operativo y la memoria, que procesan diversas partes de un solo programa al mismo tiempo.
El sistema utiliza un interfaz de la mensajería y un sistema de trayectoria de datos que permite que los procesadores se comuniquen el uno con el otro. Hasta 200 procesadores se pueden centrar en una sola tarea. Implantar un sistema de MPP puede ser complicado, puesto que esto requiere mucha planificación, cuando esto viene a recursos de sistema y asignaciones del trabajo entre procesadores. Los sistemas de MPP tienen una ventaja en las aplicaciones, cuando los usuarios necesitan buscar un enorme número de bases de datos al mismo tiempo.
Implementación de un pequeño Cluster

Las Herramientas: ClusterKnoppix y OpenMosix

La distribución principal utilizada es ClusterKnoppix, y el núcleo openMosix.
---> Descarga ClusterKnoppix 3.3 con Núcleo openMosix vía FTP (533 MB.)