Vous êtes sur la page 1sur 19

HPC High Performance Computing Clusters

JOS GREGORIO REYES GONZLEZ Departamento de Ingeniera Elctrica Universidad de Oriente Barcelona VENEZUELA jreygon@cantv.net
Resumen: - En este documento abarcaremos a grandes rasgos sobre la Computacin de Alto Rendimiento, y profundizaremos un poco en una de sus tendencias como lo es la tecnologa de Cluster.. Los Cluster desde su aparicin han ido sustituyendo a los servidores de supercomputadores multiprocesamiento, hasta hacerse un sistema bastante conocido y aplicado en diversas empresas y centros de investigacin; en este documento veremos algunos conceptos, como se construye, los diferentes tipos de Cluster as como tambin sus ventajas y desventajas. Palabras Clave:- Cluster, Nodos, Computacin Paralela, Computacin Distribuida, Computacin de Alto Rendimiento, Supercomputadoras, Clouds Computing, Grid, SMP. MPP, PVM, MPI, Mosix, OpenMosix.

1 Introduccin
La computacin de alto rendimiento (HPC, segn sus siglas en ingles), que es a veces llamada computacin de alta productividad, ha sido usada por dcadas por los investigadores para satisfacer la demanda continua de velocidad en los sistemas computacionales. Esta demanda de velocidad, en general, es requerida en reas como clculo numrico, simulacin y modelado numrico de problemas cientficos, procesamiento de imgenes y datos en general, en gran variedad de aplicaciones de ingeniera y ciencias bsicas. Usualmente, dar solucin a problemas en estas reas implica, numerosos y repetitivos clculos matemticos sobre un conjunto de datos, que usando tcnicas de programacin paralela, se pueden resolver en un lapso de tiempo aceptable. Las plataformas computacionales necesarias para abordar la resolucin de estos problemas son las llamadas Supercomputadoras, que poseen caractersticas especiales de hardware que las hacen, en general, extremadamente costosas y

por ende, difciles de adquirir y de mantener actualizadas, tanto en su plataforma de hardware como de software. En los ltimos aos, la comunidad HPC ha sufrido un rpido y dramtico cambio implementaciones de HPC de menor costo usando mltiples elementos de computacin (nodos) que operan en una tarea en comn en paralelo: referido formalmente como cluster. Clusters son computadoras individuales en red en las que cada una corre una instancia local del mismo sistema operativo y son dirigidas juntas. El costo salvado por utilizar un gran nmero de computadoras basadas en microprocesadores permite tratar problemas que se consideraban intratables o no prcticos en un simple sistema ms grande. De hecho, los clusters basados en microprocesadores son ahora la arquitectura HPC dominante. Cuando se considera el cambio de mainframes y minicomputadoras a computadoras personales y el impacto que esta transicin tuvo en la forma que el trabajo

se realizaba, se cree que el cambio a clusters econmicos y de alto rendimiento, presenta una oportunidad enorme de tomar una HPC de recursos limitados y centralizados a una que es abiertamente disponible. Los desafos que enfrenta la comunidad HPC son similares a aquellos de la industria de la computadora personal. En este texto hablaremos sobre estos desafos y el posible acercamiento a HPC con el manejo de pocos recursos.

2 High Performance Computing


El termino HPC es mayormente asociado con la computacin usada para investigacin cientfica o ciencia computacional. Un termino relacionado, high performance technical computing (HPTC), se refiere generalmente a las aplicaciones ingenieriles de sistemas basados en cluster para problemas como fsica cuntica, prediccin climtica, investigacin del clima, modelado molecular, simulaciones fsicas de aviones en tneles de viento, simulacin de detonacin de armas nucleares e investigacin de la fusin nuclear. Recientemente, HPC se ha estado aplicando a los negocios con el uso de clusters de supercomputadoras, como data warehouses, aplicaciones line-of-business (LOB) y procesamiento de transacciones. Para lograr estos objetivos, la computacin de alto rendimiento se apoya en tecnologas computacionales como los clusters, supercomputadores o mediante el uso de la computacin paralela.

computadoras paralelas son inherentemente escalables, permitiendo actualizarlas para adecuarlas a una necesidad creciente. Las arquitecturas ``tradicionales'' se actualizan haciendo los procesadores existentes obsoletos por la introduccin de nueva tecnologa a un costo posiblemente elevado. Por otro lado, una arquitectura paralela se puede actualizar en trminos de rendimiento simplemente agregando ms procesadores. En ocasiones se menciona tambin la limitante fsica; existen factores que limitan la velocidad mxima de un procesador, independientemente del factor econmico. Barreras fsicas infranqueables, tales como la velocidad de la luz, efectos cunticos al reducir el tamao de los elementos de los procesadores, y problemas causados por fenmenos elctricos a pequeas escalas, restringen la capacidad mxima de un sistema uniprocesador, dejando la opcin obvia de colocar muchos procesadores para realizar clculos cooperativamente. Como toda nueva arquitectura, las mquinas paralelas poseen caractersticas, y plantean ventajas y desventajas, que obligan a considerar cuidadosamente su utilizacin. Tambin, dentro del mundo de las mquinas paralelas, existen dos enfoques con distintas caractersticas: la arquitectura SMP y la arquitectura MPP. 2.1.1 Arquitectura SMP El enfoque ms sencillo para una mquina con mltiples procesadores es el esquema SMP (Symmetrical Multiprocessing, multiproceso simtrico). Una arquitectura SMP es bsicamente una expansin de una arquitectura tradicional pero con la adicin de varios procesadores que comparten todos los dems recursos del sistema (memoria principal, almacenamiento secundario, perifricos de entrada y salida). En esta arquitectura no se establece distincin entre los procesadores; todos son jerrquicamente iguales y pueden ejecutar tareas indistintamente. De esta caracterstica viene el nombre de ``simtrica''. En general una arquitectura SMP tiene un equivalente en uniprocesador, y naturalmente un sistema SMP puede ejecutar

2.1 Computacin Paralela


El cmputo paralelo ofrece una serie de ventajas que lo hacen particularmente atractivo para los requerimientos de capacidad de cmputo, en particular los de la comunidad cientfica. Una de estas ventajas es econmica. El uso de componentes comnmente disponibles, en grandes cantidades, permite ofrecer mayor rendimiento, a un precio menor que el de mquinas con procesadores especialmente diseados (como por ejemplo las mquinas de procesadores vectoriales y de propsito especfico). Adicionalmente, las

simultneamente varios programas o aplicaciones, que normalmente podran ejecutarse en el sistema uniprocesador, de manera independiente. Sin embargo, para el uso de aplicaciones que aprovechen los mltiples procesadores para expeditar la realizacin de clculos, nos interesa que dichos procesos no sean totalmente independientes, buscando entonces que cuenten con manera de comunicarse para distribuirse informacin, compartir y consolidar resultados. Ya que un sistema SMP los procesadores comparten todos los perifricos y recursos, el esquema ms obvio para comunicarse en una arquitectura SMP es el uso de memoria compartida. Como el nombre lo indica, en este esquema los procesadores tienen acceso a un espacio de direcciones comn; esto puede ser todo el espacio de direcciones o nicamente un rea designada para memoria compartida, permitiendo a cada proceso contar con un rea exclusiva para sus requerimientos. Memoria compartida El enfoque paralelo ms sencillo a nivel programacin es el SMP. Ya que los procesadores comparten el mismo espacio de memoria, la programacin es muy similar a la que se efectuara en un sistema uniprocesador que soporte multiprogramacin o multitasking. Una mquina SMP se puede programar empleando tcnicas conocidas, como bifurcacin (forking) de procesos e hilos (threads). Desde luego, ya que es posible que dos procesos ejecutndose en distintos procesadores intenten acceder a la misma rea de memoria simultneamente, es muy importante planear los accesos a memoria compartida, identificando las secciones crticas en cada programa, y coordinando la entrada a dichas secciones con mecanismos de control tradicionales, como semforos y monitores. La relativa facilidad de programacin para un esquema SMP tiene como desventaja la baja escalabilidad de esta arquitectura. Es decir, a cambio de contar con un paradigma de programacin relativamente familiar y conceptualmente sencillo, un sistema SMP,

como ya se ha mencionado, tendr problemas para escalar ms all de cierto nmero de procesadores. 2.1.2 Arquitectura MPP Ya que el problema es el hecho de contar con memoria compartida y sus limitaciones, se propuso un esquema de una mquina paralela que consta de varias unidades de procesamiento bsicamente independientes. En efecto cada una de estas unidades, conocida como ``nodo'', es prcticamente una computadora en s misma, contando con su propio procesador, memoria no compartida, y que se comunica con las dems unidades de procesamiento a travs de un canal provisto exclusivamente para este propsito. Este tipo de mquinas se conocen como computadoras masivamente paralelas o mquinas MPP (Massively Parallel Processing, procesamiento masivamente paralelo). Una mquina MPP presenta una serie de consideraciones importantes derivadas de su arquitectura, que se deben tomar en cuenta al escribir programas que pretendan aprovechar su naturaleza multiprocesador. Obviamente la caracterstica ms importante es el hecho de que, en cada nodo, cada procesador opera bsicamente como una computadora independiente, ejecutando su propio cdigo independiente de los dems procesadores, y teniendo un rea de memoria con datos tambin independientes. Desde luego, para que esta organizacin redunde en un mayor desempeo, se requiere colaboracin entre los nodos. Como se mencion, una mquina MPP debe contar con un canal que permita a los nodos comunicarse entre s, a fin de intercambiar datos y coordinar sus operaciones. Ya que el objetivo principal de una mquina MPP es obtener alto rendimiento, se busca que este canal de comunicaciones sea lo ms eficiente posible, en trminos tanto de ancho de banda como de tiempo de latencia. En la mayora de los casos este canal ser un bus propietario, diseado por el fabricante del equipo MPP. Para tener acceso a informacin fuera de su propia rea de memoria, los nodos se comunican entre s, regularmente empleando

un esquema de paso de mensajes. Esto resuelve el problema de saturacin del bus de comunicaciones, pues ste slo se emplea cuando se est realizando comunicacin entre los nodos. De esta manera se tiene una arquitectura que puede escalarse a varios cientos o miles de procesadores (las mquinas MPP ms grandes en la actualidad tienen alrededor de 10 mil procesadores). Sin embargo el tener varias secciones de memoria independientes complica la programacin en este tipo de arquitecturas. En una arquitectura MPP la distribucin de trabajo entre los nodos es una consideracin vital al disear cualquier aplicacin. Se debe tomar en cuenta la sincronizacin de datos entre los nodos, y en toda comunicacin entre ellos debe realizarse explcitamente por medio de llamadas al mecanismo de paso de mensajes. Paso de mensajes El uso de arquitecturas MPP permite como principal ventaja una mayor escalabilidad de rendimiento por medio de la expansin del nmero de nodos. Sin embargo, debido a la arquitectura de un equipo MPP, se requiere un paradigma de programacin diferente, que permita a los programas en cada nodo ejecutarse independientemente cuando lo necesiten, y explotar las facilidades de comunicacin que son bsicas para la arquitectura MPP cuando el diseo de la aplicacin as lo requiera. El esquema ms utilizado en sistemas masivamente paralelos, o en general sistemas que constan de nodos independientes comunicados a travs de algn medio, es el conocido como paso de mensajes. Bajo el esquema de paso de mensajes, cada proceso se ejecuta independientemente, y nicamente se comunicar con otros procesos cuando el programa contenga instrucciones para hacerlo explcitamente. Esta comunicacin se realiza a travs de ``mensajes'' que contienen la informacin que requieran intercambiar los procesos. Un sistema de paso de mensajes proporciona funciones bsicas, o ``primitivas'', para envo y recepcin de mensajes. Es responsabilidad del programador el crear los mensajes con la

informacin relevante, enviarlos a los procesos que requieren hacer uso de esta informacin, y asegurarse de que estos procesos empleen dicha informacin adecuadamente. De estas caractersticas bsicas se observa que el esquema de paso de mensajes se presta a las caractersticas de una mquina masivamente paralela; cada proceso se ejecutar, normalmente, en un nodo, con un solo procesador y rea de memoria; y la comunicacin entre procesos se realiza nicamente cuando estos as lo requieran, de forma que el bus de comunicaciones se emplea nicamente cuando es necesario. A cambio de esta mayor eficiencia en el uso del bus de comunicaciones, que en sistemas MPP es el elemento que ms se presta a ser un ``cuello de botella'', el esquema de paso de mensajes es ms complicado de programar que un esquema de memoria compartida. Una aplicacin hecha con paso de mensajes, que se compone de varios procesos ejecutndose independientemente, debe realizarse teniendo en cuenta algunos factores inherentes a la arquitectura MPP. Todo intercambio de informacin entre procesos debe realizarse explcitamente y planearse cuidadosamente, teniendo en cuenta qu procesos tendrn cierta informacin, y qu otros procesos pueden requerirla, a fin de realizar el intercambio de esta informacin. La gran mayora de los problemas requieren, adems de intercambio de datos entre los procesos, sincronizacin de los mismos, en casos en los cuales algn proceso requiere que otros terminen sus tareas antes de poder continuar. Al nivel ms bsico, el esquema de paso de mensajes no proporciona primitivas para estas operaciones, de modo que el programador tiene que implementarlas utilizando mensajes, esto incrementa la complejidad de la aplicacin. Finalmente, si se tiene en mente que la ventaja de una mquina MPP es su escalabilidad, se debe disear la aplicacin teniendo en cuenta el aprovechamiento de un crecimiento en cuando al nmero de elementos de procesamiento en el equipo. Si no se planean cuidadosamente las

comunicaciones entre procesos, es posible que la aplicacin sature el bus de comunicaciones si se incrementa la cantidad de nodos o elementos de procesamiento. 2.1.3 Consideraciones de utilizacin para mquinas paralelas El incremento en capacidad de cmputo que ofrecen las mquinas paralelas conlleva ciertas restricciones y consideraciones que no pueden dejar de tenerse en cuenta. El contar con una mquina paralela de cualquier especie no es una panacea, ni redundar en un mayor desempeo para las aplicaciones, a menos que se tome en cuenta la naturaleza de su arquitectura y el software que se piensa ejecutar en ella se adapte o disee especficamente teniendo en mente las ventajas y limitaciones del esquema paralelo. Consideraciones generales Tanto el paso de mensajes como la memoria compartida son paradigmas de comunicacin interprocesos que en s no dependen estrictamente de soporte a nivel lenguaje de programacin, de alguna biblioteca de funciones o de algn soporte especfico en el hardware. Es decir, es factible, en una mquina SMP, utilizar paso de mensajes para comunicarse entre procesos, ignorando las facilidades de memoria compartida; tambin es posible implementar un esquema de memoria compartida en una mquina MPP, utilizando el bus de comunicaciones para simular la presencia de un rea de memoria compartida. Sin embargo, ya que la meta de una mquina paralela de cualquier especie es tener mayor rendimiento, en general se busca emplear el esquema de programacin adecuado a la arquitectura con que contamos, ya que esto permite aprovechar al mximo las facilidades que proporciona el equipo, as como emplear un esquema de programacin que obliga a tener en cuenta las limitaciones de la arquitectura al momento de disear la aplicacin. Independientemente de la arquitectura de la mquina paralela con la que se cuente, siempre se debe tener en mente que el buen diseo es esencial para que una aplicacin paralela realmente presente una

mejora de rendimiento sobre un equivalente en uniprocesador. La dificultad de la resolucin cooperativa de problemas, que es la idea central detrs del cmputo paralelo, es lo que hace de ste una rama entera de las ciencias de la computacin, con un grado de complejidad y muchas sutilezas que deben tenerse en cuenta al considerar el empleo de este paradigma computacional. En general se asume que un nmero N de tareas terminarn el trabajo N veces ms rpido. Sin embargo esto regularmente no se cumple, y si bien inicialmente la lgica parece correcta, la afirmacin siguiente muestra lo descabellado que esto puede resultar: ``si un hombre puede cavar un agujero en un minuto, sesenta hombres pueden hacerlo en un segundo''. Esta frase clsica nos hace detenernos a pensar y da un breve vistazo sobre la complejidad real de realizar tareas cooperativamente. La Ley de Amdahl Un programa con un nmero de instrucciones determinado tardar un tiempo t en ejecutarse de manera completa en un sistema uniprocesador. La medida de mejora de rendimiento (o speedup) toma como referencia el tiempo de ejecucin de un programa en un sistema uniprocesador respecto a la medida de tiempo de ejecucin del programa en un sistema multiprocesador o multicomputador. t speedup = 1 tj Donde t1 es el tiempo que tarda en ejecutarse el programa para una mquina con un solo procesador y tj es el tiempo que tarda en ejecutarse el mismo programa con un sistema de j procesadores. el speedup o mejora de rendimiento aumenta linealmente con el nmero de procesadores que posea el sistema. Para el caso de los programas lo primero que debe hacerse es comprender su naturaleza, luego clasificar su cdigo: cul es paralelizable y cul es lineal ya que este ltimo en varias ocasiones va a requerir tener acceso a ciertas dependencias. Para ello debe existir un nodo en el cual se ejecuten este cdigo y del que depende el resto. Es lgico

afirmar que el speedup de un programa depende de: El tiempo en el que se ejecuta el cdigo lineal Wl, llamado as por trabajo lineal. El tiempo en el que se ejecuta el cdigo paralelizable Wn. El numero de procesadores o nodos que posee el sistema n. Dados estos factores se puede concluir que el mximo speedup que se puede obtener en un programa a nivel general viene dado por:

speedup =

Wl + W n W Wl + n n

Esta es la llamada Ley de Amdahl y fue descrita por Gene Amdahl en 1967. Las implicaciones que trae esta ecuacin son claras a pesar de que no se tenga en cuenta las caractersticas de cada sistema en concreto, que a su vez tambin limitaran el speedup de cada sistema. Para empezar el rendimiento no depende completamente del nmero de procesadores que posea el sistema: en la mayora de los casos dependera del nmero de procesadores mximos que se aprovechara para ejecutar un programa. Por otro lado puede concluirse que cuanto mejor paralelizado est un programa ms susceptible ser de aumentar su speedup y por tanto explotar el rendimiento de un sistema paralelo como puede ser un cluster. Tiempo Total de Computo Paralelo Para establecer objetivos concretos de performance se necesita ser capaz de evaluar las caractersticas de las plataformas de hardware. Para medir la performace de la implementacin de message passing, dos parmetros son por lejos los ms importantes: latencia1 y ancho de banda2 Todo algoritmo de clculo implementado en paralelo basado en MPI va
1

a consumir tiempo por dos causas: el clculo y la comunicacin entre los procesos. Podra enunciarse que: ttotal = tclculo + tcomunicacin Aunque, en realidad, hay otros procesos que tambin consumen tiempo computacional. En esta simple suma se refleja uno de los principios de la programacin paralela: un algoritmo podr ser paralelizado eficientemente solo si el tiempo que toman los clculos es superior al tiempo de comunicacin que emplearn los procesos. Solo en ese caso la ganancia de velocidad en el clculo influir en la disminucin del tiempo total. Si el orden del tiempo de clculo y el tiempo de comunicacin son semejantes, la ganancia en tiempo de clculo no repercutir positivamente en el tiempo computacional total, porque la comunicacin ser el factor determinante del orden del tiempo total.[2] Haciendo un modelo de anlisis simplificado, el tiempo requerido para pasar un mensaje entre dos procesos es:
tcomunicacin= latency + message-size /bandwidth

2.2 Tecnologas HPC


2.2.1 Cluster El trmino cluster se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilizacin de componentes de hardware comunes y que se comportan como si fuesen una nica computadora. El cmputo con clusters surge como resultado de la convergencia de varias tendencias actuales que incluyen la disponibilidad de microprocesadores econmicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cmputo distribuido de alto rendimiento, as como la creciente necesidad de potencia computacional para aplicaciones que la requieran. Simplemente, un cluster es un grupo de mltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un nico ordenador, ms potente que los comunes de escritorio.

latencia es el tiempo que tarda en enviar un mensaje mnimo (0 bytes) del punto A al punto B. normalmente se expresan como microsegundos. 2 bandwidth es la cantidad de datos que pueden ser transmitidos por unidad de tiempo. Normalmente se expresan como megabytes/sec or gigabytes/sec

2.2.2 Supercomputadoras Dedicadas Una Supercomputadora es una computadora con capacidades de clculo muy superiores a las comnmente disponibles. Las supercomputadoras estn caracterizadas por una inmensa capacidad de realizar operaciones computacionales a velocidades no comparables a computadores de naturaleza personales. Estas capacidades de calculo o procesamiento intensivo estn justiciadas en un arreglo de hardware extremadamente caro especializados en operaciones paralelas, la jerarqua de memoria tiende a ser cuidadosamente diseada para que el CPU este constantemente trabajando. En los PC regulares la inmensa mayora del tiempo las operaciones que ocurren son de entrada / salida y no de uso del procesador. Estas computadoras tienden a ser especializadas

los grandes supercomputadores de entidades gubernamentales, universidades o grandes empresas multinacionales; y aun mas, la idea es tener una cierta variedad de nodos en todo el mundo lo que conformara una computadora mundial (la Grid Mundial) en donde se podran resolver tareas muy intensivas.

3 Clusters
Un cluster es una solucin computacional estructurada a partir de un conjunto de sistemas computacionales muy similares entre si (grupo de computadoras), interconectados mediante alguna tecnologa de red de alta velocidad, configurados de forma coordinada para dar la ilusin de un nico recurso; cada uno de estos sistemas estar proveyendo un mismo servicio o ejecutando una (o parte de una) misma aplicacin paralela. Un cluster debe tener como caracterstica inherente la comparticin de recursos: ciclos de CPU (Central Processing Unit), memoria, datos y servicios. Los sistemas computacionales (nodos) que conforman el cluster podran ser computadoras de uno o varios procesadores; estos sistemas podran estar montados en un rack, ubicados en un espacio dedicado exclusivamente a almacenar computadoras, o en el cubculo de un empleado; lo que cuenta es como estn relacionados, como son accesados, y que tipo de aplicacin estn ejecutando. La idea de los clusters tomo impulso en los 90s, cuando se dispuso de microprocesadores de alto rendimiento, redes de alta velocidad, y herramientas estndar para computacin distribuida (Message Passing Interface, MPI, Parallel Virtual Machine, PVM (Quinn, 2003; Pacheco, 1997)) y a costos razonables. Pero tambin el desarrollo de los clusters fue impulsado por deficiencias de los Sistemas Multiprocesador Simtricos (Symmetric MultiProcessors, SMPs (Culler y Singh, 1999)). Las grandes mquinas SMP son costosas, propietarias, tienen un nico punto de falla, no estn ampliamente disponibles, y sufren de problemas de escalabilidad, en trminos de nmero de procesadores y capacidad de

para ciertos tipos de operaciones, usualmente clculos numricos y tienden


a tener rendimientos inferiores en otras reas de operacin. 2.2.3 Cloud Computing En este tipo de computacin todo lo que puede ofrecer un sistema informtico se ofrece como servicio, de modo que los usuarios puedan acceder a los servicios disponibles "en la nube de Internet" sin conocimientos (o, al menos sin ser expertos) en la gestin de los recursos que usan. Segn el IEEE Computer Society, es un paradigma en el que la informacin se almacena de manera permanente en servidores de Internet y se enva a cachs temporales de cliente, lo que incluye equipos de escritorio, centros de ocio, porttiles, etc. Esto se debe a que, pese a que las capacidades de los PC han mejorado sustancialmente, gran parte de su potencia se desaprovecha, al ser mquinas de propsito general. 2.2.4 Grid En un concepto general La Grid Computing (o simplemente Grid) es la comparticin de potencia computacional, aprovechando los ciclos de procesamiento no utilizados de cada nodo que pertenecen a la Grid. Con esto se busca enfrentar problemas que a los que solo se enfrentaban

memoria. Segn Lucke (2005), los sistemas SMP ms grandes conocidos, escalan hasta un nmero de alrededor de 128 CPUs.

3.1 Caractersticas de los Cluster


Escalabilidad: capacidad de un equipo de hacer frente a volmenes de trabajo cada vez mayores, sin dejar por ello de prestar un nivel de rendimiento aceptable. Disponibilidad: es la capacidad de estar presente, de estar listo en un determinado momento en el que se quiere hacer uso. Fiabilidad: es la probabilidad de funcionamiento correcto. Un cluster puede presentarse como una solucin de especial inters sobre todos a nivel de empresas, las cuales pueden aprovecharse de estas especiales caractersticas de computacin para mantener sus equipos actualizados por un precio bastante ms econmico que el que les supondra actualizar todos sus equipos informticos y con unas capacidades de computacin que en muchos casos pueden llegar a superar el hardware de ltima generacin.

3.2 Construccin de un Cluster


La construccin de los ordenadores del cluster es ms fcil y econmica debido a su flexibilidad: pueden tener toda la misma configuracin de hardware y sistema operativo (cluster homogneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (cluster semihomogneo), o tener diferente hardware y sistema operativo (cluster heterogneo).

3.3 Componentes de un Cluster


En general, un cluster necesita de varios componentes de software y hardware para poder funcionar. A saber: 3.3.1 Nodos Pueden ser simples ordenadores, sistemas multi-procesador o estaciones de trabajo (workstations). En informtica, de forma muy general, un nodo es un punto de interseccin o unin de varios elementos que confluyen en el mismo lugar. Ahora bien, dentro de la informtica la palabra nodo puede referirse a

conceptos diferentes segn el mbito en el que nos movamos: En redes de computadoras cada una de las mquinas es un nodo, y si la red es Internet, cada servidor constituye tambin un nodo. En estructuras de datos dinmicas un nodo es un registro que contiene un dato de inters y al menos un puntero para referenciar (apuntar) a otro nodo. Si la estructura tiene slo un puntero, la nica estructura que se puede construir con l es una lista, si el nodo tiene ms de un puntero ya se pueden construir estructuras ms 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, ratn 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, ratn 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 disear un cluster, los nodos deben tener caractersticas similares, es decir, deben guardar cierta similitud de arquitectura y sistemas operativos, ya que si se conforma un cluster con nodos totalmente heterogneos (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 cmputo y solo distribuir cuando este se encuentre saturado de procesos; por eso es recomendable construir un grupo de ordenadores lo ms similares posible. 3.3.2 Almacenamiento El almacenamiento puede consistir en una NAS3, una SAN, o almacenamiento interno
3

NAS (Network Attached Storage) es un dispositivo especfico dedicado al almacenamiento a travs de red (normalmente TCP/IP) que hace uso de un sistema operativo optimizado para dar acceso a travs de protocolos CIFS, NFS,

en el servidor. El protocolo ms comnmente utilizado es NFS (Network File System), sistema de ficheros compartido entre servidor y los nodos. Sin embargo existen sistemas de ficheros especficos para clusters como Lustre (CFS) y PVFS2. Tecnologas 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: ana 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. DAS (Direct Attached Storage) consiste en conectar unidades externas de almacenamiento SCSI o a una SAN (Storage Area Network) a travs de un canal de fibra. Estas conexiones son dedicadas. Mientras NAS permite compartir el almacenamiento, utilizar la red, y tiene una gestin ms sencilla, DAS proporciona mayor rendimiento y mayor fiabilidad al no compartir el recurso. 3.3.3 Sistema Operativo Un sistema operativo debe ser multiproceso y multiusuario. Otras caractersticas deseables son la facilidad de uso y acceso. Ejemplos GNU/Linux o ABC GNU/Linux o OpenMosix o Rocks o Kerrighed o Cndor o Sun Grid Engine 3.3.4 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 tecnologas especiales de alta
FTP o TFTP.

velocidad como Fast Ethernet, Gigabit Ethernet, Myrinet, InfiniBand, SCI, etc. Ethernet Son las redes ms utilizadas en la actualidad, debido a su relativo bajo coste. No obstante, su tecnologa limita el tamao de paquete, realizan excesivas comprobaciones de error y sus protocolos no son eficientes, y sus velocidades de transmisin pueden limitar el rendimiento de los clusters. Para aplicaciones con paralelismo de grano grueso puede suponer una solucin acertada. En todo caso, es la red de administracin por excelencia, as que aunque no sea la solucin 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 ms utilizada en la actualidad, tanto en clusters como en MPPs estando presente en ms de la mitad de los sistemas del top500. Tiene dos bibliotecas de comunicacin a bajo nivel (GM y MX). Sobre estas bibliotecas estn implementadas MPICHGM, MPICH-MX, Sockets-GM y Sockets MX, para aprovechar las excelentes caractersticas de Myrinet. Existen tambin emulaciones IP sobre TCP/IP, IPoGM e IPoMX. InfiniBand Es una red surgida de un estndar desarrollado especficamente para realizar la comunicacin en clsters. Una de sus mayores ventajas es que mediante la agregacin de canales (x1, x4 y x12) permite obtener anchos de banda muy elevados. La conexin bsica es de 2Gbps efectivos y con quad connection x12 alcanza los 96Gbps. No obstante, los startups no son muy altos, se sitan en torno a los 10 s. Define una conexin entre un nodo de computacin y un nodo de I/O. La conexin 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 terica es de 1.43 s y su ancho de banda de 5333 Mbps bidireccional. Al poder configurarse con topologas de anillo (1D), toro (2D) e hipercubo (3D) sin necesidad de switch, se tiene una red adecuada para clsters de pequeo y mediano tamao. Al ser una red de extremadamente baja latencia, presenta ventajas frente a Myrinet en clusters de pequeo tamao al tener una topologa punto a punto y no ser necesaria la adquisicin 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. 3.3.5 Middleware El middleware es un software que generalmente acta 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 sensacin al usuario de que utiliza un nico ordenador muy potente; Herramientas para la optimizacin y mantenimiento del sistema: migracin 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 automticamente nuevos servidores conectados al cluster para proceder a su utilizacin. Existen diversos tipos de middleware, como por ejemplo: MOSIX, OpenMOSIX, Cndor, OpenSSI, etc. El middleware recibe los trabajos entrantes al cluster y los redistribuye de

manera que el proceso se ejecute ms rpido y el sistema no sufra sobrecargas en un servidor. Esto se realiza mediante polticas definidas en el sistema (automticamente o por un administrador) que le indican dnde y cmo debe distribuir los procesos, por un sistema de monitorizacin, el cual controla la carga de cada CPU y la cantidad de procesos en l. El middleware tambin 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 actualizacin, es posible migrar los procesos a otro servidor y proceder a desconectar del cluster al primero; Priorizacin de trabajos: en caso de tener varios procesos corriendo en el cluster, pero uno de ellos de mayor importancia que los dems, puede migrarse este proceso a los servidores que posean ms o mejores recursos para acelerar su procesamiento. 3.3.6 Ambientes de Programacin Paralela Los ambientes de programacin paralela permiten implementar algoritmos que hagan uso de recursos compartidos: CPU (Central Processing Unit), memoria, datos y servicios. Symetric Multiprocessing (SMP) y mltiples hilos (threads) El enfoque ms sencillo para una mquina con mltiples procesadores es el esquema SMP (Symmetrical Multiprocessing, multiproceso simtrico). Una arquitectura SMP es bsicamente una expansin de una arquitectura tradicional pero con la adicin de varios procesadores que comparten todos los dems recursos del sistema (memoria principal, almacenamiento secundario, perifricos de entrada y salida). En esta arquitectura no se establece distincin entre los procesadores; todos son jerrquicamente

iguales y pueden indistintamente.

ejecutar

tareas

necesario para completar un trabajo en una forma logartmica inversa.

Message Passing Interface (MPI)

El paradigma de comunicacin entre los componentes de un cluster es tpicamente el paso de mensajes y la unificacin de herramientas de desarrollo paralelas y de dominio pblico, muchas de ellas gratis, es tambin un factor que debe ser analizado. Con la madurez y la robustez de Linux, el software GNU y de la estandarizacin de envo de mensajes va PVM y MPI, los programadores ahora tienen una garanta que los programas que escriban corrern en diversos clusters, sin importar quien fabric los procesadores La versin abierta de la librera MPI, y varios utilitarios, se denomina MPICH. Las aplicaciones usan libreras MPI, que a su vez pasan comandos y datos a travs de diferentes nodos en un cluster y ejecutan las operaciones desde un mismo filesystem, comn a travs de todos los nodos en el cluster.
Parallel Virtual Machine (PVM)

3.4 Clasificacin de Cluster


3.4.5 High Performance o Cluster Computacionales Un Cluster de computadoras se basa en una arquitectura que comprende componentes de hardware y software. Esta arquitectura bsica permite la ejecucin de aplicaciones secuenciales y paralelas indistintamente. Las aplicaciones paralelas estn apoyadas en Ambientes de Programacin Paralela y herramientas que permiten a los desarrolladores explotar de manera especfica los recursos computacionales reunidos en el Cluster, generalmente constituidas por libreras de paso de mensajes como MPIy PVM. Cluster Middleware reside entre el Sistema Operativo de las computadoras que conforman el Cluster y las aplicaciones, formando parte del software que provee la infraestructura que ofrece la funcionalidad de un Sistema de Imagen nica SSI (Single System Image), de tal manera que, se logra una visin global de los recursos del sistema y Alta Disponibilidad HA de los mismos. La plataforma de hardware est formada por un conjunto de computadoras personales PCs o estaciones de trabajo WSs, cada una provista de interfaces y software de comunicacin NICs (network interface card), una red de rea local para la interconexin de las computadoras (nodos de cmputo), usando tecnologa comn de alta velocidad, como Fast Ethernet, Gigabit Ethernet, o hardware especializado que provee un ancho de banda adecuado y mnimos tiempos de latencia como por ejemplo Myrinet, SCI, etc. Clusters 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 Informacin (CESDIS), cuyo resultado fue la construccin de un Cluster de 16 mquinas destinado al Proyecto de Ciencias Espaciales y Terrestres (ESS) ubicado en el Centro de Vuelo Espacial

PVM es un software que permite a una coleccin de computadoras diferentes a ser usadas como un recurso computacional coherente y flexible, o una mquina virtual paralela. Las computadoras individuales pueden ser de memoria compartida o memoria local con mltiples procesadores, supercomputadores con vectores de procesadores, motores grficos especializados, o estaciones de trabajo personales escalables, que deben estar interconectadas por una variedad de redes, como Ethernet o FDDI. PVM es una alternativa a MPI.
Paralelizacin de trabajos

Para la paralelizacin de trabajos se utilizan sistemas de cola de trabajo, como OpenPBS, LoadLeveler, el motor Grid de Sun/Oracle o la plataforma LSF. En los sistemas de mltiples ncleos, sistemas de mltiples hilos, encolar hilos de programas para ejecutar las tareas, puede mejorar el tiempo

de Goddard (GSFC). La idea de construir un sistema con elementos de hardware de bajo costo, para satisfacer requisitos computacionales especficos, se difundi rpidamente a travs de la NASA y de las comunidades acadmicas y cientficas a escala mundial. Un Cluster del tipo Beowulf posee una arquitectura escalable de mltiples computadoras, que puede ser usada para realizar cmputo paralelo y distribuido. Estos Clusters son sistemas construidos con componentes de hardware y software de uso general, es decir, no contienen ningn tipo de hardware especializado. Los nodos estn 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 cmputo (compute node) llamados nodos Cliente, interconectados a travs de una LAN. El nodo Servidor controla los nodos Cliente y tambin es la Consola y "puerta de entrada" al Cluster desde el mundo exterior. Los nodos Cliente del sistema se usan slo para cmputo dentro del sistema. Una caracterstica importante de los Cluster del tipo Beowulf es su escalabilidad. Los cambios en los microprocesadores y en su velocidad, o la tecnologa de las redes de interconexin de los nodos, no afecta el modelo de programacin. 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 estandarizacin de libreras GNU para el "paso de mensajes" como PVM y MPI, garantizan a los programadores que las aplicaciones que desarrollen, se ejecutarn en futuras versiones de estos elementos de software y, por ende, en Clusters del tipo Beowulf actualizados, independientemente de la plataforma de hardware. Los Clusters Beowulf se comportan como una unidad. En la mayora de los casos, los nodos Cliente no poseen teclados, ratones (mouse) o monitor, y son accedidos desde el nodo Servidor. As, los nodos Cliente, representan un componente que posee una

Unidad Central de Procesamiento para cmputo y cierta cantidad de memoria que se anexa al sistema. No existe necesidad de que los nodos Clientes sean accedidos directamente por sistemas externos, ni que stos accedan al exterior. Por esta razn, los nodos Cliente forman una red privada (intranet) conectada al nodo Servidor. Para cumplir con sta caracterstica, el nodo Servidor posee una interfaz de red NIC adicional que permite el acceso y uso del Cluster desde cualquier estacin de trabajo externa. Los usuarios del sistema acceden al nodo Servidor, bien sea desde la consola o va telnet, secure shell (ssh), etc., donde pueden editar y compilar sus aplicaciones y ejecutar su cdigo en los nodos Cliente y Servidor del Cluster. Mosix. Esta tecnologa basada en Linux, permite realizar balanceo de carga para procesos particulares en un cluster. Sin embargo, se clasifica entre los clusters de alto rendimiento ya que est diseado para tomar ventaja del hardware ms rpido disponible en el cluster para cualquier tarea que le sea asignada. Aumenta as la capacidad y velocidad de cmputo, pero, internamente tan slo balancea la carga de las tareas en varias mquinas. MOSIX se convirti en producto comercial en 2001, aunque existe una alternativa libre, OpenMosix, desde febrero de 2002. Una de las grandes ventajas de MOSIX es que no requiere la confeccin especial de software como lo requiere los clusters tipo Beowulf. Los usuarios ejecutan sus programas normalmente y el sistema MOSIX se encarga del resto. El ncleo de MOSIX est formado por algoritmos que monitorizan y dan repuesta a las actividades requeridas del cluster mediante migracin automtica de los procesos a los nodos mejor capacitados. Estos algoritmos estn diseados manteniendo los principios de facilidad de uso, optimizacin y escalabilidad. Los algoritmos de MOSIX usan la migracin de procesos para: Distribucin y redistribucin automtica de procesos.

Transferencia de procesos desde los nodos ms lentos a los ms rpidos. Balanceo de carga. Migracin de procesos desde los nodos que funcionan fuera de memoria, para evitar swapping o thrashing. Entrada/Salida paralelizada para migrar los procesos de E/S a los servidores de ficheros (al contrario de lo usual ). Software para Cluster Computacionales Aunque por la naturaleza de los problemas a los que dan solucin este tipo de clusters lo normal es desarrollar aplicaciones especficas, existen algunas soluciones generales. Dentro del proyecto Beowulf se puede encontrar un kernel modificado y algunas herramientas y libreras usadas para presentar el cluster como un nico sistema. La idea es que los procesos que se ejecutan en los nodos esclavos son manejados por un nodo maestro, dando la impresin de que el cluster es un nico sistema. Ya que el kernel que mantiene este proyecto est modificado, es el propio proyecto Beowulf quien se encarga de la distribucin de nuevas versiones y parches. Hay otros proyectos en los que tambin se utiliza la idea de un nico sistema. OpenMosix es un conjunto de extensiones del kernel estndar, as como herramientas desarrolladas para que el uso del cluster sea ms eficiente. SCE (Scalable Cluster Environment) es un conjunto de herramientas que permiten construir y usar un cluster Beowulf. Bproc, el programa ncleo del proyecto Beowulf tiene la habilidad de presentar el sistema como nico y es usado en ClubMask, Kickstart, cfengine, the Maui scheduler, LAM/MPI, etc. Existen otros clusters computacionales que no modifican la forma en que funciona el kernel. stos utilizan otros medios para ejecutar tareas y mostrar informacin sobre ellas. Cplant, el Ka Clustering Toolkit, y OSCAR permiten construir, usar y administrar clusters de este modo. Existen algunos sistemas operativos. que han surgido en base a las necesidades de

los clusters computacionales. Proporcionan distintas funcionalidades, desde herramientas HPC generales hasta ofrecer instalaciones especficas de clusters. Warewulf es una distro que se configura y copia en un CD y con la que se puede arrancar los nodos esclavos y que tambin puede utilizarse ejecutndola de forma independiente para tener al instante un cluster. Otra herramienta de este tipo es ClusterKnoppix: ClusterKnoppix es bsicamente una Knoppix, un fantstico CD arrancable, con un kernel openMosix. Incluye toda la funcionalidad bsica de openMosix, y basta con arrancar desde el CD en el servido y ejecutar unos cuantos clientes por red para tener al instante un cluster. 3.4.6 Alta Disponibilidad Mxima disponibilidad de servicios. Rendimiento sostenido. La alta disponibilidad ha sido un tradicionalmente un requerimiento exigido a aquellos sistemas que realizaban misiones crticas. Sin embargo, actualmente, est siendo cada vez ms importante exigir esta disponibilidad en sistemas comerciales y en reas acadmicas donde el objetivo de prestar los servicios en el menor tiempo posible es cada vez ms perseguido. El concepto de cluster de disponibilidad continua, se basa en la idea de mantener la prestacin del servicio en todo momento. Esto representa una situacin ideal, sera necesario que el sistema estuviera compuesto de componentes perfectos que no fallaran nunca, tanto en hardware como en software. Realmente no hay sistemas que puedan asumir este tipo de disponibilidad. Se necesita que el cluster sea tolerante a los fallos. En este caso se encubre la presencia de los fallos del sistema empleando redundancia en el hardware, el software e incluso redundancia temporal. La redundancia en el hardware consiste en aadir componentes replicados para encubrir los posibles fallos. La redundancia software incluye la administracin del hardware redundante para asegurar su correcto funcionamiento al hacer frente a la cada de

algn elemento. La redundancia en el tiempo hace referencia a la repeticin de la ejecucin de un conjunto de instrucciones para asegurar el comportamiento correcto en caso de que ocurra un fallo. El cluster de alta disponibilidad va a poder disearse con distintas configuraciones. Una posible configuracin es activo-pasivo: las aplicaciones se ejecutan sobre un conjunto de nodos, los activos, mientras que los nodos restantes actan como backups redundantes para los servicios ofrecidos. En el otro extremo, tenemos otra posible configuracin, activo-activo: en este caso, todos los nodos actan como servidores activos de una o ms aplicaciones y potencialmente como backups para las aplicaciones que se ejecutan en otros nodos. Cuando un nodo falla, las aplicaciones que se ejecutaba en l se migran a uno de sus nodos backup. Esta situacin podra producir una sobrecarga de los nodos de respaldo, con lo que se ejecutaran las aplicaciones con ms retardo. Generalmente, sin embargo, es aceptable una degradacin del servicio y tambin suele ser preferible a una cada total del sistema. Otro caso particular de cluster de alta disponibilidad sera el de un cluster de un solo nodo, tratndose en este caso, simplemente, de evitar los puntos nicos de fallo. Los conceptos de alta disponibilidad y de clustering estn ntimamente relacionados ya que el concepto de alta disponibilidad de servicios implica directamente una solucin mediante clustering. La principal prestacin de un sistema de alta disponibilidad es que el fallo de un nodo derive en que las aplicaciones que se ejecutaban en l sean migradas a otro nodo del sistema. Este migrado puede ser automtico (failover) o manual (switchover). Generalmente este tipo de cluster integra un nmero relativamente pequeo de nodos (entre 2 y 8), aunque existen soluciones comerciales que trabajan en clusters de mayor tamao. En este caso, la escalabilidad no vena siendo un objetivo prioritario, en contraste con el caso de los clusters computacionales. Las aplicaciones usadas para el diseo y la implementacin de

este tipo de clusters no tienen porqu escalar. Sin embargo, actualmente, existe una cierta tendencia a perseguir la escalabilidad tambin en los clusters de alta disponibilidad. Cada vez se busca ms tener un cluster de mayor nmero de nodos pero ms pequeos en tamao y prestaciones. Desde un punto de vista general, una solucin de alta disponibilidad consiste en dos partes: la infraestructura de alta disponibilidad y los servicios. La infraestructura consiste en componentes software que cooperan entre s para permitir que el cluster aparezca como un nico sistema. Sus funciones incluyen monitorizar los nodos, los procesos de interrelacin entre nodos, controlar el acceso a los recursos compartidos y asegurar la integridad de los datos y la satisfaccin de los requerimientos del usuario. La infraestructura debe proveer de estas funcionalidades cuando el cluster est en estado estable y, lo que es ms importante, cuando algunos nodos dejan de estar operativos. Los servicios de alta disponibilidad son clientes de la infraestructura, y usan las facilidades que exporta ese nivel para mantener en todo momento el servicio a los usuarios. Normalmente hay una degradacin del sistema cuando algn nodo cae, pero no una interrupcin del servicio. Los servicios que se mantienen tpicamente sobre este tipo de clusters son las bases de datos, los sistemas de ficheros, los servidores de correo y los servidores web. Y en general, sern utilizados para tareas crticas o servicios ofrecidos por una empresa, grupo de investigacin o institucin acadmica, que no puedan, por sus caractersticas concretas, interrumpir el servicio. La adaptacin ms comn que debe sufrir una aplicacin para poder ser ejecutada en un cluster de alta disponibilidad implementado sobre GNU/Linux, es aadir scripts. Existen APIs para trabajar cmodamente con alta disponibilidad; todas ellas incluyen mtodos que permiten el switchover y el failover y que permiten arrancar, parar o monitorizar una aplicacin por mencionar algunas de sus funcionalidades.

La infraestructura puede ser parte del ncleo del sistema operativo o puede ser una capa situada encima. Integrar la infraestructura en el sistema operativo tiene como ventaja la eficiencia y la facilidad de uso. La principal ventaja de una capa separada es que se independiza la solucin de alta disponibilidad del sistema operativo, con lo que resulta ms portable. En cualquier caso el sistema debe tener la capacidad de aparecer como un nico sistema (SSI Single System Image). En caso de un cluster de alta disponibilidad los elementos ms importantes para asegurar esta apariencia nica son el sistema de ficheros global, dispositivos globales y la red global. El balanceo de carga concepto que desarrollaremos en el siguiente apartado tambin se convierte en una importante cuestin cuando se habla de clusters de alta disponibilidad. El integrar soluciones para ambos requerimientos acarrea un aumento de tamao y complejidad en el cluster. La principal cuestin relacionada ntimamente con el concepto de balanceo de carga en un cluster de alta disponibilidad, es la toma de la decisin de qu nodo debe hacerse cargo de las aplicaciones de otro que ha fallado. La decisin puede ser dirigida por recurso (resourcedriven), cuando la decisin se toma en funcin de los recursos de que dispone el nodo de apoyo, o dirigidaporusuario (user driver), cuando es el usuario quien define las prioridades. Si los nodos se encuentran en estado estable, el balanceo de carga puede implementarse de manera similar al balanceo de carga de un cluster sin alta disponibilidad. En el siguiente apartado veremos el proyecto Linux Virtual Server que ofrece una solucin de cluster de servidores basada en la combinacin del balanceo de carga con la alta disponibilidad. Software para Clusters de Alta Disponibilidad La herramienta Kimberlite est especializada en almacenamiento compartido de datos y mantenimiento de la integridad de los mismos, con lo que es interesante para este tipo de clusters. El paquete Piranha permite a los servidores Linux proveer alta disponibilidad

sin la necesidad de invertir cantidades mayores en hardware, ya que basa el clustering en software. Puede ser utilizado de dos modos, bien como una solucin de alta disponibilidad en dos nodos o una solucin de balanceo de carga multinodo. Piranha puede configurar un servidor de respaldo en caso de fallo de la contraparte. Tambin puede hacer que el cluster aparezca como un servidor virtual. Uno de los proyectos ms conocidos en este campo es el LinuxHA (High Availability Linux Project), dentro de este proyecto se proporcionan herramientas variadas para la construccin y explotacin de este tipo de clusters. Otro proyecto es Poor Man's High Availability, que usa el servicio de DNS para dar una solucin simple para disponibilidad de servidores Web. 3.4.7 Balaceo de Carga Con el crecimiento de Internet en los ltimos aos el trfico en la red ha aumentado de forma radical y con l, la carga de trabajo que ha de ser soportada por los servidores de servicios, especialmente por los servidores web. Para soportar estos requerimientos hay dos soluciones: o bien el servidor se basa en una mquina de altas prestaciones, que a largo plazo probablemente quede obsoleta por el crecimiento de la carga, o bien se encamina la solucin a la utilizacin de la tecnologa de clustering para mantener un cluster de servidores. Cuando la carga de trabajo crezca, se aadirn ms servidores al cluster. Hay varias formas de construir un cluster de balanceo de carga. Una solucin basada en mantener varios servidores aunque no se trate de un cluster propiamente es utilizar un balanceo de carga por DNS. En este caso, se asigna un mismo nombre a distintas direcciones IP y se realiza un roundrobin a nivel de DNS entre ellas. En una situacin ideal la carga se repartir equitativamente entre los distintos servidores. Sin embargo, los clientes c achean los datos del DNS, con lo que la carga no va a repartirse equitativamente y quedara desbalanceada. Adems, an cuando el balanceo de los accesos de los clientes a los servicios se haga de forma balanceada, estos

clientes pueden solicitar cargas muy distintas de trabajo al servidor al que se conectan: mientras un cliente puede querer tan slo ver una pgina, otro puede solicitar un buen nmero de ellas. Por otra parte, si un servidor cae, se van a seguir redirigiendo peticiones a l. Una solucin mejor es utilizar un balanceador de carga para distribuir sta entre los servidores de un cluster. En este caso el balanceo queda a nivel de conexin, con una granularidad ms fina y con mejores resultados. Adems, se podrn enmascarar ms fcilmente las posibles cadas de los nodos del cluster. El balanceo de carga puede hacerse a dos niveles: de aplicacin y a nivel IP. Sin embargo, el balanceo a nivel de aplicacin puede provocar efectos de cuello de botella si el nmero de nodos es grande. Cada solucin debe elegirse en funcin de las necesidades del problema al que hacemos frente. El Linux Virtual Server utiliza balanceo a nivel IP. El proyecto Linux Virtual Server (LVS) ofrece parches y aplicaciones de mantenimiento y gestin que permiten construir un cluster de servidores que implementa alta disponibilidad y balanceo de carga sobre el sistema operativo GNU/Linux. El sistema aparece al usuario externo como un nico servidor (en realidad, como un nico servidor virtual). Cada uno de los servidores reales que forman el cluster, es controlado por un nodo director que se encarga de realizar el balanceo de carga. Este director corre un sistema operativo GNU/Linux con un kernel parcheado para incluir el cdigo ipvs, que es la herramienta ms importante ofrecida por el proyecto LVS. El director puede ser entendido en trminos generales como un router con un conjunto concreto de reglas de enrutamiento. Cuando un cliente solicita un servicio al servidor virtual, el director escoge un servidor real para que lo ofrezca. Desde ese momento el director debe mantener la comunicacin entre el cliente y el servidor real. Esta asociacin entre cliente y servidor real va a durar slo lo que dure la conexin tcp establecida; cuando se inicie una nueva

conexin el director escoger de nuevo un servidor real que puede ser distinto del anterior. As, si el servicio ofrecido es una pgina web, el cliente podra obtener las imgenes o los textos desde distintos servidores reales ocultos por el servidor virtual. Con esta arquitectura, adems del balanceo de carga, estamos permitiendo que los servidores reales individuales puedan ser extrados del LVS, actualizados o reparados y devueltos al cluster sin interrumpir la prestacin de servicio. Asimismo, el sistema es fcilmente escalable. La alta disponibilidad en LVS se disea utilizando software mon, heartbeat, fake y coda, que se utilizan para gestionar la alta disponibilidad y para mantener una gestin segura, la comunicacin (hearbeat) entre mquinas y un sistema de ficheros tolerante a fallos, respectivamente. Software para Clusters de Balanceo de Carga Uno de los proyectos ms conocidos en este campo es el Linux Virtual Server Project (LVS). Usa balanceo de carga para pasar las peticiones a los servidores y puede virtualizar casi cualquier servicio TCP o UDP, tales como HTTP(S), DNS, POP, IMAP, SMTP, y FTP. Muchos proyectos de balanceo de carga estn basados en LVS (UltraMonkey, Piranha, Keepalived). El Zeus Load Balancer no est basado en LVS pero ofrece una funcionalidad similar. Pen es otro proyecto no basado en LVS y que es un simple balanceador de carga para servicios basados en TCP como HTTP o SMTP. Por ltimo, el balanceo de carga y software de monitorizacin de Turbolinux Cluster Server permiten la deteccin y recuperacin de errores de hardware y software (si la recuperacin es posible).

3.5 Aspectos a considerarse de la tecnologa de Clusters.


Para disear, implementar, probar y mantener un cluster se requiere un entendimiento bsico pero claro de hardware de computadoras, de redes de computadoras y de

sistemas operativos, y la habilidad para investigar algunos tpicos especializados, como dispositivos de interconexin de alta velocidad, talvez reintroducirse a lenguajes de programacin como FORTRAN, y libreras para el desarrollo de aplicaciones como MPI. Una vez escogido un sistema operativo, dgase Linux, se requiere algo de experiencia en la administracin de sistemas Linux y en la forma de realizar conexiones de red. En trminos generales, es necesario tener un adecuado entendimiento referente a varios aspectos de los clusters: Diseo, implementacin, configuracin, realizacin de pruebas de los clusters. Identificacin de las aplicaciones que pueden beneficiarse de la tecnologa de clusters. Desarrollo de las aplicaciones a ejecutarse en los clusters. Conocimiento de las limitaciones del rendimiento de los clusters. Formas de realizar una administracin efectiva de los clusters.

Finalmente, las condiciones del lugar en donde se instalar el cluster deben considerarse; restricciones de espacio, necesidades de alimentacin de energa, aire acondicionado, espacio para el cableado, racks necesarios, etc. 3.6.2 Instalacin Una vez que el diseo del cluster est concluido, se procede al ensamblaje de todo el sistema. Se debe preparar el sitio de instalacin, se debe ensamblar y verificar el hardware, y se debe instalar y configurar el software. El tamao del cluster, y quien realice las tareas mencionadas, determinarn el tiempo necesario. Respecto al software, para muchos es la parte mas compleja e invisible del cluster, y la consideran la mas difcil de tener corriendo de forma consistente. Algunos de los principales componentes del software son: El sistema operativo y drivers para los dispositivos. Compiladores y libreras de desarrollo de aplicaciones. Libreras especiales para HSI. Planificacin de tareas y balanceo de carga. Servicios de autenticacin y autorizacin. Sistema de archivos para el cluster. Herramientas de administracin del sistema. Aplicaciones. 3.6.3 Pruebas En esta etapa se verifica la operacin del cluster como un nico recurso y se busca cumplir las metas de rendimiento y estabilidad. Aqu se pueden encontrar cuellos de botella debidos a las interconexiones de red, o debidos a la configuracin del software, o a problemas con las polticas de seguridad, planificacin de tareas o balanceo de carga Se desarrolla en realidad un proceso de prueba, correccin y nuevas pruebas. 3.6.7 Administracin Existen diversas maneras de coordinar las actividades de las tareas esclavas, y en general, de llegar a la respuesta. Algunas estrategias hacen mejor uso de los recursos

3.6 Diseo, Instalacin, Pruebas y Administracin de los Clusters


3.6.1 Diseo Se debe entender el propsito del cluster: es para correr una aplicacin (solucionar un problema) en particular o es de propsito general, para ejecutar mltiples aplicaciones paralelas. Definiendo estos aspectos y requerimientos de rendimiento, puede determinarse el nmero total de nodos participantes, el nmero y tipo de CPUs en cada nodo, el tipo de HSI (High Speed Interconnects), los requerimientos de los switches, estimados de costos y tiempo para construccin, el sistema operativo, middleware, y libreras de desarrollo (MPI, PVM). En clusters de gran tamao, puede ser necesario realizar benchmarking en un nodo para determinar requerimientos de velocidad de la memoria, caractersticas de I/O, rendimiento del CPU, etc. Pruebas del rendimiento de las tarjetas de red y switches, en conjunto con el software que se utilizar en el cluster pueden ser tambin necesarias.

que otras, algunas minimizan el tiempo empleado, algunas son mas fciles de implementar, y otras son mas resistentes a fallas.

3.7 Ejemplos de Clusters


Google. Este buscador debe atender, en promedio, ms de 200 millones de consultas por da (2,315 consultas por segundo). Debe almacenar la informacin indexada de ms de 3 mil millones de pginas web en 36 idiomas y ms de 35 millones de documentos en formatos distintos a HTML accesibles a travs de su mquina de bsqueda (web profundo). Google opera con un Cluster de ms de 10,000 sistemas Linux. WebArchive.Org es una hemeroteca digital de Internet, donde se puede encontrar la informacin de ms de 5 aos de la web, representando esto una base de datos con ms de 100TB de informacin. A travs de su Mquina de Tiempo (The Wayback Machine) se pueden consultar ms de 10 mil millones de pginas. La tecnologa de cluster utilizada por la Mquina del Tiempo consta de un Cluster de cerca de 400 mquinas. La NASA usa Beowulf, desde 1994 cuando surgi el modelo hasta hoy, que siguen utilizando este tipo de clusters para el trabajo en laboratorios universitarios y equipos de investigacin. NOAA (The National Oceanic and Atmospheric Administration) utiliza varios clusters de diversas tecnologas en sus proyectos. Su grupo HPCC (High Performance Computing and Communications) trabaja sobre diversas reas de supercomputacin, balanceo de carga y alta disponibilidad.

Conclusiones
1. El Clustering es una tecnologa econmica pero que brinda grandes ventajas en escalabilidad y disponibilidad ms que los sistemas convencionales de multiprocesamiento, que adems de ser costosas no han cumplido con los requerimientos de resistencia a fallos.

2. Los clusters al ser sistemas redundantes son ms confiables, o sea que si cae un nodo, el trabajo es compartido por los otros nodos y el sistema sigue funcionando y la informacin no se pierde. 3. Debido a su bajo costo, alto rendimiento, escalabilidad y disponibilidad; es importante adquirir, adaptar, aplicar, difundir y propiciar el empleo de la tecnologa de clusters en diversas reas, sean stas acadmicas, cientficas o comerciales. Se puede obtener una mejor relacin costo/beneficio de las inversiones en infraestructuras y acceder a campos que resultaban prohibitivos por los elevados montos de inversin. 4. La Ley de Amdahl deja de manifiesto un concepto esencial para la planeacin y utilizacin de cualquier tipo de mquina paralela: el incremento en velocidad que podemos obtener est limitado por el algoritmo que emplee nuestra aplicacin, y no por el nmero de procesadores. 5. Para incursionar de forma efectiva en nuestro pas en las reas comerciales y cientficas, y que stas se beneficien de los clusters, existe la necesidad de un adecuado entendimiento de lo que la computacin con clusters puede ofrecer: cmo los clusters de computadoras pueden construirse (identificando configuraciones y tecnologas de interconexin), cmo pueden desarrollarse las aplicaciones (herramientas e infraestructuras de desarrollo), cules son las limitaciones de rendimiento de los clusters, cmo se pueden administrar los clusters de forma efectiva, cules aplicaciones pueden beneficiarse de esta tecnologa. 6. La principal desventaja de este sistema es que la administracin de muchas mquinas interconectadas implica una mayor atencin y conocimiento que la administracin de una gran mquina con muchos procesadores.

Referencias

1]

Snchez Enriquez, Heider Ysaas, Clustering y Grid Computing, Escuela de Informtica, Universidad Nacional de Trujillo, 2007.

12]

2] David Gutirrez Daz, Abel Gonzlez Prez,


Juan Pedro Febles Rodrguez, El Cluster Beowulf Del Centro Nacional De Bioinformtica: Diseo, Montaje y Evaluacin Preliminar, 2003.

Douglas Eadline, High Performance Computing For Dummies, 2009. Bernal C. Ivn, Meja N. David y Fernndez A. Diego, Computacin de Alto Rendimiento con Clusters de PCs, Escuela Politcnica Nacional Quito-Ecuador.

3]

Jos Miguel Alonso, Programacin de aplicaciones paralelas con MPI (Message Passing Interface) Facultad de Informtica UPV/EHU, 1997. Freddy J. Perozo Rondn, Cluster Mangosta: Implementacin y Evaluacin, Departamento de Computacin Facultad de Ciencias y Tecnologa FACyT, Universidad de Carabobo Valencia, Edo. Carabobo, Venezuela. 2008. Manrique M., Construccin y Evaluacin de Desempeo de un Cluster tipo Beowulf para Cmputo de alto Rendimiento. al Clustering con MPI, 1er. Ciclo de Conferencias Abiertas de Ing. en Computacin.

4]

5] Daniel

6] Javier Jorge, Alberto Villafae, Introduccin

7] Blaise Barney, Introduction to Parallel


Computing, Lawrence Livermore National Laboratory.

8] Gilberto

Diaz , High Performance Computing on Linux Cluster, Universidad de Los Andes Mrida Venezuela, 2003. las Tecnologas de Clustering en GNU/Linux.

9] Rosa Mara Yez Gmez, Introduccin a 10] Jos Pastor Ranilla, High Permformance
Compuitng Cluster (HPCC), 2009.

11] Miguel

Abarca Castro, Distribuidos: Estructuracin Cluster, 2008.

Sistemas de un

Vous aimerez peut-être aussi