Actualizado el 7 de Febrero del 2020 (Publicado el 10 de Abril del 2017)
835 visualizaciones desde el 10 de Abril del 2017
804,4 KB
31 paginas
Creado hace 20a (18/05/2004)
Introducción a las tecnologías de
clustering
en GNU/Linux
Rosa María Yáñez Gómez
Versión 1.0
Dedicado a Javi,
por todo lo que nos une
Página nº 2
1._CLUSTERS DE COMPUTADORAS
El término cluster se aplica no sólo a computadoras de
alto rendimiento sino también a los conjuntos de
computadoras, construidos utilizando componentes de
hardware comunes y software libre. Entre estos dos
extremos situaremos también las soluciones comerciales
modulares, que permiten ajustar la inversión a los
requerimientos concretos del problema al que nos
enfrentemos y expandir el cluster conforme las necesidades
vayan aumentando. Estas soluciones, sin embargo, van a
imponer modelos específicos de programación que permitan
explotar al máximo las capacidades de la máquina y por otra
parte, encadenan al comprador a un fabricante concreto. Es
por ello que este documento se centrará en el estudio de la
tecnología de clustering dentro del entorno del software libre, sobre todo en el uso del sistema
operativo GNU/Linux y otras herramientas libres asociadas a él. Aunque, hemos de señalar que se
han presentado soluciones de clustering también para otros sistemas operativos libres (FreeBSD,
NetBSD...).
Figura 2_Los clusters basados en
GNULinux son flexibles y
económicos.
Los clusters juegan hoy en día un papel muy importante en la solución de problemas de las
ciencias, las ingenierías y en el desarrollo y ejecución de muchas aplicaciones comerciales. Los
clusters han evolucionado para apoyar actividades en aplicaciones que van desde la
supercomputación hasta el software adaptado a misiones críticas, pasando por los servidores web, el
comercio electrónico y las bases de datos de alto rendimiento.
La computación basada en clusters surge gracias a la disponibilidad de microprocesadores de
alto rendimiento más económicos y de redes de alta velocidad, y también gracias al desarrollo de
herramientas de software para cómputo distribuido de alto rendimiento; todo ello frente a la
creciente necesidad de potencia de cómputo para aplicaciones en las ciencias y en el ámbito
comercial, así como de disponibilidad permanente para algunos servicios. Por otro lado, la
evolución y estabilidad que ha alcanzado el sistema operativo GNU/Linux, ha contribuido de forma
importante, al desarrollo de muchas tecnologías nuevas, entre ellas las de clustering.
Según la aplicabilidad de los clusters, se han desarrollado diferentes líneas tecnológicas. La
primera surge frente a la necesidad de supercomputación para determinadas aplicaciones, lo que se
persigue es conseguir que un gran número de máquinas individuales actúen como una sola máquina
muy potente. Este tipo de clusters se aplica mejor en problemas grandes y complejos que requieren
una cantidad enorme de potencia computacional. Entre las aplicaciones más comunes de clusters de
alto rendimiento (computacionales, de supercomputación) se encuentra el pronóstico numérico del
estado del tiempo, astronomía, investigación en criptografía, simulación militar, simulación de
recombinaciones entre moléculas naturales y el análisis de imágenes.
Un segundo tipo de tecnología de clusters, es el destinado al balanceo de carga. Surge el
Página nº 5
concepto de "cluster de servidores virtuales", cluster que permite que un conjunto de servidores de
red compartan la carga de trabajo y de tráfico de sus clientes, aunque aparezcan para estos clientes
como un único servidor. Al balancear la carga de trabajo en un conjunto de servidores, se mejora el
tiempo de acceso y la confiabilidad. Además como es un conjunto de servidores el que atiende el
trabajo, la caída de uno de ellos no ocasiona una caída total del sistema. Este tipo de servicio es de
gran valor para compañías que trabajan con grandes volúmenes de tráfico y trabajo en sus webs,
servidores de correo... Hemos de pensar que la imagen y el prestigio de una empresa que ofrece sus
servicios por Internet se compromete en la velocidad, la calidad y la disponibilidad de estos
servicios.
El último tipo importante de tecnología de clustering trata del mantenimiento de servidores
que actúen entre ellos como respaldos de la información que sirven. Este tipo de clusters se conoce
como "clusters de alta disponibilidad" o "clusters de redundancia". La flexibilidad y robustez que
proporcionan este tipo de clusters, los hacen necesarios en ambientes de intercambio masivo de
información, almacenamiento de datos sensibles y allí donde sea necesaria una disponibilidad
continua del servicio ofrecido.
Los clusters de alta disponibilidad permiten un fácil
mantenimiento de servidores. Una máquina de un cluster de
servidores se puede sacar de línea, apagarse y actualizarse o
repararse sin comprometer los servicios que brinda el cluster.
Cuando el servidor vuelva a estar listo, se reincorporará y
volverá a formar parte del cluster.
Además del concepto de cluster, existe otro concepto
más amplio y general que es el Cómputo en Malla (Grid
Computing). Una Malla (Network Of Workstation o NOW) es
un tipo de sistema paralelo y distribuido que permite
compartir, seleccionar y añadir recursos que se encuentran distribuidos a lo largo de dominios
administrativos "múltiples". Si los recursos distribuidos se encuentran bajo la administración de un
sistema central único de programación de tareas, entonces nos referiremos a un cluster. En un
cluster, todos los nodos trabajan en cooperación con un objetivo y una meta común y la asignación
de recursos la lleva a cabo un solo administrador centralizado y global. En una Malla, cada nodo
tiene su propio administrador de recursos y política de asignación.
Figura 3_Network of Workstations
(NOW)
2._¿CÓMO FUNCIONA UN CLUSTER?
Desde un punto de vista general, un cluster consta de dos partes. La primera es el software:
un sistema operativo confeccionado especialmente para esta tarea (por ejemplo un kernel Linux
modificado), compiladores y aplicaciones especiales, que permite que los programas que se ejecutan
en el sistema exploten todas las ventajas del cluster. En el entorno de GNU/Linux hay que destacar
la PVM (Paralell Virtual Machine) y la MPI (Message Passing Interface), librerías que abstraen la
componente hardware de la componente software.
Página nº 6
La segunda componente es la interconexión hardware entre las máquinas (nodos) del cluster.
Se han desarrollado interfaces de interconexión especiales muy eficientes, pero es común realizar
las interconexiones mediante una red Ethernet dedicada de alta velocidad. Gracias a esta red de
interconexión los nodos del cluster intercambian entre sí las tareas, las actualizaciones de estado y
los datos del programa. En un cluster abierto, existirá una interfaz de red que conecte al cluster con
el mundo exterior (Internet)1.
Cuando se trata de resolver un problema en paralelo, el software debe ser capaz de dividir el
problema en tareas más pequeñas, repartirlas entre los nodos y elaborar los resultados. Puesto que
las subtareas van a ejecutarse en paralelo se consigue un aumento de velocidad, aunque hay que
tener en cuenta el retardo que la división, reparto y transmisión de mensajes (resultado, coherencia,
estados...) supone.
En el caso de los clusters de balanceo de carga, el hardware y el software deben actuar
conjuntamente para que el tráfico se distribuya entre los nodos del cluster. De esta forma, se pueden
ofrecer los servicios a mayor velocidad o se realiza una tarea más rápidamente.
Los servidores de un cluster de alta disponibilidad normalmente no comparten la carga de
procesamiento que tiene un cluster de Alto Rendimiento. Tampoco comparten la carga de tráfico
como lo hacen los clusters de Balanceo de Carga. Su función es la de estar preparados para entrar
inmediatamente en funcionamiento en caso de que falle algún otro servidor.
3._¿POR QUÉ CONSTRUIR UN CLUSTER?
Construir un cluster puede aportar importantes ventajas en gran variedad de aplicaciones y
ambientes:
– Incremento de velocidad de procesamiento ofrecido por los clusters de alto rendimiento.
– Incremento del número de transacciones o velocidad de respuesta ofrecido por los
clusters de balanceo de carga.
– Incremento de la confiabilidad y la robustez ofrecido por los clusters de alta
disponibilidad.
Por ejemplo, en la investigaciones meteorológicas y pronóstico numérico del estado del
tiempo, se requiere el manejo de cantidades masivas de datos y cálculos muy complejos. Al
combinar el poder de muchas máquinas del tipo estación de trabajo o servidor, se pueden alcanzar
niveles de rendimiento similares a los de las supercomputadoras, pero a menor costo.
Otra situación de aplicabilidad de un cluster sería en un sitio web que soportara mucho
tráfico. Si no se cuenta con un plan de alta disponibilidad, cualquier problema menor de una tarjeta
de red, puede hacer que un servidor quede completamente inutilizado. Pero al contar con servidores
redundantes y servidores de respaldo instantáneos, se puede reparar el problema mientras el sitio
1 En el caso de los clusters de alto rendimiento, no es común que estos se conecten al exterior debido a las
implicaciones de seguridad que esto supone. En estos clusters se suele elegir la velocidad frente a la seguridad.
Página nº 7
sigue funcionando sin suspensión de servicio.
4._PUNTOS A CONSIDERAR A LA HORA DE CONFIGURAR UN CLUSTER
Por sus características especiales, hay varias cuestiones particulares asociadas a esta
tecnología que deben ser tenidas en cuenta.
Uno de los principales problemas a los que hay que hacer frente cuando se construye un
cluster es buscar y eliminar los puntos de fallo únicos (single poin
Comentarios de: Introducción a las tecnologías de clustering en GNU/Linux (0)
No hay comentarios