30
Sistemas de Clústers ÍNDICE TEMÁTICO 1 - INTRODUCCIÓN. 2 - Historia 3 - Características De Un Cluster 3.1 - Caracteristicas Especiales De Los Sistema De Cluster 4 - Factores De Diseño Para Clasificar Un Cluster 5 - Clasificación De Clusters 5.1 - Cluster De Alto-Rendimiento (Hp, High Performance) 5.2 - Cluster De Alta-Disponibilidad (Ha, High Availability): 5.3 - Cluster De Alta-Confiabilidad (Hr, High Reliability) 6 - Componentes De Un Cluster 7 - Sistemas Clusters Implementados 8 - Gestión De Recursos Distribuidos: 8.1 - Sistemas Gestores De Colas Arquitectura Paralelas Página 1

Trabajo Final - Clusters

Embed Size (px)

Citation preview

Page 1: Trabajo Final - Clusters

Sistemas de Clústers

ÍNDICE TEMÁTICO 1 - INTRODUCCIÓN.

2 - Historia

3 - Características De Un Cluster

3.1 - Caracteristicas Especiales De Los Sistema De Cluster

4 - Factores De Diseño Para Clasificar Un Cluster

5 - Clasificación De Clusters

5.1 - Cluster De Alto-Rendimiento (Hp, High Performance)

5.2 - Cluster De Alta-Disponibilidad (Ha, High Availability):

5.3 - Cluster De Alta-Confiabilidad (Hr, High Reliability)

6 - Componentes De Un Cluster

7 - Sistemas Clusters Implementados

8 - Gestión De Recursos Distribuidos:

8.1 - Sistemas Gestores De Colas

8.2 - Balanceadores De Carga: Linux Virtual Server

9 - Clusters En Aplicaciones Científicas

10 - Clusters En Aplicaciones Empresariales

11 - Conclusiones

Arquitectura Paralelas Página 1

Page 2: Trabajo Final - Clusters

Sistemas de Clústers

1 - INTRODUCCIÓN.

Un cluster es un conjunto de computadoras interconectadas con dispositivos de alta velocidad que actúan en conjunto usando el poder cómputo de varios CPUs en combinación para resolver ciertos problemas dados.

Se usa un cluster para crear una supercomputadora que puede servir como un servidor en un sistema Cliente-Servidor, reduciéndose el costo de inversión.

Los clústeres 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.

El cómputo con clústeres 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.

De un clúster se espera que presente combinaciones de los siguientes servicios:

Alto rendimiento Alta disponibilidad Balanceo de carga Escalabilidad

Para que un clúster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento.

La construcción de los ordenadores del clúster es más fácil y económica debido a su flexibilidad: pueden tener todas las mismas configuraciones de hardware y sistema operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (clúster semihomogéneo), o tener diferente hardware y sistema operativo (clúster heterogéneo), lo que hace más fácil y económica su construcción.

Hoy en día desempeñan un papel importante en la solución de problemas de las ciencias, las ingenierías y del comercio moderno.

La tecnología de clústeres 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.

Arquitectura Paralelas Página 2

Page 3: Trabajo Final - Clusters

Sistemas de Clústers

2 - HISTORIA

El origen del término y del uso de este tipo de tecnología es desconocido pero se puede considerar que comenzó a finales de los años cincuenta y principios de los sesenta.

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 está 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 clúster 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 clúster de computadoras por cuatro tipos de centros informáticos (cada una de las cuales fue algo similar a un «clúster» pero no un «commodity cluster» como hoy en día lo entendemos).

El proyecto ARPANET creció y se convirtió en lo que es ahora Internet. Se puede considerar como «la madre de todos los clústeres» (como la unión de casi todos los recursos de cómputo, incluidos los clústeres, que pasarían a ser conectados).

También estableció el paradigma de uso de computadoras clústeres 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 desconectados.

El desarrollo de la construcción de PC 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 setenta, 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.

Arquitectura Paralelas Página 3

Page 4: Trabajo Final - Clusters

Sistemas de Clústers

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 compartición del sistema de ficheros.

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 tener éxito hasta que en 1984 VAXcluster produjeran el sistema operativo VAX/VMS.

El ARCnet y VAXcluster no solo 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 está 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 clústeres de computadoras estaría incompleta sin señalar el papel fundamental desempeñado por el desarrollo del software de PVM (parallel virtual machine: ‘máquina virtual paralela’).

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

De forma libre los clústeres 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 PC y redes de bajo costo llevó, en 1993, a un proyecto de la NASA para construir supercomputadoras de clústeres.

En 1995, la invención de la Beowulf ―un estilo de clúster― una granja de computación diseñada según 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.

3 - CARACTERÍSTICAS DE UN CLUSTER

Arquitectura Paralelas Página 4

Page 5: Trabajo Final - Clusters

Sistemas de Clústers

Si se habla de Cluster y de los tipos de Cluster existentes, es necesario mencionar cuales son las cualidades comunes que presentan. Para ello, se mencionarán las características de los Cluster definidas:

• Un Cluster consta de 2 o más nodos. Un sólo computador, en ningún caso, puede ser considerado como un Cluster debido a la situación de aislamiento en que se encuentra, puesto que no puede comunicarse y menos, ocupar los recursos de otra máquina.

• Los nodos de un Cluster deben estar conectados entre si por, al menos, un canal de comunicación. De no ser así, se produce el efecto de aislamiento anteriormente mencionado.

• Los Cluster necesitan software de control especializado. Se debe tener presente que el software utilizado es el que determinará el tipo de Cluster que se está implementando. Además, parte de este software es el encargado de la comunicación entre los componentes del Cluster. El software utilizado puede ser de uno de los siguiente niveles:

• Software a Nivel de aplicación. Para la utilización de este software se emplean librerías, las cuales son de carácter general y permiten el comportamiento del Cluster como un solo gran sistema. Se puede ver graficado en la Figura.

• Software a Nivel de Sistema. Este tipo de software puede ser una parte del operativo o la totalidad de éste. Este nivel es más complejo, pero la eficiencia que brinda, por norma general, es superior a los de nivel de aplicación. Se

Arquitectura Paralelas Página 5

Page 6: Trabajo Final - Clusters

Sistemas de Clústers

puede ver en la Figura.

3.1 - CARACTERISTICAS ESPECIALES DE LOS SISTEMA DE CLUSTER

• Mejora de seguridad - Los servidores web tienen fallos de seguridad y, por lo tanto, son vulnerables. Existe un tipo de ataque muy peligroso llamado exploit. Con un exploit, un intruso puede tomar el control total de un servidor. Para combatirlo el software del servidor se va actualizando a medida que se descubren nuevos agujeros de seguridad. Pero esta medida no inmuniza el sistema completamente, ya que se van creando nuevas variantes del ataque.

En un servidor web convencional, si alguien consigue introducir un exploit a través del puerto web consigue automáticamente los máximos privilegios en esa máquina, ya que el servicio web se ejecuta en modo administrador. Y de esta forma puede hacer todo lo que quiera en el servidor atacado.

• Mejora de rendimiento - La mayor parte de los ordenadores que forman parte de un clúster no tienen discos duros reales, sino que tienen placas de memoria RAM que simulan ser discos duros.

¿Qué ventajas se obtienen? Las placas de memoria RAM, al contrario que los discos duros, no posen partes mecánicas, sino solamente elementos electrónicos. Este hecho las hace ser mucho más rápidas y fiables que los discos duros. Y, en consecuencia, todo el sistema obtiene una importante mejora de rendimiento y de fiabilidad.

• Sistema de arranque especial - Las máquinas del clúster, al no tener discos duros, inicialmente no tienen datos en memoria y no pueden arrancar. Para solventarlo, se las ha dotado de un sistema de arranque especial llamado PXE. Con este sistema cada máquina se conecta a otra máquina del clúster, que le proporciona todos los datos que necesita para empezar a trabajar.

Arquitectura Paralelas Página 6

Page 7: Trabajo Final - Clusters

Sistemas de Clústers

Para que un cluster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del cluster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento.

4 - FACTORES DE DISEÑO PARA CLASIFICAR UN CLUSTER

Existen diferentes factores de diseños según los cuales se puede clasificar un Cluster.

Entre éstos encontramos los siguientes:

• Acoplamiento.

• Control.

• Homogeneidad.

• Escalabilidad.

Acoplamiento: Una de las características más importantes de un Cluster es el nivel de acoplamiento del mismo.

Por acoplamiento del software se entiende la integración que tengan los elementos existentes en cada nodo.

Los distintos tipos de acoplamiento son los que se describen a continuación:

• Escasamente acoplados — Una agrupación de computadores está escasamente acoplada si, aún siendo capaz de realizar procesamiento paralelo mediante librerías de paso de mensajes o de memoria compartida, no posee un sistema de instalación y gestión integrado que posibilite una recuperación rápida ante fallos y una gestión centralizada que ahorre tiempo al administrador.

• Medianamente acoplados — Dentro de este grupo se encuentra un software que no necesita un conocimiento tan profundo sobre los cuales son los recursos de los otros nodos que componen el Cluster, pero utiliza el software de otros nodos para realizar aplicaciones de muy bajo nivel. Un ejemplo de este tipo de acoplamiento es openMosix y Linux-HA (Alta-Disponibilidad). Una nota importante, es que un Cluster openMosix necesita que todos los Kernels sean de la misma versión.

• Altamente acoplados — Este software se caracteriza por que los elementos que lo componen se interrelacionan unos con otros y posibilitan la mayoría de las funcionalidades del Cluster de manera altamente cooperativa. El acoplamiento más fuerte que se puede dar se produce cuando existe sólo una imagen del sistema operativo, la cual está distribuida entre el conjunto de nodos que la compartirán.

Arquitectura Paralelas Página 7

Page 8: Trabajo Final - Clusters

Sistemas de Clústers

Este caso es el que se considera como más acoplado, de hecho, no está catalogado como Cluster, sino como sistema operativo distribuido.

Control: Cuando se habla de control de un Cluster, no es más que el modelo de gestión que éste propone. Estos modelos pueden ser de dos tipos, éstos son:

• Control centralizado: En este tipo de control existe un nodo maestro desde el cual se realiza la configuración de todo el Cluster. Además ayuda a que la gestión y la administración sean mucho más fácil de realizar, pero a su vez los hace menos tolerable a los fallos.

• Control descentralizado: En este tipo de control cada uno de los nodos del Cluster debe ser capaz de administrarse y gestionarse. En este tipo de control se hace más difícil la gestión y la administración, pero como sistema global lo hace más tolerable a fallos.

Homogeneidad: Se entiende por homogeneidad de un Cluster a lo similar que pueden llegar a ser los equipos y recursos que conforman éste. Se clasifican en:

• Clusters homogéneos: En este tipo de Cluster todos los nodos que lo componen poseen arquitectura y recursos similares, es decir, no debe existir mucha diferencia entre cada nodo.

• Clusters heterogéneos: Este tipo de Cluster está formado con nodos en los cuales pueden existir las siguientes diferencias:

• Tiempos de acceso.

• Arquitectura.

• Sistema operativo.

• Rendimiento de los procesadores o recursos sobre una misma arquitectura.

El uso de arquitecturas distintas o distintos sistemas operativos, impone que exista una biblioteca que haga de interfaz.

Escalabilidad: Otro factor de suma importancia que aún no se ha nombrado es el de “Escalabilidad del Cluster”.

Escalabilidad es la capacidad de un sistema informático de adaptarse a un número de usuarios cada vez mayor, sin perder calidad en los servicios. En general, se podría definir como la capacidad del sistema informático de cambiar su tamaño o configuración para adaptarse a las circunstancias cambiantes.

Por lo tanto, entre más escalable es un sistema, menos costará mejorar el rendimiento, lo cual abarata el coste y, en caso de que un Cluster lo implemente, distribuye más la caída del sistema.

Arquitectura Paralelas Página 8

Page 9: Trabajo Final - Clusters

Sistemas de Clústers

5 - CLASIFICACIÓN DE CLUSTERS

La forma en que operará el Cluster está determinada por la función que éste deberá desempeñar.

De esta manera, la forma de operar es a su vez definida por el software de control especializado que se detalló anteriormente. Según los distintos Cluster existentes son los siguientes:

• Cluster de Alto-Rendimiento

• Cluster de Alta-Disponibilidad

• Cluster de Alta-Confiabilidad.

5.1 - Cluster de Alto-Rendimiento (HP, High Performance)

Un Cluster de Alto-Rendimiento es aquel que está diseñado para dar altas prestaciones en cuanto a capacidad de cálculo. De acuerdo con la definición, el recurso que comparten los nodos es el más importante de una máquina, éste es, el tiempo de proceso.

El objetivo de este tipo de Clusters es, como su propio nombre indica, mejorar el rendimiento en la obtención de la solución de un problema, en términos bien del tiempo de respuesta, bien de su precisión.

Existen distintas aplicaciones que se les puede dar a este tipo de Cluster, entre las cuales encontramos las siguientes:

• Cálculos matemáticos.

• Renderizaciones de gráficos.

• Compilación de programas.

• Compresión de datos.

• Descifrado de códigos.

• Rendimiento del sistema operativo, (incluyendo en él, el rendimiento de los recursos de cada nodo).

Por lo tanto se puede decir que este tipo de Cluster puede ser utilizado en problemas que requieran grandes tiempos de proceso, siempre y cuando se encuentre un algoritmo paralelizable.

Arquitectura Paralelas Página 9

Page 10: Trabajo Final - Clusters

Sistemas de Clústers

Existen Clusters que pueden ser denominados de Alto-Rendimiento tanto a nivel de sistema como a nivel de aplicación. A nivel de sistema existe openMosix, mientras que a nivel de aplicación se encuentran algunos como MPI, PVM, Beowulf y muchos otros.

En cualquier caso, estos Clusters hacen uso de la capacidad de procesamiento que pueden tener varias máquinas.

Las implementaciones a nivel de aplicación no suelen implementar balanceo de carga, a diferencia de las implementaciones a nivel de Kernel que si lo hacen, además de compartir los recursos a cualquier nivel.

Los aspectos de implementación para este tipo de los Cluster son las siguientes:

- Asignación de procesos a los nodos

Los procesos pueden ser ejecutados en cualquier nodo del Cluster, pero donde permanecerá el resto de su vida está dado por las siguientes asignaciones:

• Estática: Se elige estáticamente el nodo donde el proceso vivirá toda su vida. Al ser estático puede producir un mal balanceo de la carga.

• Dinámica: Los procesos una vez iniciados en un nodo pueden migrar a otro nodo dinámicamente. En este caso el algoritmo que realiza la migración debe tener mucho cuidado con el balanceo de la carga, y sobre qué variables está tomando las decisiones de migración. Por lo tanto su implementación es compleja, y también se pueden producir una sobrecarga en el Cluster.

- Requisa

Se entiende por Requisa al hecho de poder parar un determinado proceso y poder adquirir sus recursos. Por lo tanto los Cluster de Alto-Rendimiento pueden implementar o no la Requisa.

La ventaja de implementar Requisa consiste en que el tiempo de latencia en los procesos de mayor prioridad será menor, pero la desventaja es que se pueden producir sobrecargas en el Cluster y que la complejidad al realizar la implementación aumente.

- Modos de dedicar los Nodos

Existen modos de dedicar los nodos para llevar a cabo un determinado proceso, los modos de dedicar los nodos son los siguientes:

• Modo dedicado: En este modo, que es el más simple de todos, solamente un trabajo está siendo ejecutado en el Cluster en un tiempo dado, y como mucho un proceso de este trabajo que se está ejecutando es asignado a un nodo en cualquier momento en el que se siga ejecutando el trabajo. Este trabajo no liberará el Cluster hasta que acabe completamente aunque solamente quede un proceso ejecutándose en un único nodo.

Arquitectura Paralelas Página 10

Page 11: Trabajo Final - Clusters

Sistemas de Clústers

Todos los recursos se dedican a este trabajo. Como se puede comprender fácilmente, esta forma de uso de un Cluster puede llevar a una pérdida importante de potencia sobre todo si no todos los nodos acaban el trabajo al mismo tiempo.

• Modo de división en el espacio: En este modo existen particiones disjuntas del Cluster, en las cuales se ejecuta sólo un trabajo en la partición dada, parecido al modo anterior, lo que puede ocasionar algunos problemas como que la partición no sea lo suficientemente grande como para poder llevar a cabo el trabajo o que sea muy pequeño el trabajo y se desperdicien gran cantidad de nodos de la partición.

• Modo de división en el tiempo: En cada nodo pueden estar ejecutándose varios procesos a la vez por lo que se solucionan los problemas anteriores. Este es el modo más usado normalmente puesto que no tiene tantas restricciones como los anteriores y se puede intentar hacer un equilibrio de carga eligiendo correctamente los procesos.

5.2 - Cluster de Alta-Disponibilidad (HA, High Availability)

Este tipo de Cluster es totalmente diferente a los Cluster de Alto-Rendimiento. Por el contrario los Clusters de Alta-Disponibilidad están diseñados para garantizar el funcionamiento ininterrumpido de ciertas aplicaciones.

La idea principal de este tipo de Cluster es proporcionar un servicio ininterrumpido las 24 horas del día, los 7 días de la semana.

Un Cluster de Alta-Disponibilidad es un conjunto de dos o más máquinas, que se caracterizan porque comparten los discos de almacenamiento de datos, y porque están constantemente monitorizándose entre si. Si se produce un fallo del hardware o de las aplicaciones de alguna de las máquinas del Cluster, el software de Alta-Disponibilidad es capaz de prearrancar automáticamente los servicios que han fallado en cualquiera de las otras máquinas del Cluster. Y cuando la máquina que ha fallado se recupera, los servicios son nuevamente migrados a la máquina original. Esta capacidad de recuperación automática de servicios garantiza la integridad de la información, ya que no hay pérdida de datos, y además evita molestias a los usuarios, que no tienen por qué notar que se ha producido un problema.

Para poder cumplir con el objetivo de ser capaz de estar siempre dando servicios, este tipo de Cluster se implementa en base a tres factores, los cuales son:

• Fiabilidad: Probabilidad de un funcionamiento correcto.

• Disponibilidad: La calidad de estar siempre presente, listo para el uso, a mano, accesible.

• Dotación de servicio: Debe existir un servicio proporcionado por el Cluster.

Arquitectura Paralelas Página 11

Page 12: Trabajo Final - Clusters

Sistemas de Clústers

Este tipo de Cluster está diseñado para resolver múltiples problemas dentro de los cuales encontramos los siguientes:

• Sistemas de información redundante.

• Sistemas tolerantes a fallos.

• Balanceo de carga entre varios servidores.

• Balanceo de conexiones entre varios servidores.

Como se puede apreciar las necesidades que se pretenden solucionar son: tener un servicio disponible y ahorrar económicamente todo lo que sea posible.

5.3 - Cluster de Alta-Confiabilidad (HR, High Reliability)

Estos tipos de Clusters son los más difíciles de implementar. No se basan solamente en conceder servicios de Alta-Disponibilidad, sino en ofrecer un entorno de sistema altamente confiable. Esto implica muchísima sobrecarga en el sistema, son también Clusters muy acoplados.

Dar a un cluster SSI capacidad de Alta-Confiabilidad implica gastar recursos necesarios para evitar que aplicaciones caigan.

La idea de este tipo de Cluster es que cuando un servicio se ha caído, éste sea relanzado utilizando el último checkpoint (o punto de parada) del servidor anterior, además otra de sus funciones es mantener el estado de las aplicaciones.

Generalmente este tipo de Clusters suele ser utilizado para entornos de tipo empresarial y esta funcionalidad solamente puede ser efectuada por hardware especializado. Por el momento no existe ninguno de estos Clusters implementados como software. Esto se debe a limitaciones de la latencia de la red, así como a la complejidad de mantener los estados.

6 - COMPONENTES DE UN CLUSTER

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

Arquitectura Paralelas Página 12

Page 13: Trabajo Final - Clusters

Sistemas de Clústers

• Nodos

• Almacenamiento

• Sistemas Operativos

• Conexiones de Red

• Middleware

• Protocolos de Comunicación y servicios

• Aplicaciones

• Ambientes de Programación Paralela

Nodos

Pueden ser simples ordenadores, sistemas multi-procesador o estaciones de trabajo (workstations). 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 el á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.

Arquitectura Paralelas Página 13

Page 14: Trabajo Final - Clusters

Sistemas de Clústers

• 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 él es una lista, si el nodo tiene más de un puntero ya se pueden construir estructuras más complejas como árboles o grafos.

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, ratón 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, ratón 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 está 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, disco duro) será ineficiente debido a que el middleware delegará o asignará todos los procesos al nodo de mayor capacidad de cómputo y solo distribuirá cuando este se encuentre saturado de procesos; por eso es recomendable construir un grupo de ordenadores lo más similares posible.

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 o ATA: velocidades de 33, 66, 100, 133 y 166 MB/s

• SATA: velocidades de 150, 300 y 600 MB/s

• SCSI: velocidades de 160, 320, 640 MB/s. Proporciona altos rendimientos.

• SAS: aúna SATA-II y SCSI. Velocidades de 300 y 600 MB/s

• Las unidades de cinta (DLT) son utilizadas para copias de seguridad por su bajo coste.

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

Arquitectura Paralelas Página 14

Page 15: Trabajo Final - Clusters

Sistemas de Clústers

Por su parte, DAS (Direct Attached Storage) consiste en conectar unidades externas de almacenamiento SCSI o a una SAN (Storage Area Network) a través de un canal de fibra. 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.

Sistema Operativo

Un sistema operativo debe ser multiproceso y multiusuario. Otras características deseables son la facilidad de uso y acceso. 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. 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, radios, computadoras, etc.)

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 (1 Gbit/s), siendo emergente la solución 10 Gigabit Ethernet (10 Gbit/s). La latencia de estas tecnologías está en torno a los 30-100 μs, 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.

Arquitectura Paralelas Página 15

Page 16: Trabajo Final - Clusters

Sistemas de Clústers

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 clústers. 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 standar 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 clústers 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:

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

Arquitectura Paralelas Página 16

Page 17: Trabajo Final - Clusters

Sistemas de Clústers

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.

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.

7 - SISTEMAS CLUSTERS IMPLEMENTADOS

• Beowulf

Arquitectura Paralelas Página 17

Page 18: Trabajo Final - Clusters

Sistemas de Clústers

Fue construido por Donald Becker y Thomas Sterling en 1994. Fue construido con 16 computadores personales con procesadores Intel DX4 de 200 MHz, que estaban conectados a través de un switch Ethernet. El rendimiento teórico era de 3.2 GFlops.

• 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

Durante el año 2003, el cluster Google llegó a estar conformado por más de 15.000 computadores personales. En promedio, una consulta en Google lee cientos de megabytes y consume algunos billones de ciclos del CPU.

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

Red Española de Supercomputación

En el año 2007 se crea la Red Española de Supercomputación compuesta por 7 clusters distribuidos en distintas instituciones españolas, entre los que se encuentra el supercomputador Marenostrum (el cluster más veloz en el momento de su puesta en funcionamiento).

Todos los clusters están formados por un número variable de nodos con procesadores PowerPC 970 a 2.2GHz interconectados con una red Myrinet. El rendimiento de las máquinas oscilan entre los casi 65 TeraFLOPS proporcionados por las más de 10000 CPUs de

Arquitectura Paralelas Página 18

Page 19: Trabajo Final - Clusters

Sistemas de Clústers

Marenostrum, los casi 16 TeraFLOPS de Magerit con 2400 procesadores o los casi 3 TeraFLOPS de los 5 nodos restantes.

• 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 duodécima posición en julio de 2005.

8 - GESTIÓN DE RECURSOS DISTRIBUIDOS:

8.1 - 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 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. Se puede eliminar un trabajo. El gestor de colas se configura.

• Salida estándar de trabajos

Arquitectura Paralelas Página 19

Page 20: Trabajo Final - Clusters

Sistemas de Clústers

• Salida de error de trabajos.

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

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

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

Arquitectura Paralelas Página 20

Page 21: Trabajo Final - Clusters

Sistemas de Clústers

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

11 - CONCLUSIONES:

• El Clustering es una tecnología económica pero que brinda grandes ventajas en escalabilidad y disponibilidad más que los sistemas convencionales de multiprocesamiento, que además de ser costosas no han cumplido con los requerimientos de resistencia a fallos.

• Los clusters al ser sistemas redundantes son más confiables, o sea que si cae un nodo, el trabajo es compartido por los otros nodos y el sistema sigue funcionando y la información no se pierde.

• La mayoría de Clusters requieren arquitecturas y/o sistemas operativos homogéneos por lo que si necesitamos agregar un nuevo nodo deberá cumplir con dicha regla de homogeneidad, pero ¿que pasaría si la arquitectura ya no sigue vigente en el mercado?, entonces el sistema Cluster ya no puede ser extendido.

• Los sistemas de software libre contribuyen de forma importante al desarrollo de los clusters, entre ellos resaltando al sistema operativo GNU/Linux. Gracias al software libre es que estas tecnologías no se estancan si no que son retomadas por entidades de todo el mundo para contribuir en el crecimiento científico de la tecnología Clustering.

Arquitectura Paralelas Página 21