Clúster de computadores

[miniatura|300px|*Technische Universität Chemnitz* (Alemaña), clúster de computadores [Linux]]
O termo **clúster** aplícase aos conxuntos ou agrupacións de computadoras construídas por medio da utilización de compoñentes hardware comúns e compórtanse como se fosen unha única computadora. Hoxe en día xogan un papel moi importante coa finalidade de solucionar problemas científicos, de enxeñaría, biomédico etc.

## Historia e características 
A tecnoloxía de clústers evolucionou desenvolvendo actividades de supercómputo e software de misións críticas, servidores Web e comercio electrónico, ata bases de datos de alto rendemento, entre outros usos.

O cómputo con clústers xorde da converxencia de diversas tendencias que afectan na dispoñibilidade de microprocesadores de alto rendemento e alta velocidade, o desenvolvemento de ferramentas software para o cómputo distribuído, como da crecente necesidade de potencia computacional.

Un **clúster** é un grupo de varios ordenadores que se xuntan mediante unha rede de alta velocidade, desa forma é visto como un só moito máis potente que o agregado de todos os individuais.

Dun clúster espérase os seguintes servizos:

# Alto rendemento (*High Performance*).
# Alta dispoñibilidade (*High Availability*).
# Equilibrio da carga (*Load Balancing*).
# Escalabilidade (*Scalability*).

A construción dos ordenadores dun clúster e máis fácil e económica que un único superordenador propietario por que aumenta a escabilidade, podendo empregar diferentes combinacións hardware que poden ser ordenadores heteroxéneos (diferentes tipos de ordenadores), homoxéneos (todos iguais) as combinacións, ou mixto (semihomoxéneo). Tamén poden dispoñer de diferentes Sistemas Operativos.

Para que funcione un clúster require ser configurado e unha posta en marcha no que optimizalo, proceso que pode ser moi complexo polo que se adoitan empregar utilidades software para ese cometido.

miniatura|NASA, clúster de computadores
## Compoñentes dun clúster 
En xeral, un clúster necesita de diversos compoñentes, por citar os máis relevantes:

* Nodos.
* Sistemas Operativos.
* Conexións de Rede.
* Middleware.
* Protocolos de Comunicación e servizos.
* Aplicacións.

### Nodos 
Poden ser simples ordenadores, sistemas multi-procesador ou estacións de traballo.
En informática, de forma moi xeral, un nodo é un punto de intersección ou unión de varios elementos que conflúen no mesmo lugar. Agora ben, dentro da informática a palabra nodo pode referirse a conceptos diferentes segundo o ámbito no cal nos movamos:

En redes de computadores cada unha das máquinas é un nodo, e se a rede é Internet, cada servidor constitúe tamén un nodo. 
En estruturas de datos dinámicas un nodo é un rexistro que contén un dato de interese e ó menos un punteiro para referenciar (apuntar) a outro nodo. Se a estrutura ten un só punteiro, a única estrutura que se pode construír con el é unha lista, se o nodo ten máis dun punteiro xa se poden construír estruturas máis complexas como árbores ou grafos.

### Sistema Operativo 
Debe ser multiproceso, multiusuario. Outras características desexables son a facilidade de uso e acceso. Un sistema operativo é un programa ou conxunto de programas destinado a permitir unha xestión eficaz dos seus recursos. Comeza a traballar cando se prende o computador, e xestiona o hardware da máquina dende os niveis máis básicos, permitindo tamén a interacción co usuario.

Un sistema operativo pódese encontrar normalmente na maioría dos aparatos electrónicos que utilicen microprocesadores para funcionar, xa que grazas a estes podemos entender a máquina e que esta cumpra coas súas funcións (teléfonos móbiles, reprodutores de DVD, autoradios... e computadoras)

### Conexións de Rede 
Os nodos dun clúster poden conectarse mediante unha simple rede Ethernet con placas comúns (adaptadores de rede ou NICs), ou utilizarse tecnoloxías especiais de alta velocidade como Fast Ethernet, Gigabit Ethernet, Myrinet, Infiniband, SCI etc.
É unha rede normal que permite conectarse ás computadoras

### Middleware 
O middleware é un software que xeralmente actúa entre o sistema operativo e as aplicacións coa finalidade de prover a un clúster o seguinte:
* Unha interface única de acceso ó sistema, denominada SSI (*Single System Image*), a cal xera a sensación ó usuario de que utiliza un único ordenador moi potente;
* Ferramentas para a optimización e mantemento do sistema: migración de procesos, *checkpoint-restart* (conxelar un ou varios procesos, mudalos de servidor e continuar o seu funcionamento no novo host), balanceo de carga, tolerancia a fallos etc.;
* Escalabilidade: debe poder detectar automaticamente novos servidores conectados ao clúster para proceder a súa utilización.

Existen diversos tipos de middleware, como por exemplo: MOSIX, OpenMOSIX, Cóndor, OpenSSI etc.

O middleware recibe os traballos entrantes no clúster e distribúeos de modo que o proceso execútese máis rápido e o sistema non sufra sobrecargas nun servidor. Isto realízase mediante políticas definidas no sistema (automaticamente ou por un administrador) que lle indican onde e como deben distribuír os procesos, por un sistema de monitorización, o cal controla a carga de cada CPU e a cantidade de procesos nel.

O middleware tamén debe poder **migrar** procesos entre servidores con distintas finalidades:
* Balancear a carga: se un servidor está moi cargado de procesos e outro está ocioso, poden transferirse procesos a este último para liberar de carga ó primeiro e optimizar o funcionamento;
* Mantemento de servidores: se hai procesos correndo nun servidor que necesita mantemento ou unha actualización, é posible migrar os procesos a outro servidor e proceder a desconectar do clúster ó primeiro;
* Priorización de traballos: no caso de ter varios procesos correndo no clúster, pero un deles de maior importancia que os demais, pode migrarse este proceso ós servidores que teñan máis ou mellores recursos para acelerar o seu procesamento.

## Véxase tamén 
### Ligazóns externas 
* Manexo de Clúster en WebSphere (IBM) Network Deployment 
* Experiencia de Clúster con Software Libre openMosix
* Outra visión de clustering en informática: a clasificación non supervisada
* Conferencia realizada en Elche no 2004. Explica clusters LVS, Beowulf e openMosix.
* Lista Top500 cos ordenadores máis potentes do mundo.
* Proxecto de grado sobre clúster para procesamento de alto rendemento.