thumb|Un clúster en la Universidad McGill.thumb|Un ejemplo de clúster en la NASA (2004) 20 clústeres SGI Altix con total de 10.240 CPU.

El término clúster (del inglés cluster, que significa 'grupo' o 'racimo') se aplica a los sistemas distribuidos de granjas de computadoras unidos entre sí normalmente por una red de alta velocidad y que se comportan como si fuesen un único servidor. A diferencia de la computación en malla (computation grid), los clústeres de computadoras tienen a cada nodo realizando la misma tarea, controlada y planificada por software.

La tecnología de clústeres ha evolucionado en apoyo de actividades que van desde aplicaciones de supercómputo y software para aplicaciones críticas, servidores web y comercio electrónico, hasta bases de datos de alto rendimiento, y otros usos.

El cómputo con clústeres surge como resultado de la convergencia de varias tendencias actuales que incluyen la disponibilidad de microprocesadores económicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cómputo distribuido de alto rendimiento, así como la creciente necesidad de potencia computacional para aplicaciones que la requieran.

Simplemente, un clúster es un grupo de ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador.

Historia El origen del término y del uso de este tipo de tecnología es desconocido pero se puede considerar que comenzó a finales de los años 1950 y principios de los 1960.

La base formal de la ingeniería informática cree que la metodología de proveer un medio de hacer trabajos paralelos de cualquier tipo fue inventado posiblemente por Gene Amdahl de IBM, que en 1967 publicó lo que ha llegado a ser considerado como el libro blanco inicial de procesamiento paralelo: la ley de Amdahl que describe matemáticamente el aceleramiento que se puede esperar paralelizando cualquier otra serie de tareas realizadas en una arquitectura paralela.

Este artículo define la base para la ingeniería de la computación tanto multiprocesador como computación clúster, en donde la principal diferencia es si las comunicaciones entre procesadores se hace dentro de una red local o a través de una red de área extensa.

En consecuencia, la historia de los primeros grupos de computadoras está más o menos directamente ligado a la historia de los primeros pasos de las redes de comunicación, como una necesidad para enlazar los recursos de computación y crear un clúster de computadoras. Las redes de conmutación de paquetes fueron conceptualmente inventadas por la corporación RAND en 1962.

Utilizando el concepto de una red de conmutación de paquetes, el proyecto ARPANET logró crear en 1969 lo que fue posiblemente la primera red de computadoras en clúster en cuatro centros informáticos (cada uno de las cuales fue algo similar a un clúster en red local pero no a un clúster sobre red de área extensa como hoy en día se entiende).

El proyecto ARPANET creció y se convirtió en lo que es ahora Internet. Se puede considerar como «la madre de todos los clústeres» (como la unión de casi todos los recursos de cómputo, incluidos los clústeres, que pasarían a ser conectados).

También estableció el paradigma de uso de clústeres de computadoras en el mundo actual: el uso de las redes de conmutación de paquetes para realizar las comunicaciones entre procesadores localizados en los marcos de otro modo desconectados.

El desarrollo de la construcción de PC por los clientes y grupos de investigación procedió a la par con la de las redes y el sistema operativo Unix desde principios de la década de los años setenta, como TCP/IP y el proyecto de la Xerox PARC proyecto y formalizado para protocolos basados en la red de comunicaciones.

El núcleo del sistema operativo fue construido por un grupo de DEC PDP-11 minicomputadoras llamado C.mmp en C-MU en 1971.

Sin embargo, no fue hasta alrededor de 1983 que los protocolos y herramientas para el trabajo remoto que facilitan la distribución y el uso compartido de archivos fueran definidos (en gran medida dentro del contexto de BSD Unix, e implementados por Sun Microsystems) y, por tanto llegar a disponerse comercialmente, junto con un sistema de archivos compartidos.

El primer producto comercial de tipo clúster fue ARCnet, desarrollada en 1977 por Datapoint pero no obtuvo un éxito comercial y los clústeres no consiguieron tener éxito hasta que en 1984 DEC produjera VAXcluster para el sistema operativo VAX/VMS.

El ARCnet y VAXcluster no solo son productos que apoyan la computación paralela, sino que también comparten los sistemas de archivos y dispositivos periféricos.

La idea era proporcionar las ventajas del procesamiento paralelo, al tiempo que se mantiene la fiabilidad de los datos y el carácter singular. VAXcluster, VMScluster están todavía disponibles en los sistemas de HP OpenVMS corriendo en sistemas Itanium y Alpha.

Otros dos principios comerciales de clústeres notables fueron el Tándem Himalaya (alrededor 1994 de con productos de alta disponibilidad) y el IBM S/390 Parallel Sysplex (también alrededor de 1994, principalmente para el uso de la empresa).

La historia de los clústeres de computadoras estaría incompleta sin señalar el papel fundamental desempeñado por el desarrollo del software de PVM (parallel virtual machine: ‘máquina virtual paralela’).

Este software de código libre, basado en comunicaciones TCP/IP permitió la creación de un superordenador virtual ―un clúster HPC― realizado desde cualquiera de los sistemas conectados TCP/IP.

De forma libre los clústeres heterogéneos han constituido la cima de este modelo, logrando aumentar rápidamente en FLOPS y superando con creces la disponibilidad incluso de los supercomputadores más caros.

PVM y el empleo de PC y redes de bajo costo llevó, en 1993, a un proyecto de la NASA para construir supercomputadoras basados en clústeres.

En 1995, la invención de la Beowulf ―un estilo de clúster― una granja de computación diseñada según un producto básico de la red con el objetivo específico de «ser un superordenador» capaz de realizar firmemente cálculos paralelos HPC.

Esto estimuló el desarrollo independiente de la computación Grid como una entidad, a pesar de que el estilo Grid giraba en torno al del sistema operativo Unix y el Arpanet.

Características Los clústeres son usualmente empleados para mejorar el rendimiento o la disponibilidad por encima de la que es provista por un solo computador típicamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables.

De un clúster se espera que presente combinaciones de los siguientes servicios:

Alto rendimiento Alta disponibilidad Equilibrado de carga Escalabilidad

La construcción de los ordenadores del clúster es más fácil y económica debido a su flexibilidad: pueden tener todos la misma configuración de hardware y sistema operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (clúster semihomogéneo), o tener diferente hardware y sistema operativo (clúster heterogéneo), lo que hace más fácil y económica su construcción.

Para que un clúster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento.

Beneficios de la tecnología clúster Las aplicaciones paralelas escalables requieren: buen rendimiento, baja latencia, comunicaciones que dispongan de gran ancho de banda, redes escalables y acceso rápido a archivos. Un clúster puede satisfacer estos requisitos usando los recursos que tiene asociados a él.

La tecnología clúster permite a las organizaciones incrementar su capacidad de procesamiento usando tecnología estándar, tanto en componentes de hardware como de software que pueden adquirirse a un costo relativamente bajo de los clúster

Clasificación de los clústeres El término clúster tiene diferentes connotaciones para diferentes grupos de personas. Los tipos de clústeres, establecidos de acuerdo con el uso que se dé y los servicios que ofrecen, determinan el significado del término para el grupo que lo utiliza. Los clústeres pueden clasificarse según sus características: HPCC (High Performance Computing Clusters: clústeres de alto rendimiento). HA o HACC (High Availability Computing Clusters: clústeres de alta disponibilidad). HT o HTCC (High Throughput Computing Clusters: clústeres de alta eficiencia).

Alto rendimiento: Son clústeres en los cuales se ejecutan tareas que requieren de gran capacidad computacional, grandes cantidades de memoria, o ambos a la vez. El llevar a cabo estas tareas puede comprometer los recursos del clúster por largos periodos de tiempo.Este a su vez se sub-clasifica:

Activo/activo Activo/pasivo

Alta disponibilidad: Son clústeres cuyo objetivo de diseño es el de proveer disponibilidad y confiabilidad. Estos clústeres tratan de brindar la máxima disponibilidad de los servicios que ofrecen. La confiabilidad se provee mediante software que detecta fallos y permite recuperarse frente a los mismos, mientras que en hardware se evita tener un único punto de fallos.De igual manera se sub-clasifica :

Alta disponibilidad de infraestructura. Alta disponibilidad de aplicación.

Alta eficiencia: Son clústeres cuyo objetivo de diseño es el ejecutar la mayor cantidad de tareas en el menor tiempo posible. Existe independencia de datos entre las tareas individuales. El retardo entre los nodos del clúster no es considerado un gran problema.

Los clústeres pueden también clasificar en: clústeres de IT comerciales (de alta disponibilidad y alta eficiencia) y clústeres científicos (de alto rendimiento). A pesar de las discrepancias a nivel de requisitos de las aplicaciones, muchas de las características de las arquitecturas de hardware y software, que están por debajo de las aplicaciones en todos estos clústeres, son las mismas. Más aún, un clúster de determinado tipo, puede también presentar características de los otros.

Componentes de un clúster En general, un clúster necesita de varios componentes de software y hardware para poder funcionar:

nodos almacenamiento sistemas operativos conexiones de red middleware protocolos de comunicación y servicios aplicaciones ambientes de programación paralela

Nodos Pueden ser simples ordenadores, sistemas multiprocesador o estaciones de trabajo. En informática, de forma muy general, un nodo es un punto de intersección o unión de varios elementos que confluyen en el mismo lugar. Ahora bien, dentro de la informática la palabra nodo puede referirse a conceptos diferentes según el ámbito en el que nos movamos:

En redes de computadoras cada una de las máquinas es un nodo, y si la red es Internet, cada servidor constituye también un nodo. En estructuras de datos dinámicas un nodo es un registro que contiene un dato de interés y al menos un puntero para referenciar (apuntar) a otro nodo. Si la estructura tiene solo un puntero, la única estructura que se puede construir con él es una lista, si el nodo tiene más de un puntero ya se pueden construir estructuras más complejas como árboles o grafos.

Los nodos pueden estar contenidos e interconectados en un solo gabinete, o, como en muchos casos, acoplados a través de una red de área local (LAN (Local Area Network)).

Los nodos del clúster pueden consistir de uno a más procesadores, estos equipos deberán tener un ambiente refrigerante para que así puedan trabajar y evitar que se ”sobrecaliente”.

El clúster puede estar conformado por nodos dedicados o por nodos no dedicados.