Compartir

Carlos del Porto Blanco

Cuando necesitas innovar, necesitas colaborar. Marissa Mayer

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í por una red de alta velocidad y que se comportan como si fuesen un único servidor. A diferencia de la computación en malla (computación grid), los nodos de los clústeres de computadoras realizan la misma tarea, controlada y planificada por software. El cómputo con clústeres surge como resultado de la convergencia de varias tendencias 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 determinadas aplicaciones. Simplemente, un clúster es un grupo de computadoras unidas mediante una red de alta velocidad, de tal forma que el conjunto es visto como un solo dispositivo de cómputo.

De su surgimiento

El origen del término y del uso de este tipo de tecnología no es conocido, pero se puede considerar que comenzó a finales de los años 50 y principios de los 60. Se estima que la metodología de proveer un medio de hacer trabajos paralelos de cualquier tipo fue creada por Gene Amdahl, de IBM, que en 1967 publicó lo que se valora como el libro blanco inicial de procesamiento paralelo: la ley de Amdahl. Esta describe matemáticamente el aceleramiento que se puede esperar paralelizando cualquier serie de tareas realizadas en una arquitectura de este tipo.

La historia de los primeros clústeres está más o menos ligada a los pasos iniciales de las redes de comunicación, como una necesidad para enlazar los recursos de computación y crear un clúster de ordenadores. 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 fueron definidos y, por tanto, llegaron 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 su triunfo hasta que en 1984 DEC produjo VAXcluster para el sistema operativo VAX/VMS.

¿Qué los caracteriza?

De un clúster se espera que presente combinaciones de los siguientes servicios: alto rendimiento, alta disponibilidad, equilibrado de carga y escalabilidad. Para que un clúster funcione como tal, no basta solo con conectar entre sí a las computadoras, sino que es necesario proveerlo de un sistema de manejo, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento.

Los clústeres se pueden clasificarse, según sus características en:

  • HPCC (High Performance Computing Clusters: clústeres de alto rendimiento): Son aquellos en los que se ejecutan tareas que requieren de gran capacidad computacional, grandes cantidades de memoria, o ambos al unísono.
  • HA o HACC (High Availability Computing Clusters: clústeres de alta disponibilidad): Proveen disponibilidad y confiabilidad. Esos tratan de brindar la máxima disponibilidad de los servicios que ofrecen. La confiabilidad se logra mediante software que detectan fallos y permiten recuperarse frente a los mismos, mientras que en hardware se evita tener un único punto de fallos.
  • HT o HTCC (High Throughput Computing Clusters: clústeres de alta eficiencia). Garantizan disponibilidad y confiabilidad. Su objetivo es ejecutar la mayor cantidad de tareas en el menor tiempo posible. Existe independencia de datos entre las tareas individuales.

Los clústeres pueden clasificarse también en: clústeres de tecnologías de información comerciales (de alta disponibilidad y alta eficiencia) y científicos (de alto rendimiento).

Estos grupos de computadoras permiten aumentar la escalabilidad, disponibilidad y fiabilidad de múltiples niveles de red. La escalabilidad es la capacidad de un equipo para hacer frente a volúmenes de trabajo cada vez mayores, sin dejar de prestar un nivel de rendimiento aceptable. Existen dos tipos de escalabilidad:

  • Escalabilidad del hardware (escalamiento vertical). Se basa en la utilización de un gran equipo, cuya capacidad se amplía a medida que lo exige la carga de trabajo existente.
  • Escalabilidad del software (escalamiento horizontal). Basado en la utilización de un clúster compuesto de varios equipos de mediana potencia que funcionan en tándem, de forma muy parecida a como lo hacen las unidades de un RAID (Arreglo redundante de discos de bajo costo). Se utilizan el término RAC (Arreglo redundante de equipos) para referirse al clúster de escalamiento horizontal. Del mismo modo que se añaden discos a un arreglo RAID para aumentar su rendimiento, se pueden añadir nodos a un clúster para aumentar también el beneficio.

La disponibilidad y la fiabilidad son dos conceptos que se encuentran íntimamente relacionados, pero difieren. La disponibilidad es la calidad de estar presente, listo para su uso, a mano, accesible; mientras que la fiabilidad es la probabilidad de un funcionamiento correcto.

Pero hasta el más fiable de los equipos fallará. Los fabricantes de hardware intentan anticiparse a los errores con la aplicación de la redundancia en áreas clave como son las unidades de disco, las fuentes de alimentación, las controladoras de red y los ventiladores, pero dicha redundancia no protege a los usuarios de los fallos de las aplicaciones. De poco sirve que un servidor sea fiable si el software de base de datos que se ejecuta en él, no lo es. Esa es una razón de que un solo equipo no pueda ofrecer los niveles de escalabilidad, disponibilidad y fiabilidad necesarios que sí ofrece un clúster.

En definitiva, un clúster es un conjunto de computadoras interconectadas con dispositivos de alta velocidad, las cuales actúan en conjunto y usan el poder cómputo de varios procesadores en combinación para resolver ciertos problemas dados. Se usa un clúster con varios computadores para crear una supercomputadora a u costo muy inferior.

Funcionamiento de un clúster de computadoras

El objetivo principal de un clúster de computadoras es aumentar el rendimiento y la capacidad informática sin tener que comprar equipos individualmente. El usuario puede agregar o quitar recursos según sea necesario para satisfacer sus necesidades. Sus ventajas son:

  • Alta disponibilidad. Los componentes redundantes permiten la continuación del servicio en caso de falla.
  • Escalabilidad. Es posible ampliar fácilmente los recursos agregando nuevos nodos al clúster cuando sea necesario.
  • Alto rendimiento. El procesamiento distribuido permite mayor velocidad y menor tiempo de respuesta para las solicitudes hechas al sistema.
  • Menores costos. En lugar de comprar equipamiento caro, los usuarios pueden optar por una solución más barata implementando un clúster con hardware más sencillo.

Aplicaciones de los clústeres de computadoras

Los clústeres de computadoras son adecuados para cualquier institución que necesite procesar grandes cantidades de datos o realizar tareas intensivas en tiempo real, como en la industria financiera, el diseño gráfico o la minería de datos. Algunas formas en las que los clústeres pueden ayudar a una organización, se muestran a continuación:

  • Rendimiento mejorado. Permiten distribuir el trabajo entre varias computadoras conectadas, lo que hace que los procesos se ejecuten más rápido. Eso es muy útil para tareas intensivas en procesamiento, como el renderizado 3D y la codificación de vídeo.
  • Mayor almacenamiento. Muchos clústeres cuentan con varios discos duros conectados entre sí, lo que permite una mayor capacidad de almacenamiento y redundancia si un disco falla.
  • Escalabilidad. Posibilitan agregar nuevos nodos a medida que crece la carga de trabajo. Ello que implica que la institución no tiene que invertir en hardware si necesita expandirse o realizar grandes proyectos de investigación y desarrollo sin interrupciones.
  • Menor coste total de propiedad. Debido a la redundancia incorporada y el uso compartido del hardware entre varios nodos, los clústeres generalmente resultan ser más baratos a largo plazo comparados con soluciones individuales basadas en servidores dedicados o equipamiento informático personalizado costoso.
  • Seguridad mejorada. La redundancia garantiza una menor probabilidad de fallos del sistema debido a problemas mecánicos o humanos, así como un mayor nivel de seguridad para sus datos al replicarlos automáticamente entre varios nodos del clúster.

Tipos de clústeres de computadoras

Los clústeres se pueden dividir en tres tipos principales: los compartidos, los independientes y los paralelos.

  • Los clústeres compartidos se utilizan cuando dos o más computadoras usan recursos comunes, como almacenamiento, memoria y procesamiento. Esa configuración es útil cuando se necesita escalar la capacidad del sistema informático para satisfacer las necesidades cambiantes del usuario.
  • Los clústeres independientes son aquellos donde cada nodo tiene su propio almacenamiento, memoria y procesamiento. Esa configuración es útil para las aplicaciones que requieren alta disponibilidad o redundancia, debido a que, si un nodo falla, el resto del clúster todavía funcionará correctamente.
  • Los clústeres paralelos se utilizan cuando hay necesidad de realizar muchas tareas simultáneamente. En ese tipo de clúster, cada nodo tiene su propia memoria y procesador, pero trabajan juntos para completar la misma tarea rápidamente. Esa configuración es ideal para entornos con gran cantidad de datos o análisis complejos.

Ventajas y desventajas de los clústeres

Esta tecnología ofrece numerosas ventajas, pero como todo, también presenta algunas desventajas que deben ser consideradas antes de implementarla. Entre sus ventajas se encuentran:

  • Mejora la fiabilidad. Los clústeres permiten a los usuarios distribuir la carga entre varios servidores para incrementar la disponibilidad del sistema. Eso significa que, si un servidor falla, otro podrá reemplazarlo sin interrupción en el servicio.
  • Aumento de la escalabilidad. La escalabilidad es un aspecto importante que debe considerarse al diseñar un clúster. Estos permiten añadir nuevos nodos cuando sea necesario y así garantizan el buen funcionamiento del sistema, incluso cuando hay un gran volumen de trabajo.
  • Mejora el rendimiento. Al dividir los procesos entre varios servidores, se puede lograr un mejor rendimiento general del sistema, lo cual permite llevar a cabo tareas computacionalmente complejas con mayor eficiencia y rapidez.
  • Reducción de costes. Al compartir recursos entre varios equipos, reducen los costos asociados a la adquisición y mantenimiento de hardware individual para cada servidor.

Desventajas:

  • Mayor complejidad. Son más complicados de configurar y mantener que otros tipos de servidores individuales, ya que hay que establecer comunicaciones entre todos los nodos para garantizar su buen funcionamiento. Además, están sujetos a problemas comunes tales como fallos en las conexiones entre nodos o interrupciones en el servicio causadas por errores en el software instalado en los equipos del clúster.
  • Costo elevado. Aunque puedan reducirse los costos en comparación con otros tipos de servidores, la puesta en marcha y mantenimiento de clústeres puede resultar cara debido al hardware especializado requerido para su correcta configuración y al personal cualificado necesario para operarlos adecuadamente.