¿Qué es un cluster de computadoras?

Qué es un cluster de computadoras

Un grupo de ordenadores (un cluster de ordenadores) se componen de equipos conectados que trabajan juntos, y, en muchos aspectos, se pueden considerar como un solo sistema. A diferencia de los ordenadores de la red, en los grupos de equipos cada nodo trabaja con los otros para realizar la misma tarea, controlado y programado por software.

Los componentes de un grupo son por lo general conectadas entre sí por la vía rápida de red de área local ( "LAN"), con cada nodo (cada ordenador se utiliza como un servidor) con dirección de su propio caso de sistema de explotación. En la mayoría de las circunstancias, todos los nodos utilizan el mismo hardware y el mismo sistema operativo, aunque en algunas configuraciones (es decir, el uso de la fuente de Recursos de grupo abierto de aplicación (OSCAR)) diferentes sistemas operativos se pueden utilizar en cada equipo, y, o material diferente.

Por lo general son desplegados para mejorar el rendimiento y la disponibilidad sobre la de un único equipo, mientras que suelen ser mucho más rentables que los ordenadores individuales de velocidad.

Los grupos informaticos han surgido como resultado de la convergencia de una serie de tendencias de computación, incluyendo la disponibilidad de microprocesadores baratos, redes de banda ancha (alta velocidad) y software para computación distribuida muy eficiente. Tienen una amplia gama de aplicabilidad y despliegue, que van desde los grupos de pequeñas empresas con un puñado de nodos a algunos de los superordenadores más rápidos en el mundo como el IBM Sequoia.

Conceptos fundamentales

El deseo de obtener más potencia de cómputo y una mayor fiabilidad mediante la orquestación de una serie de computadoras de bajo costo comercial ha dado lugar a una variedad de arquitecturas y configuraciones.

La agrupación de ordenadores usualmente tiene como enfoque (pero no siempre) la conexion de una serie de nodos de computación fácilmente disponibles (por ejemplo, ordenadores personales usados como servidores) a través de una red de área local rápida. Las actividades de los nodos de computación son orquestadas por "un middleware de agrupación", una capa de software que se encuentra encima de los nodos y permite a los usuarios tratar el cluster como una unidad de cálculo cohesiva, por ejemplo a través de un concepto de imagen de sistema único.



simple cluster

El agrupamiento de ordenadores se basa en un enfoque de gestión centralizado que hace que los nodos estén disponibles como servidores compartidos orquestados. Es distinto de otros enfoques como peer to peer o grid computing que también utilizan muchos nodos, pero con una naturaleza mucho más distribuida.

Un clúster de computadora puede ser un sistema de dos nodos simple que sólo conecta dos computadoras personales, o puede ser un supercomputador muy rápido. Un enfoque básico para construir un cluster es el de un cluster Beowulf que puede ser construido con unos cuantos ordenadores personales para producir una alternativa rentable a la computación tradicional de alto rendimiento. Un proyecto temprano que demostró la viabilidad del concepto fue el 133-nodos Stone Soupercomputer. Los desarrolladores usaron Linux, el conjunto de herramientas Parallel Virtual Machine y la biblioteca Message Passing Interface para lograr un alto rendimiento a un costo relativamente bajo.

Aunque un clúster puede consistir en sólo unos cuantos ordenadores personales conectados por una red simple, la arquitectura del clúster también puede utilizarse para alcanzar niveles muy altos de rendimiento. La lista semestral de las 500 supercomputadoras más rápidas de la organización TOP500 a menudo incluye muchos clústeres, p. La máquina más rápida del mundo en 2011 fue la computadora K que tiene una memoria distribuida y arquitectura de clúster.

Historia

Greg Pfister ha declarado que los clústeres no fueron inventados por ningún proveedor específico, sino por clientes que no podían ajustar todo su trabajo en una computadora, o que necesitaban una copia de seguridad. Pfister estima la fecha de su creacion de los clusters en los años sesenta. Gene Amdahl de IBM, que en 1967 publicó lo que ha llegado a ser considerado como el documento seminal sobre el procesamiento paralelo: la Ley de Amdahl, podría haber inventado la base formal de ingeniería de la computación en racimo como un medio para hacer trabajos paralelos de cualquier tipo.

La historia de los primeros clusters de ordenadores está más o menos directamente ligada a la historia de las primeras redes, ya que una de las principales motivaciones para el desarrollo de una red era vincular los recursos informáticos, creando un clúster de computador de facto.

El primer sistema de producción diseñado como un grupo fue el Burroughs B5700 a mediados de los años sesenta. Esto permitió que hasta cuatro computadoras, cada una con uno o dos procesadores, fueran estrechamente acopladas a un subsistema de almacenamiento en disco común para distribuir la carga de trabajo. A diferencia de los sistemas multiprocesador estándar, cada equipo podría reiniciarse sin interrumpir el funcionamiento general.

El primer producto comercialmente agrupado de forma poco acoplada fue el sistema "Attached Resource Computer" (ARC) de Datapoint Corporation, desarrollado en 1977, y utilizando ARCnet como interfaz de clúster. El agrupamiento por sí solo no despegó hasta que Digital Equipment Corporation lanzó su producto VAXcluster en 1984 para el sistema operativo VAX / VMS (ahora llamado OpenVMS). Los productos ARC y VAXcluster no sólo soportaban la computación paralela, sino también sistemas de archivos compartidos y dispositivos periféricos. La idea era proporcionar las ventajas del procesamiento paralelo, manteniendo la confiabilidad y singularidad de los datos. Otros dos clusters comerciales tempranos dignos de mención eran el Himalayan Tandem (un producto de alta disponibilidad del circa 1994) y el IBM Sysplex S / 390 paralelo (también circa 1994, sobre todo para el uso del negocio).

En el mismo marco de tiempo, mientras que los clusters de computadora usaban el paralelismo fuera de la computadora en una red de productos básicos, los superordenadores comenzaron a usarlos dentro de la misma computadora. Después del éxito del CDC 6600 en 1964, el Cray 1 fue entregado en 1976, e introdujo el paralelismo interno vía el proceso del vector. Mientras que las primeras supercomputadoras excluyeron los clústeres y se basaron en la memoria compartida, con el tiempo algunas de las supercomputadoras más rápidas (por ejemplo, la computadora K) se basaron en arquitecturas de clúster.

Atributos de clusters

Los clústeres de computadoras pueden configurarse para diferentes propósitos que van desde las necesidades de negocios de propósito general, tales como soporte de servicio web, hasta cálculos científicos intensivos. En cualquier caso, el clúster puede utilizar un enfoque de alta disponibilidad. Ten en cuenta que los atributos descritos a continuación no son exclusivos y un "clúster de equipos" también puede utilizar un enfoque de alta disponibilidad, etc.

Los clústeres de "equilibrio de carga" son configuraciones en las que los nodos del clúster comparten la carga de trabajo computacional para proporcionar un mejor rendimiento general. Por ejemplo, un clúster de servidores web puede asignar diferentes consultas a diferentes nodos, por lo que el tiempo de respuesta global se optimizará. Sin embargo, los enfoques para equilibrar la carga pueden diferir significativamente entre las aplicaciones, por ej. Un clúster de alto rendimiento utilizado para los cálculos científicos equilibraría la carga con diferentes algoritmos de un clúster de servidor web que puede utilizar un simple método round-robin asignando cada nueva solicitud a un nodo diferente.

Los clústeres de ordenadores se usan para fines de cálculo intensivo, en lugar de manejar operaciones orientadas a IO como el servicio web o las bases de datos. Por ejemplo, un clúster de computadoras podría soportar simulaciones computacionales de accidentes de vehículos o condiciones meteorológicas. Los clusters muy estrechamente acoplados están diseñados para el trabajo que puede acercarse a "supercomputación".

Los clústeres de alta disponibilidad (también conocidos como clústeres de conmutación por error) mejoran la disponibilidad del enfoque de clúster. Funcionan teniendo nodos redundantes, que luego se utilizan para proporcionar servicio cuando fallan los componentes del sistema. Las implementaciones de clúster HA intentan utilizar la redundancia de los componentes del clúster para eliminar puntos de fallo únicos. Existen implementaciones comerciales de clústeres de alta disponibilidad para muchos sistemas operativos. El proyecto Linux-HA es un paquete HA de software libre comúnmente usado para el sistema operativo Linux.

Diseño y configuración

Uno de los problemas en el diseño de un clúster es la forma en que puede ser el acoplamiento estrecho de los nodos individuales. Por ejemplo, un único trabajo informático puede requerir una comunicación frecuente entre nodos: esto implica que el clúster comparte una red dedicada, que está densamente localizado y probablemente tiene nodos homogéneos. El otro extremo es donde un trabajo de computadora utiliza uno o pocos nodos, y necesita poca o ninguna comunicación inter-nodo, acercándose a la computación en cuadrícula.

En un sistema Beowulf, los programas de aplicación nunca ven los nodos computacionales (también llamados esclavos), sino que sólo interactúan con el "Maestro", que es una computadora específica que maneja la programación y la gestión de los esclavos. En una implementación típica, el Master tiene dos interfaces de red, una que se comunica con la red privada de Beowulf para los esclavos y la otra con la red de propósito general de la organización. Los ordenadores esclavos suelen tener su propia versión del mismo sistema operativo, memoria local y espacio en disco. Sin embargo, la red esclava privada también puede tener un servidor de archivos grande y compartido que almacena datos persistentes globales, a los que acceden los esclavos según sea necesario.



beowulf clusters



Por el contrario, el propósito especial de DEGIMA de 144 nodos es de sintonizarse a ejecutar simulaciones astrofísicas de N-cuerpo utilizando el múltiple-Walk paralelo, en lugar de cálculos científicos de propósito general.

Debido al creciente poder de cálculo de cada generación de consolas de juegos, ha surgido un uso novedoso en el que se reutilizan clusters de computación de alto rendimiento (HPC). Algunos ejemplos de clústeres de consolas de videojuegos son los clústeres de Sony PlayStation y los clústeres de Microsoft Xbox. Otro ejemplo del producto del juego del consumidor es la estación de trabajo del supercomputador personal de Nvidia Tesla, que utiliza virutas múltiples del procesador del acelerador de los gráficos. Además de las consolas de juegos, las tarjetas gráficas de gama alta también se pueden utilizar en su lugar. El uso de tarjetas gráficas (o más bien de sus GPU) para hacer cálculos para la computación en cuadrícula es mucho más económico que el uso de CPU, a pesar de ser menos preciso. Sin embargo, cuando se utilizan valores de doble precisión, se vuelven tan precisos para trabajar como CPU, y aún así son mucho menos costosos (coste de compra).

Los clústeres de ordenadores se han ejecutado históricamente en ordenadores físicos separados con el mismo sistema operativo. Con el advenimiento de la virtualización, los nodos del racimo pueden funcionar en las computadoras físicas separadas con los sistemas operativos diferentes que se pintan encima con una capa virtual para parecer similares. El clúster también puede ser virtualizado en varias configuraciones a medida que se lleva a cabo el mantenimiento. Un ejemplo de implementación es Xen como el administrador de virtualización con Linux-HA.

Gestión de clústeres

Uno de los desafíos en el uso de un clúster de ordenadores es el costo de administrarlo, que a veces puede ser tan alto como el costo de administrar N máquinas independientes, si el clúster tiene N nodos. En algunos casos esto proporciona una ventaja a las arquitecturas de memoria compartida con costes de administración más bajos. Esto también ha hecho popular a las máquinas virtuales, debido a la facilidad de administración.

Programación de tareas

Cuando un gran clúster multiusuario necesita acceder a cantidades muy grandes de datos, la programación de tareas se convierte en un desafío. En un clúster de CPU-GPU heterogéneo con un entorno de aplicación complejo, el rendimiento de cada trabajo depende de las características del clúster subyacente. Por lo tanto, las tareas de asignación en los núcleos de la CPU y los dispositivos GPU proporcionan desafíos importantes. Este es un área de investigación en curso; Se han propuesto y estudiado algoritmos que combinan y amplían MapReduce y Hadoop.

Gestión de fallos de nodos

Cuando falla un nodo en un clúster, se pueden emplear estrategias como "fencing" para mantener el resto del sistema operativo. Fencing es el proceso de aislar un nodo o proteger recursos compartidos cuando un nodo parece estar funcionando mal. Hay dos clases de métodos de fencing; Uno deshabilita un nodo en sí, y el otro no permite acceso a recursos como discos compartidos.

El método STONITH significa "disparar el otro nodo en la cabeza", lo que significa que el nodo sospechado está desactivado o apagado. Por ejemplo, el fencing eléctrico usa un controlador de energía para apagar un nodo inoperable.

El enfoque de fencing de recursos no permite el acceso a recursos sin apagar el nodo. Esto puede incluir fencing de reserva persistentes a través del SCSI3, cercado de canal de fibra para inhabilitar el puerto de canal de fibra o cercado de dispositivo de bloque de red global (GNBD) para deshabilitar el acceso al servidor GNBD.

Fuentes: