robot de la enciclopedia para niños

Clúster de computadoras para niños

Enciclopedia para niños
Archivo:Beowulf-cluster-the-borg
Un clúster en la Universidad McGill.
Archivo:Us-nasa-columbia
Un ejemplo de clúster en la NASA (2004) 20 clústeres SGI Altix con un total de 10.240 CPU.

Un clúster (del inglés cluster, que significa 'grupo' o 'racimo') es un conjunto de computadoras que trabajan juntas. Se conectan entre sí, generalmente con una red muy rápida, y actúan como si fueran una sola computadora muy potente. A diferencia de otros sistemas, en un clúster, cada computadora suele hacer la misma tarea, controlada por un programa especial.

Los clústeres se usan para muchas cosas, desde tareas de supercomputación y programas importantes, hasta servidores de internet, tiendas en línea y bases de datos que necesitan mucha velocidad.

Esta tecnología surgió porque ahora hay microprocesadores más baratos y potentes, redes de alta velocidad y programas para que las computadoras trabajen juntas. También, cada vez se necesita más poder de cálculo para diferentes aplicaciones.

En resumen, un clúster es un grupo de computadoras conectadas por una red rápida que funcionan como una sola máquina.

¿Cómo surgieron los clústeres?

El origen exacto de los clústeres no se conoce, pero se cree que empezaron a finales de los años 1950 y principios de los 1960.

Se piensa que la idea de hacer que las computadoras trabajen en paralelo (al mismo tiempo) fue propuesta por Gene Amdahl de IBM en 1967. Él publicó la ley de Amdahl, que explica matemáticamente cuánto más rápido puede ser un trabajo si se divide en partes y se hace en paralelo.

Esta idea es la base tanto para las computadoras con varios procesadores como para los clústeres. La principal diferencia es si las computadoras se comunican en una red pequeña (local) o en una red grande (extensa).

Por eso, la historia de los clústeres está ligada a la historia de las redes de comunicación. Las redes de "conmutación de paquetes" (que dividen la información en pequeños paquetes para enviarla) fueron una idea de la corporación RAND en 1962.

Usando esta idea, el proyecto ARPANET creó en 1969 lo que podría ser la primera red de computadoras en clúster. Conectó cuatro centros de computación.

ARPANET creció y se convirtió en lo que hoy conocemos como Internet. Se podría decir que Internet es como "la madre de todos los clústeres" porque conecta muchísimos recursos de computación.

El desarrollo de las computadoras personales y los sistemas operativos como Unix, junto con redes como TCP/IP, ayudó a que los clústeres se hicieran más comunes.

El primer producto comercial de clúster fue ARCnet en 1977, pero no tuvo mucho éxito. Los clústeres se hicieron populares en 1984, cuando DEC lanzó VAXcluster.

Estos primeros clústeres no solo permitían que las computadoras trabajaran en paralelo, sino que también compartían archivos y dispositivos. La idea era tener los beneficios de trabajar en paralelo, pero manteniendo la información segura y funcionando como un solo sistema.

Un paso muy importante fue el desarrollo del programa PVM (parallel virtual machine). Este programa gratuito permitía crear una "supercomputadora virtual" (un clúster de alto rendimiento) usando cualquier sistema conectado por TCP/IP.

Gracias a PVM y a las computadoras y redes de bajo costo, la NASA inició un proyecto en 1993 para construir supercomputadoras basadas en clústeres.

En 1995, se inventó el estilo de clúster llamado Beowulf. Era un grupo de computadoras diseñado para ser una supercomputadora que pudiera hacer cálculos complejos en paralelo. Esto impulsó el desarrollo de la computación Grid, que también usa redes para conectar recursos.

¿Qué características tienen los clústeres?

Los clústeres se usan para mejorar el rendimiento o para que un sistema esté siempre disponible. Suelen ser más económicos que tener una sola computadora muy potente.

Un clúster puede ofrecer varios servicios:

  • Alto rendimiento: Hacen cálculos muy rápido.
  • Alta disponibilidad: Están siempre funcionando, incluso si una parte falla.
  • Equilibrado de carga: Reparten el trabajo para que ninguna computadora se sobrecargue.
  • Escalabilidad: Se pueden añadir más computadoras fácilmente para aumentar su capacidad.

Construir un clúster es más fácil y económico porque son flexibles. Pueden tener computadoras con el mismo tipo de equipo y sistema operativo (clúster homogéneo), o con equipos y sistemas operativos diferentes (clúster heterogéneo).

Para que un clúster funcione bien, no basta con conectar las computadoras. Se necesita un sistema especial que las gestione, que hable con los usuarios y los programas para optimizar su funcionamiento.

Ventajas de la tecnología clúster

Las aplicaciones que trabajan en paralelo necesitan buen rendimiento, poca demora, redes con mucha capacidad y acceso rápido a los archivos. Un clúster puede cumplir con estos requisitos usando sus recursos.

La tecnología de clústeres permite a las empresas aumentar su capacidad de procesamiento usando equipos y programas estándar, que suelen ser más económicos.

Tipos de clústeres

El término clúster puede significar cosas diferentes según su uso. Se pueden clasificar según lo que ofrecen:

  • 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.

Clústeres de alto rendimiento

Estos clústeres se usan para tareas que necesitan mucha capacidad de cálculo o mucha memoria. Estas tareas pueden usar los recursos del clúster por mucho tiempo. Se subclasifican en:

  • Activo/activo
  • Activo/pasivo

Clústeres de alta disponibilidad

El objetivo de estos clústeres es estar siempre disponibles y ser muy confiables. Intentan que los servicios que ofrecen no se detengan. La confiabilidad se logra con programas que detectan fallos y permiten recuperarse, y con equipos que no tienen un solo punto de fallo. Se subclasifican en:

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

Clústeres de alta eficiencia

Estos clústeres buscan ejecutar la mayor cantidad de tareas en el menor tiempo posible. Las tareas individuales son independientes entre sí, y un pequeño retraso entre las computadoras del clúster no es un gran problema.

Los clústeres también se pueden clasificar en:

  • Clústeres comerciales (de alta disponibilidad y alta eficiencia).
  • Clústeres científicos (de alto rendimiento).

Aunque tienen requisitos diferentes, muchas de las características de los equipos y programas son las mismas. Además, un clúster de un tipo puede tener características de los otros.

Partes de un clúster

Para funcionar, un clúster necesita varios componentes de programas y equipos:

  • Nodos (las computadoras individuales)
  • Almacenamiento (dónde se guardan los datos)
  • Sistemas operativos (el programa principal de las computadoras)
  • Conexiones de red (cómo se comunican)
  • Middleware (un programa que ayuda a que todo funcione junto)
  • Protocolos de comunicación y servicios
  • Aplicaciones (los programas que se ejecutan)
  • Ambientes de programación paralela

Nodos

Los nodos son las computadoras individuales que forman el clúster. Pueden ser computadoras sencillas, sistemas con varios procesadores o estaciones de trabajo. En informática, un nodo es un punto de conexión.

  • En redes de computadoras, cada máquina es un nodo. En Internet, cada servidor también es un nodo.
  • En estructuras de datos, un nodo es un registro que contiene información y un "puntero" que lo conecta a otro nodo.

Los nodos pueden estar dentro de un mismo mueble y conectados entre sí, o, como es más común, conectados a través de una red local (LAN).

Cada nodo puede tener uno o más procesadores. Estos equipos necesitan un sistema de enfriamiento para no sobrecalentarse.

Un clúster puede tener nodos dedicados o no dedicados.

  • En un clúster con nodos dedicados, las computadoras no tienen teclado, ratón ni monitor, y solo se usan para las tareas del clúster.
  • En un clúster con nodos no dedicados, las computadoras tienen teclado, ratón y monitor, y también las usan los usuarios. El clúster aprovecha el tiempo en que el usuario no está usando la computadora para hacer sus tareas.

Es importante que los nodos de un clúster sean parecidos en sus características (procesador, memoria, disco duro). Si son muy diferentes, el sistema podría ser ineficiente, ya que el programa principal (middleware) enviaría todas las tareas al nodo más potente y solo las distribuiría cuando este estuviera muy ocupado.

Almacenamiento

El almacenamiento puede ser un sistema NAS, una SAN o el almacenamiento interno de los servidores. El protocolo más común para compartir archivos es NFS (Network File System). También existen sistemas de archivos específicos para clústeres como Lustre y PVFS2.

Algunas tecnologías para discos duros son:

  • IDE o ATA: velocidades de 33 a 166 MB/s.
  • SATA: velocidades de 150, 300 y 600 MB/s.
  • SCSI: velocidades de 160, 320, 640 MB/s. Ofrece alto rendimiento.
  • SAS: combina SATA-II y SCSI. Velocidades de 300 y 600 MB/s.
  • Las unidades de cinta (DLT) se usan para copias de seguridad porque son económicas.

NAS (Network Attached Storage) es un dispositivo especial para guardar datos en red, usando un sistema operativo optimizado para compartir archivos.

DAS (Direct Attached Storage) consiste en conectar unidades de almacenamiento externas directamente o a una SAN (storage area network) a través de un canal de fibra. Estas conexiones son exclusivas.

Mientras que NAS permite compartir el almacenamiento y es más fácil de manejar, DAS ofrece mayor rendimiento y confiabilidad al no compartir el recurso.

Sistema operativo

Un sistema operativo debe poder manejar varios programas al mismo tiempo (multiproceso) y ser usado por varios usuarios (multiusuario). También es deseable que sea fácil de usar y acceder. Un sistema operativo es un programa que permite gestionar los recursos de una computadora de forma eficiente y segura. Se inicia cuando la computadora arranca y controla el hardware, permitiendo la interacción con el usuario. Se encuentra en la mayoría de los aparatos electrónicos con microprocesadores (teléfonos, reproductores de DVD, computadoras, etc.).

Ejemplos de sistemas operativos para clústeres

  • GNU/Linux (como ABC GNU/Linux, OpenMosix, Rocks, Kerrighed)
  • Unix (como Solaris, HP-UX, AIX)
  • Windows (como NT, 2000 Server, 2003 Server, 2008 Server, 2012 Server)
  • Mac OS X
  • FreeBSD (como DragonFly BSD)

Conexiones de red

Los nodos de un clúster pueden conectarse con una red Ethernet sencilla o usar tecnologías especiales de alta velocidad como Fast Ethernet, Gigabit Ethernet, Myrinet, InfiniBand o SCI.

  • Ethernet: Son las redes más usadas por su bajo costo. Aunque su velocidad puede limitar el rendimiento en clústeres muy exigentes, son buenas para tareas menos intensivas. La opción más común es Gigabit Ethernet (1 Gbit/s), y está surgiendo 10 Gigabit Ethernet (10 Gbit/s). La demora en estas redes es de 30 a 100 microsegundos. Siempre se usa para tareas de administración del clúster.
  • Myrinet: (Myrinet 2000 y Myri-10G). Su demora es de 99 a 10 microsegundos, y su capacidad de datos es de 2 a 10 Gbit/s. Es una red de baja demora muy usada en clústeres grandes.
  • InfiniBand: Es una red diseñada específicamente para clústeres. Permite velocidades muy altas al combinar varios canales. La conexión básica es de 2 Gbit/s, y con "quad connection" puede llegar a 96 Gbit/s. La demora es de unos 10 microsegundos. Se usa mucho para acceder a sistemas de discos.
  • SCI (scalable coherent interface): Su demora teórica es de 1.43 microsegundos y su capacidad de datos es de 5333 Mbit/s en ambas direcciones. Es ideal para clústeres pequeños y medianos porque se puede configurar sin necesidad de un "switch" (aparato que conecta redes).

Middleware

El middleware es un programa que funciona entre el sistema operativo y las aplicaciones. Su objetivo es que el clúster parezca una sola computadora muy potente para el usuario (esto se llama SSI o Single System Image).

También ofrece herramientas para optimizar y mantener el sistema, como mover programas de un servidor a otro, equilibrar la carga de trabajo y manejar fallos. Además, permite que el clúster detecte automáticamente nuevos servidores y los use.

Existen varios tipos de middleware, como MOSIX, OpenMOSIX, Cóndor y OpenSSI.

El middleware recibe las tareas que llegan al clúster y las distribuye para que se ejecuten más rápido y ningún servidor se sobrecargue. Esto lo hace siguiendo reglas predefinidas y monitoreando la carga de cada procesador.

El middleware también puede migrar (mover) programas entre servidores por varias razones:

  • Equilibrar la carga: Si un servidor está muy ocupado y otro está libre, se pueden mover programas al servidor libre para optimizar el funcionamiento.
  • Mantenimiento de servidores: Si un servidor necesita mantenimiento, se pueden mover sus programas a otro servidor antes de desconectarlo.
  • Priorizar trabajos: Si un programa es más importante, se puede mover a los servidores con más recursos para que se procese más rápido.

Ambientes de Programación Paralela

Estos ambientes permiten crear programas que usen los recursos compartidos del clúster, como los procesadores (CPU), la memoria y los datos.

Pasos para armar un clúster

Para armar un clúster, se siguen dos pasos principales:

  1. Selección del Hardware: Se eligen las computadoras que formarán el clúster. Pueden ser homogéneas (con equipos similares) o heterogéneas (con equipos diferentes).
  2. Selección del Software: Se decide qué sistema operativo y middleware usarán las computadoras.

Es posible combinar hardware homogéneo con software heterogéneo, o viceversa.

Ejemplos de clústeres famosos

Beowulf

En 1994, Donald Becker y Thomas Sterling construyeron la primera Beowulf. Usaron 16 computadoras personales con procesadores Intel DX4 de 100 MHz, conectadas por un switch Ethernet. Su rendimiento teórico era de 3.2 GFlops (miles de millones de operaciones de punto flotante por segundo).

Archivo:Beowulf
Una granja Beowulf.

Berkeley NOW

El sistema NOW de Berkeley tenía 105 estaciones de trabajo Sun Ultra 170, conectadas por una red Myrinet. Cada estación tenía un microprocesador Ultra1 de 167 MHz, 512 KiB de caché, 128 MiB de memoria y dos discos de 2.3 GB. En abril de 1997, NOW alcanzó un rendimiento de 10 GFlops.

Google

En 2003, el clúster de Google estaba formado por más de 1.5 millones de computadoras personales. Una búsqueda en Google lee cientos de megabytes y usa billones de ciclos de procesador.

Clúster PS2

En 2004, en la Universidad de Illinois, se investigó el uso de consolas PlayStation 2 (PS2) para cálculos científicos y visualización de alta resolución. Se construyó un clúster con 70 PS2, usando Sony Linux Kit y MPI.

System X

En noviembre de 2004, System X fue el séptimo sistema más rápido del mundo. Fue construido en el Instituto Politécnico y Universidad Estatal de Virginia en 2003 por estudiantes. Está compuesto por varios grupos de 2200 procesadores Apple G5 de 2.3 GHz. Usa dos redes: Infiniband para las comunicaciones entre procesos y Gigabit Ethernet para la administración. System X tiene 4 TiB de memoria RAM y 176 TB de disco duro, con un rendimiento de 12.25 TFlops (billones de operaciones de punto flotante por segundo).

Red Española de Supercomputación

En 2007 se creó la Red Española de Supercomputación, con 7 clústeres en diferentes instituciones españolas.

La mayoría de estos clústeres están formados por nodos con procesadores PowerPC 970FX a 2.2 GHz, conectados con una red Myrinet. Su rendimiento varía, desde los casi 65 TeraFLOPS del MareNostrum (con más de 10000 núcleos) hasta los casi 3 TeraFLOPS de otros nodos.

La actualización de Magerit en 2011 mantuvo la arquitectura de clúster, reemplazando los procesadores por POWER7 a 3.0 GHz, logrando más de 72 TeraFLOPS. Esto demuestra lo fácil y flexible que es esta arquitectura para mejorar los sistemas.

Thunder

Thunder fue construido por el Laboratorio Nacional Lawrence Livermore. Tenía 4096 procesadores Intel Itanium2 Tiger4 de 1.4 GHz y usaba una red Quadrics. Su rendimiento era de 19.94 TFlops.

ASCI Q

ASCI Q fue construido en 2002 por el Laboratorio Nacional Los Álamos. Estaba compuesto por 8192 procesadores AlphaServer SC45 de 1.25 GHz. Su rendimiento era de 13.88 TFlops.

Gestión de recursos: sistemas gestores de colas

Los sistemas de gestión de colas organizan y planifican la ejecución de tareas, y gestionan los recursos para optimizar el rendimiento.

  • Funcionamiento:

* Los usuarios envían trabajos indicando cuánta memoria, tiempo de procesador y espacio en disco necesitan. * El gestor de recursos registra el trabajo. * Cuando los recursos solicitados están disponibles, el gestor de colas ejecuta el trabajo con mayor prioridad. * Se puede consultar el estado de los trabajos (en ejecución, en espera o terminados). * Se puede eliminar un trabajo. * El gestor de colas se configura.

  • Algunos sistemas gestores de colas populares son Sun Grid Engine (SGE), PBS, Open PBS y Torque.

Balanceadores de carga: Linux Virtual Server

Linux Virtual Server (LVS) es un servicio de red que reparte la carga de trabajo para que el clúster sea muy escalable y esté siempre disponible. Lo hace usando técnicas como NAT (Network Address Translation), tunneling IP o enrutamiento directo.

  • NAT: Hace que el clúster funcione con una sola dirección IP pública. El nodo principal reescribe los paquetes para ocultar los nodos internos. Es útil para pocos nodos.
  • Tunneling IP: Similar a NAT, pero el nodo principal no reescribe los paquetes, lo que lo hace más ligero.
  • Enrutamiento directo (DR): Es el sistema más ligero, pero necesita que todos los servidores compartan la misma red.

Clústeres en aplicaciones científicas

  • Suelen ser aplicaciones que requieren muchos cálculos.
  • Necesitan muchos recursos de almacenamiento y, sobre todo, de memoria.
  • Requieren nodos y sistemas dedicados en entornos de alto rendimiento.
  • Los recursos suelen ser controlados por planificadores y gestores de recursos.
  • A menudo son programas antiguos, difíciles de mantener, y las tareas no siempre son fáciles de dividir para el procesamiento paralelo.
  • Ejemplos: Simulaciones (como el simulador de la Tierra), genómica computacional, predicción meteorológica, simulación de corrientes marinas y aplicaciones de química computacional.

Clústeres en aplicaciones empresariales

  • No suelen ser aplicaciones que necesiten muchos cálculos, pero sí requieren alta disponibilidad y respuesta inmediata. Por eso, los servicios están funcionando continuamente y no son controlados por un sistema de colas.
  • Es común que un sistema ofrezca varios servicios. Una forma de distribuir el trabajo es separar los servicios:

* Un servidor web con la base de datos en un nodo, el contenedor de programas en otro y el servidor de páginas web en otro, es un ejemplo de distribución en el ámbito empresarial. * Otra forma es instalar una aplicación web en un clúster con un proxy-caché (como Squid), un servidor web (como Apache/Tomcat), una caché de consultas a la base de datos (como Memcached) y una base de datos (como MySQL). Estos servicios pueden estar duplicados en varios nodos del clúster.

Véase también

Kids robot.svg En inglés: Cluster (computing) Facts for Kids

kids search engine
Clúster de computadoras para Niños. Enciclopedia Kiddle.