Clusters

Introducción

La base formal de la ingeniería informática de la categoría como un medio de hacer trabajos paralelos de cualquier tipo fue posiblemente inventado por Gene Amdahl de IBM, que en 1967 publicó lo que ha llegado a ser considerado como el papel inicial de procesamiento paralelo: la Ley de Amdahl que describe matemáticamente el aceleramiento que se puede esperar paralelizando cualquier otra serie de tareas realizadas en una arquitectura paralela.

Este artículo define la base para la ingeniería de la computación tanto multiprocesador y computación clúster, en donde el principal papel diferenciador es si las comunicaciones interprocesador cuentan con el apoyo “dentro” de la computadora (por ejemplo, en una configuración personalizada para el bus o la red de las comunicaciones internas) o “fuera” del ordenador en una red “commodity”.

En consecuencia, la historia de los primeros grupos de computadoras es más o menos directamente ligado a la historia de principios de las redes, como una de las principales motivaciones para el desarrollo de una red para enlazar los recursos de computación, de hecho la creación de un cluster de computadoras. Las redes de conmutación de paquetes fueron conceptualmente inventados por la corporación RAND en 1962.

Utilizando el concepto de una red de conmutación de paquetes, el proyecto ARPANET logró crear en 1969 lo que fue posiblemente la primera red de computadoras básico basadas en el cluster de computadoras por cuatro tipos de centros informáticos (cada una de las cuales fue algo similar a un “cluster” pero no un “comodity cluster” como hoy en día lo entendemos).

El proyecto ARPANET creció y se convirtió en lo que es ahora Internet – que se puede considerar como “la madre de todos los clusters” (como la unión de casi todos los recursos de cómputo, incluidos los clusters, que pasarían a ser conectados).

También estableció el paradigma de uso de computadoras clusters en el mundo de hoy – el uso de las redes de conmutación de paquetes para realizar las comunicaciones entre procesadores localizados en los marcos de otro modo desconectado.

El desarrollo de la construcción de PC’s por los clientes y grupos de investigación procedió a la par con la de las redes y el sistema operativo Unix desde principios de la década de los años 70, como TCP/IP y el proyecto de la Xerox PARC proyecto y formalizado para protocolos basados en la red de comunicaciones.

El núcleo del sistema operativo fue construido por un grupo de DEC PDP-11 minicomputadoras llamado C.mmp en C-MU en 1971.

Sin embargo, no fue hasta alrededor de 1983 que los protocolos y herramientas para el trabajo remoto facilitasen la distribución y el uso compartido de archivos fueran definidos (en gran medida dentro del contexto de BSD Unix, e implementados por Sun Microsystems) y, por tanto llegar a disponerse comercialmente, junto con una comparición del sistema de ficheros.

El primer producto comercial de tipo cluster fue ARCnet, desarrollada en 1977 por Datapoint pero no obtuvo un éxito comercial y los clústeres no consiguieron tener éxito hasta que en 1984 VAXcluster produjeran el sistema operativo VAX/VMS.

El ARCnet y VAXcluster no sólo son productos que apoyan la computación paralela, pero también comparten los sistemas de archivos y dispositivos periféricos.

La idea era proporcionar las ventajas del procesamiento paralelo, al tiempo que se mantiene la fiabilidad de los datos y el carácter singular. VAXcluster, VMScluster esta todavía disponible en los sistemas de HP OpenVMS corriendo en sistemas Itanium y Alpha.

Otros dos principios comerciales de clústeres notables fueron el Tandem Himalaya (alrededor 1994 de con productos de alta disponibilidad) y el IBM S/390 Parallel Sysplex (también alrededor de 1994, principalmente para el uso de la empresa).

La historia de los clusters de computadoras estaría completa sin señalar el papel fundamental desempeñado por el desarrollo del software de Parallel Virtual Machine (PVM).

Este software de fuente abierta basado en comunicaciones TCP/IP permitió la creación de un superordenador virtual – un cluster HPC – realizada desde cualquiera de los sistemas conectados TCP/IP.

De forma libre los clusters heterogéneos han constituido la cima de este modelo logrando aumentar rápidamente en FLOPS globalmente y superando con creces la disponibilidad incluso de los más caros superordenadores.

PVM y el empleo de PCs y redes de bajo costo llevó, en 1993, a un proyecto de la NASA para construir supercomputadoras de clusters.

En 1995, la invención de la “beowulf” -un estilo de cluster- una granja de computación diseñado en base a un producto básico de la red con el objetivo específico de “ser un superordenador” capaz de realizar firmemente y cálculos paralelos HPC.

Esto estimuló el desarrollo independiente de la computación Grid como una entidad, a pesar de que el estilo Grid giraba en torno al del sistema operativo Unix y el Arpanet.

Objetivo

Que los alumnos de la Maestría de Tecnologías de Información conozcan acerca de los Clusters de Servidores y en un futuro puedan llevar a cabo una implementación de la misma.

Justificación

Hoy en día tecnología de clusters ha evolucionado en apoyo de actividades que van desde aplicaciones de supercómputo y software de misiones críticas, servidores Web y comercio electrónico, hasta bases de datos de alto rendimiento, entre otros usos.

El cómputo con clusters surge como resultado de la convergencia de varias tendencias actuales 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 aplicaciones que la requieran.

Que es un Cluster.

El término cluster se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilización de componentes de hardware comunes y que se comportan como si fuesen una única computadora. Hoy en día juegan un papel importante en la solución de problemas de las ciencias, las ingenierías y del comercio moderno.

Simplemente, cluster es un grupo de múltiples Cluster unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio.

Clusters son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por encima de la que es provista por un solo computador típicamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables.

Que beneficios trae consigo la implementación de un Cluster

Esto es que las aplicaciones paralelas escalables requieren: buen rendimiento, baja latencia, comunicaciones que dispongan de gran ancho de banda, redes escalables y acceso rápido a archivos. Un cluster puede satisfacer estos requerimientos usando los recursos que tiene asociados a él.

Los clusters ofrecen las siguientes características a un costo relativamente bajo:

  • Alto Rendimiento.

  • Alta Disponibilidad.

  • Alta Eficiencia.

  • Escalabilidad.

Construir un Cluster sería benéfico en varios aspectos en una 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 cluster de balance de carga

  • incremento de confiabilidad 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 (pues estas requieren de hardware y software especializado muy caro, así como personal de soporte técnico dedicado) .

Otro ejemplo sería el de la situación de un sitio Web de 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 funciona con el plan de respaldo, sin suspensión de servicio.1

Clasificación de los Clusters

Alto rendimiento: Un cluster de alto rendimiento es un conjunto de ordenadores que está diseñado para dar altas prestaciones en cuanto a capacidad de cálculo. Los motivos para utilizar un cluster de alto rendimiento son:

  • el tamaño del problema por resolver y

  • el precio de la máquina necesaria para resolverlo.

Por medio de un cluster se pueden conseguir capacidades de cálculo superiores a las de un ordenador más caro que el costo conjunto de los ordenadores del cluster.

Ejemplo de clusters baratísimos son los que se están realizando en algunas universidades con ordenadores personales desechados por “anticuados” que consiguen competir en capacidad de cálculo con superordenadores carísimo.

Para garantizar esta capacidad de cálculo, los problemas necesitan ser paralelizables, ya que el método con el que los clusters agilizan el procesamiento es dividir el problema en problemas más pequeños y calcularlos en los nodos, por lo tanto, si el problema no cumple con esta característica, no puede utilizarse el cluster para su cálculo.

Para que un problema sea paralelizable se debe hacer uso de librerías especiales como lo es PVM (parallel virtual machine) o MPI (Message passage interfase), donde la primera es usada especialmente en cluster con nodos heterogéneos (arquitectura del procesador, sistemas operativo, entre otras), y pertenecientes a diferentes dominios de red, la segunda librería usada para cluster homogéneos

Un tipo de software para realizar cluster high performace es OSCAR (Open Source Cluster Application Resources) distribuido bajo licencia GPL. Este software trabaja sobre el sistema operativo Linux. En Windows se podría utilizar “WCC 2003” (Windows Computer Cluster).

La tecnología de Clusters de Alto Rendimiento para Linux  más conocida es el la tecnología Beowulf. Esta tecnología se desarrolló en la NASA y puede proporcionar potencial de cómputo del tipo de una supercomputadora utilizando computadoras personales sencillas. Al conectar estas entre si mediante una red Ethernet de alta velocidad, las computadoras personales se combinan para lograr la potencia de una supercomputadora. El nombre de Beowulf es tomado del nombre de un héroe de la mitología danesa relatado en el libro La Era de las Fábulas, del autor norteamericano Thomas Bulfinch (1796-1867).

Alta disponibilidad: 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 Balance de Carga. Su función es la de esperar listos para entrar inmediatamente en funcionamiento en el caso de que falle algún otro servidor. La característica de flexibilidad que proporciona este tipo de tecnología de Cluster, lo hacen necesario en ambientes de intercambio intensivo de información.

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 vuelve a estar listo, se incorpora al Cluster y se puede dar servicio al siguiente servidor del grupo.

Adicionalmente a los Clusters tipo Beowulf, existen las siguientes tecnologías similares:

  • MOSIX. Esta tecnología basada en Linux, permite realizar balance de carga para procesos particulares en un cluster. Trabaja como un Cluster de Alto Rendimiento en el sentido de que está diseñado para tomar ventaja del hardware más rápido disponible en el cluster para cualquier tarea que le sea asignada. Pero, lo realiza balanceando la carga de las varias tareas en varias máquinas.

    Una de las grandes ventajas de MOSIX es que no requiere la confección especial de software como lo requiere los clusters tipo Beowulf. Los usuarios ejecutan sus programas normalmente y el sistema MOSIX se encarga del resto.

  • Otro tecnología de clusters es el paquete Piranha, que permite a los servidores Linux proveer alta disponibilidad sin la necesidad de invertir cantidades mayores en hardware. La tecnología de cluster es basado completamente en software, donde los servidores se se comunican en una red de alta velocidad. Se puede configurar para trabajar como Cluster de Alta Disponibilidad o de Balance de Carga.
    El Piranha puede configurar un servidor de respaldo en caso de fallo de la contraparte. También puede hacer que el cluster aparezca como un servidor virtual. 2

Alta eficiencia: Son clusters cuyo objetivo de diseño es el ejecutar la mayor cantidad de tareas en el menor tiempo posible. Existe independencia de datos entre las tareas individuales. El retardo entre los nodos del cluster no es considerado un gran problema.

Los clusters pueden también clasificar como Clusters de IT Comerciales (Alta disponibilidad, Alta eficiencia) y Clusters Científicos (Alto rendimiento). A pesar de las discrepancias a nivel de requerimientos de las aplicaciones, muchas de las características de las arquitecturas de hardware y software, que están por debajo de las aplicaciones en todos estos clusters, son las mismas. Más aún, un cluster de determinado tipo, puede también presentar características de los otros.3

Componentes de un Clusters

En general, un cluster necesita de varios componentes de software y hardware para poder funcionar. A saber:

  • Nodos

  • Sistemas Operativos

  • Conexiones de Red

  • Middleware

  • Protocolos de Comunicación y servicios

  • Aplicaciones

  • Ambientes de Programación Paralela

Un ejemplo de cluster en la NASA

Nodos:

Pueden ser simples ordenadores, sistemas multiprocesador o estaciones de trabajo (Workstation). En informática, de forma muy general, un nodo es un punto de intersección o unión de varios elementos que confluyen en el mismo lugar. Ahora bien, dentro de la informática la palabra nodo puede referirse a conceptos diferentes según en ámbito en el que nos movamos:

En redes de computadoras cada una de las máquinas es un nodo, y si la red es Internet, cada servidor constituye también un nodo. En estructuras de datos dinámicas un nodo es un registro que contiene un dato de interés y al menos un puntero para referenciar (apuntar) a otro nodo. Si la estructura tiene sólo un puntero, la única estructura que se puede construir con el es una lista, si el nodo tiene más de un puntero ya se pueden construir estructuras más complejas como árboles o grafos.[1]

El cluster puede estar conformado por nodos dedicados o por nodos no dedicados.

En un cluster con nodos dedicados, los nodos no disponen de teclado, mouse ni monitor y su uso está exclusivamente dedicado a realizar tareas relacionadas con el cluster. Mientras que, en un cluster con nodos no dedicados, los nodos disponen de teclado, mouse y monitor y su uso no está exclusivamente dedicado a realizar tareas relacionadas con el cluster, el cluster hace uso de los ciclos de reloj que el usuario del computador no esta utilizando para realizar sus tareas.

Cabe aclarar que a la hora de diseñar un Cluster, los nodos deben tener características similares, es decir, deben guardar cierta similaridad de arquitectura y sistemas operativos, ya que si se conforma un Cluster con Nodos totalmente heterogéneos (existe una diferencia grande entre capacidad de procesadores, memoria, HD)será ineficiente debido a que el middleware delegara o asignara todos los procesos al Nodo de mayor capacidad de Computo y solo distribuirá cuando este se encuentre saturado de procesos; por eso es recomendable construir un grupo de ordenadores los más similares posible.

Funcionamiento de los nodos en un clúster

Los nodos tienen las siguientes características:

  • Todo nodo tiene acceso a todos los datos de la configuración de clúster.

  • Todo nodo se comunica con los demás nodos del clúster a través de una o más redes físicamente independientes (a veces denominadas interconexiones). Los adaptadores de red, conocidos como interfaces de red en los clústeres de servidor, conectan los nodos a las redes.

  • Todos los nodos del clúster saben cuándo otro sistema se une o abandona el clúster.

  • Todos los nodos del clúster tienen conocimiento de los recursos que se ejecutan localmente y de los recursos que se ejecutan en los demás nodos del clúster.

  • Todos los nodos del clúster están agrupados bajo un nombre común, el nombre de clúster, que se utiliza para acceder al clúster y para gestionarlo.

Cuando se inicia un nodo, éste busca nodos activos en las redes designadas para la comunicación interna. Si encuentra un nodo activo, intenta unirse al clúster del nodo. Si no encuentra ningún clúster, intenta formar un clúster tomando control del recurso de quórum. El recurso de quórum almacena la versión más reciente de la base de datos del clúster, que contiene la configuración del clúster y los datos de estado. Un clúster de servidor mantiene una copia coherente y actualizada de la base de datos del clúster en todos los nodos activos.

Un nodo puede albergar unidades físicas o lógicas, denominadas recursos. Los administradores organizan estos recursos de clúster en unidades funcionales conocidas como grupos y asignan estos grupos a nodos individuales. Si un nodo falla, el clúster de servidor transfiere los grupos alojados en el nodo a otros nodos del clúster. Este proceso de transferencia se llama sustitución por anomalía. El proceso inverso, recuperación tras error, tiene lugar cuando el nodo con errores se vuelve a activar y los grupos que habían sido sustituidos por anomalía se transfieren de nuevo al nodo original.4

Almacenamiento:

El almacenamiento puede consistir en una NAS, una SAN, o almacenamiento interno en el servidor. El protocolo más comúnmente utilizado es NFS (Network File System), sistema de ficheros compartido entre servidor y los nodos. Sin embargo existen sistemas de ficheros específicos para clusters como Lustre (CFS) y PVFS2.

Tecnologías en el soporte del almacenamiento en discos duros:

  • IDE (PATA, Parallel ATA): Anchos de banda (Bw) de 33, 66, 100 y 133MBps.

  • SATA I (SATA-150): Bw 150 MBps.

  • SATA II (SATA-300): Bw 300 MBps.

  • SCSI: Bw 160, 320, 640MBps. Proporciona altos rendimientos.

  • SAS (Serial Array SCSI): Aúna SATA II y SCSI. Bw 375MBps.

  • Las unidades de cinta (DLTs) son utilizadas para backups por su bajo coste.

NAS (Network Attached Storage) es un dispositivo específico dedicado a almacenamiento a través de red (normalmente TCP/IP) que hace uso de un S.O. optimizado para dar acceso a través de protocolos CIFS, NFS, FTP o TFTP.

Por su parte, DAS (Direct Attached Storage) consiste en conectar unidades externas de almacenamiento SCSI o a una SAN (Storage Área Network) a través de Fibre Channel. Estas conexiones son dedicadas.

Mientras NAS permite compartir el almacenamiento, utilizar la red, y tiene una gestión más sencilla, DAS proporciona mayor rendimiento y mayor fiabilidad al no compartir el recurso.

NAS vs. SAN:

  • Cables: NAS usa Ethernet. SAN usa Fibre Channel

  • Protocolo: NAS usa CIFS, NFS, ó HTTP sobre TCP/IP. SAN usa Encapsulated SCSI (iSCSI, cuando encapsula sobre TCP/IP, y FCP cuando encapsula directamente sobre Fibre Channel).

  • Manejo: en NAS el NAS head gestiona el sistema de ficheros. En SAN múltiples servidores manejan los datos.

  • NAS nos permite acceder a un sistema de ficheros a través de TCP/IP usando CIFS (en el caso de Windows) ó NFS (en el caso de Unix/Linux.

  • NAS es una solución más adecuada como.

    • Servidor de ficheros.

    • Almacenamiento de directorios de usuario.

    • Almacenamiento de archivos en general.

  • Por su parte, una SAN es usada para acceder a almacenamiento en modo BLOQUE, a través de una red de fibra óptica con Fibre Channel (FC) utilizando el protocolo SCSI.

  • SAN es una solución más adecuada para:

    • Bases de datos.

    • Data warehouse.

    • Backup (al no interferir en la red del sistema).

    • Cualquier aplicación que requiera baja latencia y alto ancho de banda en el almacenamiento y recuperación de datos.

Sistema Operativo:

Debe ser multiproceso, multiusuario. Otras características deseables son la facilidad de uso y acceso y permitir además múltiples procesos y usuarios. Un sistema operativo es un programa o conjunto de programas de computadora destinado a permitir una gestión eficaz de sus recursos. Comienza a trabajar cuando se enciende el computador, y gestiona el hardware de la máquina desde los niveles más básicos, permitiendo también la interacción con el usuario. Un sistema operativo se puede encontrar normalmente en la mayoría de los aparatos electrónicos que utilicen microprocesadores para funcionar, ya que gracias a estos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autoradios… y computadoras)

Ejemplos:

  • GNU/Linux

    • Rocks [1] una distribución especializada para clusters.

  • Unix: Solaris / HP-Ux / Aix

  • Windows NT  /2000 / 2003 Server

  • Mac OS X

  • Cluster OS’s especiales

    • Kerrighed

  • etcétera

Conexiones de Red:

Los nodos de un cluster pueden conectarse mediante una simple red Ethernet con placas comunes (adaptadores de red o NICs), o utilizarse tecnologías especiales de alta velocidad como Fast Ethernet, Gigabit Ethernet, Myrinet, Infiniband, SCI, etc.

  • Ethernet

    • Son las redes más utilizadas en la actualidad, debido a su relativo bajo coste. No obstante, su tecnología limita el tamaño de paquete, realizan excesivas comprobaciones de error y sus protocolos no son eficientes, y sus velocidades de transmisión pueden limitar el rendimiento de los Clusters. Para aplicaciones con paralelismo de grano grueso puede suponer una solución acertada.

    • La opción más utilizada en la actualidad es Gigabit-Ethernet (1000Mbps), siendo emergente la solución 10Gigabit-Ethernet. La latencia de estas tecnologías está en torno a los 30-100 us, dependiendo del protocolo de comunicación empleado.

    • En todo caso, es la red de administración por excelencia, así que aunque no sea la solución de red de altas prestaciones para las comunicaciones, es la red dedicada a las tareas administrativas.

  • Myrinet (Myrinet 2000 y Myri-10G)

    • Su latencia es de 1,3/10 μs, y su ancho de Banda de 2/10Gbps, respectivamente para Myrinet 2000 y Myri-10G.

    • Es la red de baja latencia más utilizada en la actualidad, tanto en clusters como en MPPs estando presente en más de la mitad de los sistemas del top500. Tiene dos bibliotecas de comunicación a bajo nivel (GM y MX). Sobre estas bibliotecas están implementadas MPICH-GM, MPICH-MX, Sockets-GM y Sockets MX, para aprovechar las excelentes características de Myrinet. Existen también emulaciones IP sobre TCP/IP, IPoGM e IPoMX.

  • Infiniband

    • Es una red surgida de un estándar desarrollado específicamente para realizar la comunicación en clusters. Una de sus mayores ventajas es que mediante la agregación de canales (x1, x4 y x12) permite obtener anchos de banda muy elevados. La conexión básica es de 2Gbps efectivos y con ‘quad connection’ x12 alcanza los 96Gbps. No obstante, los startups no son muy altos, se sitúan en torno a los 10 μs.

    • Define una conexión entre un nodo de computación y un nodo de I/O. La conexión va desde un Host Channel Adapter (HCA) hasta un Target Channel Adapter (TCA). Se está usando principalmente para acceder a arrays de discos SAS.

  • SCI (Scalable Coherent Interface) IEEE standard 1596-1992

    • Su latencia teórica es de 1.43 μs y su ancho de banda de 5333 Mbps bidireccional. Al poder configurarse con topologías de anillo (1D), toro (2D) e hipercubo (3D) sin necesidad de switch, se tiene una red adecuada para clusters de pequeño y mediano tamaño.

    • Al ser una red de extremadamente baja latencia, presenta ventajas frente a Myrinet en clusters de pequeño tamaño al tener una topología punto a punto y no ser necesaria la adquisición de un conmutador. El software sobre SCI está menos desarrollado que sobre Myrinet, pero los rendimientos obtenidos son superiores, destacando SCI Sockets (que obtiene startups de 3 microsegundos) y ScaMPI, una biblioteca MPI de elevadas prestaciones.

    • Además, a través del mecanismo de pre-loading (LD_PRELOAD) se puede conseguir que todas las comunicaciones del sistema vayan a través de SCI-SOCKETS (transparencia para el usuario).

Middleware (capa de abstracción entre el usuario y los sistemas operativos):

El middleware es un software que generalmente actúa entre el sistema operativo y las aplicaciones con la finalidad de proveer a un cluster lo siguiente:

  • Una interfaz única de acceso al sistema, denominada SSI (Single System Image), la cual genera la sensación al usuario de que utiliza un único ordenador muy potente;

  • Herramientas para la optimización y mantenimiento del sistema: migración de procesos, checkpoint-restart (congelar uno o varios procesos, mudarlos de servidor y continuar su funcionamiento en el nuevo host), balanceo de carga, tolerancia a fallos, etc.;

  • Escalabilidad: debe poder detectar automáticamente nuevos servidores conectados al cluster para proceder a su utilización.

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

El middleware recibe los trabajos entrantes al cluster y los redistribuye de manera que el proceso se ejecute más rápido y el sistema no sufra sobrecargas en un servidor. Esto se realiza mediante políticas definidas en el sistema (automáticamente o por un administrador) que le indican dónde y cómo debe distribuir los procesos, por un sistema de monitorización, el cual controla la carga de cada CPU y la cantidad de procesos en él.

El middleware también debe poder migrar procesos entre servidores con distintas finalidades:

  • balancear la carga: si un servidor está muy cargado de procesos y otro está ocioso, pueden transferirse procesos a este último para liberar de carga al primero y optimizar el funcionamiento;

  • Mantenimiento de servidores: si hay procesos corriendo en un servidor que necesita mantenimiento o una actualización, es posible migrar los procesos a otro servidor y proceder a desconectar del cluster al primero;

  • Priorización de trabajos: en caso de tener varios procesos corriendo en el cluster, pero uno de ellos de mayor importancia que los demás, puede migrarse este proceso a los servidores que posean más o mejores recursos para acelerar su procesamiento.

Ambientes de Programación Paralela:

Los ambientes de programación paralela permiten implementar algoritmos que hagan uso de recursos compartidos: CPU (Central Processing Unit), memoria, datos y servicios.

La programación paralela define la división de una labor de procesamiento entre múltiples procesadores que operan simultáneamente. El resultado esperado es realizar tal procesamiento en forma más eficiente comparada con su ejecución en un sistema uniprocesador. Su principal ventaja es su habilidad de llevar a cabo tareas de una escala que no sería realista o costo-efectivo para otros sistemas. Sin embargo, en general la programación paralela representa una labor sumamente compleja.

Sistemas Clusters Implementados

Beowulf

En 1994, la Agencia Espacial NASA comenzó el Proyecto Beowulf [1] en el Centro para la Excelencia en Datos Espaciales y Ciencias de la Información (CESDIS), cuyo resultado fue la construcción de un Cluster de 16 máquinas destinado al Proyecto de Ciencias Espaciales y Terrestres (ESS) ubicado en el Centro de Vuelo Espacial de Goddard (GSFC). La idea de construir un sistema con elementos de hardware de bajo costo, para satisfacer requisitos computacionales específicos, se difundió rápidamente a través de la NASA y de las comunidades académicas y científicas a escala mundial.

Un Cluster del tipo Beowulf posee una arquitectura escalable de múltiples computadoras, que puede ser usada para realizar cómputo paralelo y distribuido. Estos Clusters son sistemas construidos con componentes de hardware y software de uso general, es decir, no contienen ningún tipo de hardware especializado. Los nodos están constituidos por cualquier computadora capaz de ejecutar el Sistema Operativo LINUX, y software para el desarrollo de aplicaciones paralelas.

En su forma general, un Cluster Beowulf consiste de un nodo Servidor (frontend) y uno o varios nodos de cómputo (compute node) llamados nodos Cliente, interconectados a través de una LAN. El nodo Servidor controla los nodos Cliente y también es la Consola y “puerta de entrada” al Cluster desde el mundo exterior.

Los nodos Cliente del sistema se usan sólo para cómputo dentro del sistema. Una característica importante de los Cluster del tipo Beowulf es su escalabilidad. Los cambios en los microprocesadores y en su velocidad, o la tecnología de las redes de interconexión de los nodos, no afecta el modelo de programación. Por lo tanto, se garantiza la compatibilidad a los usuarios del sistema. Por otro lado, la madurez alcanzada por el Sistema Operativo LINUX y su robustez, la estandarización de librerías GNU

para el “paso de mensajes” como PVM y MPI, garantizan a los programadores que las aplicaciones que desarrollen, se ejecutarán en futuras versiones de estos elementos de software y, por ende, en Clusters del tipo Beowulf actualizados, independientemente de la plataforma de hardware. En la figura 2, se

muestra la interconexión básica de los nodos en un Cluster del tipo Beowulf.6

Berkeley NOW

El sistema NOW de Berkeley estuvo conformado por 105 estaciones de trabajo Sun Ultra 170, conectadas a través de una red Myrinet. Cada estación de trabajo contenía un microprocesador Ultra1 de 167 MHz, caché de nivel 2 de 512 KB, 128 MB de memoria, dos discos de 2.3 GB, tarjetas de red Ethernet y Myrinet. En abril de 1997, NOW logró un rendimiento de 10 GFlops.

Google.

Aparte del ‘PageRank’ (el sistema de clasificación de la importancia de cada Web), una de las claves del éxito de Google es la tecnología de sus servidores.

Google atiende a más de 5,000 millones de búsquedas cada mes (unas dos mil por segundo), y esta cifra aumenta progresivamente cada día. Para atender todas estas peticiones, y buscar entre más de 3,000 millones de documentos, Google optó por la tecnología Linux.

Disponen de un clúster de cerca de 20,000 servidores repartidos en siete ‘data centers’. Estos centros de datos se encuentran situados en diversos puntos del planeta, como Washington D.C. (USA), Herndon (Virginia, USA), Santa Clara (California, USA) o Zurich (Suiza). Cada servidor dispone de un solo procesador Intel, y una memoria RAM que va desde 256 Mb a 1 Gb.

Entre estos ‘data centers’, Google utiliza su propio gestor de tráfico y su propio software de balanceo de cargas, para dirigir cada petición hacia el mejor servidor

En cada PC se encuentran uno o dos discos duros de 40Gb ó 75Gb, de marca IBM. Google prefiere este sistema distribuido de almacenamiento de datos, antes que uno centralizado. Las razones: es mucho más barato y tiene menos posibilidades de fallo.

En cada una de estas máquinas está instalado Linux RedHat. En mayo de 2002, Google llegó a un acuerdo con RedHat para que esta empresa le proporcionase el software del Sistema Operativo.

La elección de Linux fue sencilla para Google: el menor ratio coste/rendimiento, corre en simples PCs, y la posibilidad de personalizar cualquier parte del Sistema Operativo. De hecho, no solamente usan Linux en sus servidores, sino también en la mayoría de los PCs de los empleados. Una vez instalado Linux en cada equipo, los técnicos de Google, lo personalizan a su antojo. Ellos lo llaman ‘Googlelizar’ el Sistema Operativo con sus propias aplicaciones.

La mayoría de las aplicaciones están programadas en C++ (aunque también utilizan Python y PHP), y las herramientas que utilizan son ‘gcc’, ‘gdb’ y ‘gnats’ para el desarrollo y ‘p4’ para el control de las versiones. Google dispone de más de 100 desarrolladores en su plantilla.

Debido a la multitud de servidores de los que se dispone, el tamaño de estos es muy importante. Por ello, la compañía californiana Rackable Systems compacta para Google varios servidores en un espacio realmente reducido.

Referente a la seguridad, la mayoría de las máquinas de Google no están accesibles desde Internet, ya que se encuentran detrás de un router/firewall que lo impide. Las que sí están accesibles (los servidores Web) son auditados periódicamente para encontrar posibles agujeros de seguridad.7

Cluster PS2

En el año 2004, en la Universidad de Illinois en Urbana-Champaign, Estados Unidos, se exploró el uso de consolas Play Station 2 (PS2) en cómputo científico y visualización de alta resolución. Se construyó un cluster conformado por 70 PS2; utilizando Sony Linux Kit (basado en Linux Kondora y Linux Red Hat) y MPI.

Cluster X
En la lista “TOP 500” de noviembre de 2004 fue considerado el séptimo sistema más rápido del mundo; sin embargo, para julio de 2005 ocupa la posición catorce. Cluster X fue construido en el Tecnológico de Virginia en el 2003; su instalación fue realizada por estudiantes del Tecnológico. Está constituido por 2200 procesadores Apple G5 de 2.3 GHz. Utiliza dos redes: Infiniband 4x para las comunicaciones entre procesos y Gigabit Ethernet para la administración. Cluster X posee 4 Terabytes de memoria RAM y 176 Terabytes de disco duro, su rendimiento es de 12.25 TFlops. Se lo conoce también como Terascale.

MareNostrum
En julio de 2004 se creó el Centro de Supercomputación de Barcelona (BSC), de la Universidad Politécnica de Cataluña, España. El BSC creó el cluster MareNostrum. En noviembre de 2004 MareNostrum se ubicó en el “TOP 500”, como el primer cluster más veloz y el cuarto sistema más rápido del mundo; sin embargo, para julio de 2005 se ubicó en la quinta posición. Está conformado por 3564 procesadores PowerPC970 de 2.2 GHz. Utiliza una red Myrinet. Su rendimiento es de 20.53 Tflops.

Thunder
Thunder fue construido por el Laboratorio Nacional Lawrence Livermore de la Universidad de California. Está conformado por 4096 procesadores Intel Itanium2 Tiger4 de 1.4GHz. Utiliza una red basada en tecnología Quadrics. Su rendimiento es de 19.94 TFlops. Se ubicó en la segunda posición del “TOP 500” durante junio de 2004, luego en la quinta posición en noviembre de 2004 y en la lista de julio de 2005 se ubicó en la séptima posición.
ASCI Q
ASCI Q fue construido en el año 2002 por el Laboratorio Nacional Los Álamos, Estados Unidos. Está constituido por 8192 procesadores AlphaServer SC45 de 1.25 GHz. Su rendimiento es de 13.88 TFlops. Se ubicó en la segunda posición del “TOP 500” durante junio y noviembre de 2003, luego en la tercera posición en junio de 2004, en la sexta posición en noviembre de 2004 y en la doceava posición en julio de 2005.8

La Red Española de Supercomputación.

La Red Española de Supercomputación se inauguró en marzo de 2007, ante la necesidad de aumentar la capacidad de cálculo que da servicio a la comunidad científica. A consecuencia de esta necesidad se procedió a realizar una actualización del supercomputador MareNostrum, en la cual se sustituyeron los blades JS20 por blades JS21, ambos de IBM, con lo que se duplica su capacidad de cómputo. Los blades sustituidos se utilizaron para crear una estructura distribuida de supercomputadores en diferentes emplazamientos de la geografía española.

La mitad de dichos blades se utilizó para ampliar Magerit, el supercomputador perteneciente al CeSViMa (UPM). El resto se repartió, a partes iguales, para crear los nodos de las universidades de Cantabria, Málaga, Valencia, Zaragoza y el Instituto de Astrofísica de Canarias (IAC).

El acceso al servicio se gestiona mediante un comité de acceso, integrado por científicos encargados de valorar cada una de las solicitudes de acceso y planificar el acceso a los recursos disponibles. Los recursos se asignan por un periodo de 4 meses, tras lo cual es necesario presentar una nueva solicitud de acceso.

Asimismo, cada una de las instituciones puede disponer de hasta un 20% del uso de los recursos asignados, a excepción del CeSViMa que controla cerca del 40% de la máquina, al disponer de nodos propios que no proceden del MareNostrum.9

Gestión de Recursos Distribuidos: Sistemas Gestores de Colas

Los sistemas de gestión de colas, gestionan una cola de ejecución, planifican la ejecución de las tareas y gestionan los recursos, para minimizar costes y maximizar rendimiento de las aplicaciones.

  • Funcionamiento:

– Los usuarios envían trabajos con qsub indicando requisitos de memoria, tiempo de procesador y espacio en disco.
– El gestor de recursos registra el trabajo.
– Tan pronto los recursos pedidos se hallen disponibles, el gestor de colas pone a ejecución el trabajo solicitado que según su planificación es el que tiene mayor prioridad. Se utiliza el planificador del gestor de colas en ausencia de planificadores más avanzados (como Maui / Moab cluster suite, los cuales pueden ser integrables en el sistema de colas).
– Se puede consultar el estado de los trabajos, en ejecución, en espera o terminados, a través de qstat
– Se puede eliminar un trabajo mediante qdel.
– El gestor de colas se configura con qconf.
  • Salida estándar de trabajos: job.o#job

  • Salida de error de trabajos: job.e#job

  • Sistemas gestores de colas populares: Sun Grid Engine (SGE), PBS, Open PBS y Torque.

Balanceadores de Carga: Linux Virtual Server

  • Linux Virtual Server (LVS, IPVS en kernels 2.6.x) es un servicio de red altamente escalable y de alta disponibilidad que realiza:

– Equilibrado de carga mediante NAT (Network Address Translation), tunneling IP o enrutamiento directo (DR) por medio de un nodo maestro que da servicio a peticiones FTP y HTTP a los nodos de un cluster. Este servicio es provisto a nivel de kernel (ha de estar compilado el soporte para LVS/IPVS).
  • NAT hace que el clúster funcione con una única IP pública, siendo los paquetes reescritos por el nodo maestro para ocultar los nodos internos. Sólo es aceptable para un número pequeño de nodos, por la sobrecarga que acarrea.

  • Tunneling IP es similar a NAT, pero el nodo maestro ya no reescribe los paquetes, siendo su tarea mucho más liviana.

  • El enrutamiento directo (DR) es un sistema aún más ligero, pero necesita que todos los servidores compartan el mismo segmento de red.

Clusters en Aplicaciones Científicas

  • Se suelen caracterizar por ser aplicaciones computacionalmente intensivas

  • Sus necesidades de recursos son muy importantes en almacenamiento y especialmente memoria.

  • Requieren nodos y sistemas dedicados, en entornos HPC y HTC.

  • Suelen estar controlados los recursos por planificadores tipo Maui y gestores de recursos tipo PBS.

  • Son en muchas ocasiones códigos legacy, difíciles de mantener, ya que los dominios de aplicación suelen ser difícilmente paralelizables.

Ejemplos: Simulaciones (earth simulator), genómica computacional, predicción meteorológica (MM5), simulación de corrientes y vertidos en el mar, aplicaciones en química computacional

Clusters en Aplicaciones Empresariales

  • Suelen ser aplicaciones no especialmente intensivas computacionalmente, pero que demandan alta disponibilidad y respuesta inmediata, con lo que los servicios se están ejecutando continuamente y no controlados por un sistema de colas

  • Es usual que un sistema provea varios servicios. Una primera aproximación para realizar una distribución del trabajo es separar los servicios:

  • Un servidor Web con la BD en un nodo, el contenedor EJB en otro y el servidor de páginas Web en otro constituye un claro ejemplo de distribución en el ámbito empresarial.
  • Otra aproximación es instalar una aplicación Web en un clúster squid como Proxy-caché, apache/tomcat como servidor: web/de aplicaciones Web, memcached como caché de consultas a la base de datos y mysql como base de datos. Estos :servicios pueden estar replicados en varios nodos del clúster.
  • Ejemplos: flickr, wikipedia y google.

2 respuestas a Clusters

  1. elcaos dice:

    mm que raro que no aiga comentarios de nadie siendo una informacion tan baliosa

  2. Lila dice:

    Its like you read my mind! You appear to know so much about this, like you wrote the book in
    it or something. I think that you can do with a few pics to drive the
    message home a bit, but instead of that, this is great blog.
    A fantastic read. I will definitely be back.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: