Prueba

4
ADMINISTRACIÓN • OpenSSI 64 Número 36 WWW.LINUX-MAGAZINE.ES U n cluster SSI (Single System Image) es un conjunto de ordena- dores que aparece como un único sistema multiprocesador. Normalmente se implementan a nivel del kernel. En los clusters SSI de alto rendimiento los programas no tienen por qué notar que se están ejecutando en uno de ellos. El único requisito es que los programas des- plieguen múltiples procesos, los cuales se asignan de forma transparente entre los ordenadores del cluster. Aunque los clusters SSI no son tan esca- lables como algunos otros tipos, ofrecen sin embargo la significativa ventaja de que los programas que se ejecutan en el sis- tema no tienen que conocer la existencia del cluster en el que se están ejecutando. Otras plataformas de alto rendimiento basadas en clusters requieren que el código fuente de los programas contengan código propio del cluster, o al menos que el pro- grama se enlace con alguna librería de éste. OpenSSI es una solución de cluster SSI extensa de código abierto para Linux basada en la plataforma cluster NonStop de HP. NonStop deriva de Locus, que se desarrolló en los ochenta. OpenSSI puede repartir los procesos de forma transparente entre múltiples máqui- WWW.LINUX-MAGAZINE.ES nas, característica conocida como nivelado de carga [1]. Otras plataformas de cluster SSI para Linux capaces de realizar el nive- lado de carga son openMosix y Kerrighed. OpenMosix es el cluster SSI más popular de Linux. En julio se anunció que el pro- yecto openMosix terminaría en marzo de 2008. Kerrighed es relativamente nuevo, encontrándose actualmente en una fase de desarrollo rápido. En este artículo mostraremos cómo montar el nivelado de carga en OpenSSI. Comenzaremos con un resumen de las características relevantes de OpenSSI, y seguiremos con la descripción de la insta- lación y configuración del sistema antes de utilizar el cluster para compilar el código fuente entre distintas máquinas al mismo tiempo. Por último presentaremos una herra- mienta para la gestión y la monitorización visual de OpenSSI. OpenSSI monitoriza constantemente la carga en los ordenadores del cluster y migra automáticamente los procesos entre los nodos. Este sistema es capaz de migrar una aplicación multihebra, pero no es capaz de migrar hebras individualmente. Un proceso migrado puede continuar con las mismas operaciones que estaba reali- zando en la máquina original, puede leer y escribir en los mismos ficheros o dispositi- vos e incluso puede continuar una comu- nicación interproceso (IPC) sobre una tubería o un socket. La mayoría de las aplicaciones se ejecu- tan en OpenSSI sin ninguna modificación, con algunas excepciones, tal y como se indica en la página de ayuda del comando migrate. OpenSSI también proporciona una librería que los programas pueden uti- lizar para controlar el cluster. Características de Administración La vista del sistema de ficheros es la misma desde cada máquina; sin embargo, el conte- nido de un fichero particular puede ser dife- rente en cada ordenador del cluster. Esto sucede debido al fenómeno conocido como CDSL (Context-Dependent SymLinks). Un CDSL es un enlace simbólico que apunta a diferentes contenidos de fichero en cada máquina. Los dispositivos de una máquina local están disponibles en /dev, como es habitual, y los dispositivos de las otras máquinas están accesibles por medio de subdirectorios especiales en /dev. La gestión de los procesos se realiza por todo el cluster. El cluster completo comparte El sistema OpenSSI reorganiza los procesos para ser usados por el cluster de manera sencilla y transparente. POR ALEKSANDER KORZYNSKI REINA DE LA VELOCIDAD Montaje de Clusters de Alto Rendimiento con OpenSSI www.sxc.hu

description

Prueba Revista

Transcript of Prueba

Page 1: Prueba

ADMINISTRACIÓN • OpenSSI

64 Número 36 W W W . L I N U X - M A G A Z I N E . E S

Un cluster SSI (Single SystemImage) es un conjunto de ordena-dores que aparece como un único

sistema multiprocesador. Normalmente seimplementan a nivel del kernel.

En los clusters SSI de alto rendimientolos programas no tienen por qué notar quese están ejecutando en uno de ellos. Elúnico requisito es que los programas des-plieguen múltiples procesos, los cuales seasignan de forma transparente entre losordenadores del cluster.

Aunque los clusters SSI no son tan esca-lables como algunos otros tipos, ofrecensin embargo la significativa ventaja de quelos programas que se ejecutan en el sis-tema no tienen que conocer la existenciadel cluster en el que se están ejecutando.Otras plataformas de alto rendimientobasadas en clusters requieren que el códigofuente de los programas contengan códigopropio del cluster, o al menos que el pro-grama se enlace con alguna librería de éste.

OpenSSI es una solución de cluster SSIextensa de código abierto para Linuxbasada en la plataforma cluster NonStopde HP. NonStop deriva de Locus, que sedesarrolló en los ochenta.

OpenSSI puede repartir los procesos deforma transparente entre múltiples máqui-

W W W . L I N U X - M A G A Z I N E . E S

nas, característica conocida como niveladode carga [1]. Otras plataformas de clusterSSI para Linux capaces de realizar el nive-lado de carga son openMosix y Kerrighed.

OpenMosix es el cluster SSI más popularde Linux. En julio se anunció que el pro-yecto openMosix terminaría en marzo de2008. Kerrighed es relativamente nuevo,encontrándose actualmente en una fase dedesarrollo rápido.

En este artículo mostraremos cómomontar el nivelado de carga en OpenSSI.Comenzaremos con un resumen de lascaracterísticas relevantes de OpenSSI, yseguiremos con la descripción de la insta-lación y configuración del sistema antes deutilizar el cluster para compilar el códigofuente entre distintas máquinas al mismotiempo.

Por último presentaremos una herra-mienta para la gestión y la monitorizaciónvisual de OpenSSI.

OpenSSI monitoriza constantemente lacarga en los ordenadores del cluster ymigra automáticamente los procesos entrelos nodos. Este sistema es capaz de migraruna aplicación multihebra, pero no escapaz de migrar hebras individualmente.Un proceso migrado puede continuar conlas mismas operaciones que estaba reali-

zando en la máquina original, puede leer yescribir en los mismos ficheros o dispositi-vos e incluso puede continuar una comu-nicación interproceso (IPC) sobre unatubería o un socket.

La mayoría de las aplicaciones se ejecu-tan en OpenSSI sin ninguna modificación,con algunas excepciones, tal y como seindica en la página de ayuda del comandomigrate. OpenSSI también proporcionauna librería que los programas pueden uti-lizar para controlar el cluster.

Características deAdministraciónLa vista del sistema de ficheros es la mismadesde cada máquina; sin embargo, el conte-nido de un fichero particular puede ser dife-rente en cada ordenador del cluster. Estosucede debido al fenómeno conocido comoCDSL (Context-Dependent SymLinks).

Un CDSL es un enlace simbólico queapunta a diferentes contenidos de fichero encada máquina. Los dispositivos de unamáquina local están disponibles en /dev,como es habitual, y los dispositivos de lasotras máquinas están accesibles por mediode subdirectorios especiales en /dev.

La gestión de los procesos se realiza portodo el cluster. El cluster completo comparte

El sistema OpenSSI reorganiza los procesos para ser usados por el cluster de manera sencilla y transparente.

POR ALEKSANDER KORZYNSKI

REINA DE LAVELOCIDAD

Montaje de Clusters de Alto Rendimiento con OpenSSI

ww

w.sxc.h

u

064-067_OpenSSi1LM36 12/2/08 8:10 pm Página 64

Page 2: Prueba

OpenSSI • ADMINISTRACIÓN

65Número 36W W W . L I N U X - M A G A Z I N E . E S

un espacio único PID, con un único espaciode nombres para cada objeto IPC.

Además, el sistema de ficheros /proc semodifica para mostrar la información detodos los procesos del cluster.

Muchas herramientas estándar del sis-tema funcionan con OpenSSI sin modifica-ciones, aunque algunas de ellas están espe-cíficamente adaptadas a OpenSSI. Loscomandos ps o top, por ejemplo, muestranprocesos que se ejecutan en todos los orde-nadores del cluster.

VersionesEl proyecto OpenSSI soporta tanto las ramasde versiones estables como las dedesarrollo. Las versiones estables se nume-ran con 1.2.x, y las de desarrollo con la serie1.9.x. La rama estable se basa en el kernelde Linux 2.4.x, y la rama en desarrollo en elkernel 2.6.x. La última versión estable esOpenSSI 1.2.2, que está basada en el kernel2.4.22. La última versión en desarrollo es la1.9.2, que está basada en el kernel 2.6.10.

OpenSSI se distribuye por medio depaquetes específicos. Las series establesestán disponibles para Fedora Core 2,Debian 3.1 (Sarge) y Red Hat 9.

Las versiones en desarrollo están disponi-bles para Fedora Core 3 y Debian 3.1(Sarge). También puede encontrarse unaversión en Live CD que ejecuta OpenSSI 1.2y que está basada en Knoppix 3.6.

HardwarePara crear un cluster OpenSSI se necesitanal menos dos PCs y una red de área local.La red utilizada para la conexión de lasmáquinas del cluster se denomina interco-nexión. Cuanto más rápida sea la interco-nexión, mejor será el rendimiento obte-nido.

Si se está utilizando el Live CD deOpenSSI, ninguna de las máquinas tiene porqué tener un disco duro. Una de las máqui-nas arrancará del CD-ROM, y el resto lo harádesde la red. Para la instalación tradicionalbasada en el disco duro sólo es necesarioque una de las máquinas tenga el disco duro.

Las máquinas que arrancan por la redpueden comenzar el proceso de arranquepor medio de un disquete, un CD-ROM opor una pequeña partición en el disco duro,o bien desde una tarjeta de red capaz dearrancar desde la red.

Si deseamos que el cluster sea accesibledesde la red exterior, sería buena idea confi-gurar otra tarjeta de red en una de lasmáquinas en vez de utilizar la interconexión

para este propósito. Podrá accederse a cual-quier ordenador del cluster desde lamáquina con las dos tarjetas de red.

Init y Non-InitOpenSSI es difícil de instalar. La documen-tación oficial llama al proceso “algo tosco”.Es bastante aconsejable estar muy bienfamiliarizado con la distribución que se estéutilizando, de modo que se puedan investi-gar y solventar los posibles problemas.

En OpenSSI hay un nodo especial deno-minado nodo init. Éste arranca directa-mente desde el sistema de ficheros raíz. Elresto de los nodos arrancan desde la red.

Para arrancar los nodos non-init por lared es necesario Etherboot o PXE. Etherbootes software libre y se instala en un medioque permita el arranque, como un disquete,un CD o un disco duro, o bien se graba en lamemoria ROM de la tarjeta de red.

La mayoría de las tarjetas de red son com-patibles con Etherboot. PXE, por otro lado,ya se encuentra integrada en algunas tarje-tas de red y normalmente se habilita desdeel menú de la BIOS.

Instalación desde un LiveCDLa forma más sencilla de comenzar conOpenSSI es arrancando desde el Live CD;sin embargo, hay que afrontar dos proble-mas con el Live CD. El primero de ellos esque la tarjeta de red no esté soportada.

Como el Live CD está basado en el kernel2.4.22, ya antiguo, puede ser que no reco-nozca muchos modelos de tarjeta. Por ejem-plo, no reconoce mi tarjeta de red, que sefabricó en 2007.

El otro problema es que, al contrario de loque dice la documentación oficial, el LiveCD tiene problemas con Etherboot. Sólosoporta bien el sistema PXE. Se ha infor-mado de este fallo a través de la lista decorreo de OpenSSI. Hay que comprobar si latarjeta es compatible con PXE. Si no se esuno de los afortunados, habrá que saltar a lainstalación en disco duro.

Para arrancar el Live CD hay que descar-gar la imagen ISO del CD [2]. Será necesariograbarla en un único CD, con el cual searranca uno de los nodos, el resto se arrancadesde la red.

Configuración del ClusterVamos a mostrar paso a paso cómo configu-rar un cluster con dos nodos. El primero deellos será el nodo init y el otro será el non-init.

En primer lugar se debe entrar en laconfiguración de la BIOS del nodo non-init yactivar PXE. A continuación, se reinicia elnodo. Mostrará su dirección MAC y se que-dará a la espera de que arranque el servidor.La dirección MAC debe anotarse en unpapel.

Ahora se arranca el nodo init desde elLive CD. Es preciso esperar a que aparezca

La rama de desarrollo es una variantede la rama estable del kernel 2.6 ypara las distribuciones nuevas deLinux. Hereda las ventajas del kernel2.6, como los planificadores de E/Smejorados, mayor escalabilidad,mejor soporte del hardware y unamáquina virtual mejorada.

Añade soporte para ejecutar OpenSSIen los entornos de las máquinas vir-tuales de Xen y Linux KVM. La pró-xima versión incluirá nuevas mejoras.

Al tiempo de escribir este artículo, noposee ningún bug notable. Seobserva uno cuando un proceso queha sido movido de una máquina aotra está a la escucha de un socketTCP/IP. En particular, el bug afecta alcluster de alto rendimiento SSI y noafecta a los servicios web o al clusterde alta disponibilidad.

El equipo de OpenSSI tiene un mapade rutas muy ambicioso. De acuerdo

con Roger Tsang, desarrollador deOpenSSI, la próxima versión en larama de desarrollo será la 1.9.3. Sebasará en el kernel de Linux 2.6.11 eincluirá mejoras para los clusters dealta disponibilidad, el sistema deficheros del cluster y el núcleo deOpenSSI. También añadirá soporteexperimental para la arquitectura dered Infiniband.

Otros planes incluyen la migración aserie estable 2.6.16.x del kernel deLinux. Actualmente se están reali-zando las migraciones a Red HatEnterprise Linux 5 y a CentOS 5. Tam-bién está en desarrollo el soporte delhardware de x86_64.

Una vez que la rama 1.9 sea estable,se convertirá en OpenSSI 2.0.0. Comouna tarea a largo plazo, los desarrolla-dores continuarán trabajando en elkernel de Linux para su inclusión en larama principal del kernel.

Rama de Desarrollo

064-067_OpenSSi1LM36 12/2/08 8:10 pm Página 65

Page 3: Prueba

configurado el nodo init,podrá añadirse otro nodoal cluster.

Se reinicia el nodo non-init y a continuación hayque esperar a que apa-rezca el prompt del sis-tema operativo. Tecle-ando cluster -v se puedeconfirmar que el nodonon-init ha arrancandocorrectamente.

Si el nuevo nodo noarranca, se puede probara reiniciar el servidor dearranque y reiniciar elnodo non-init. Este pasoes a veces necesario, ya que el servidor dearranque no contesta dos veces a la mismamáquina. Para reiniciar el servidor de arran-que se introduce el siguiente comando en elnodo init:

# /etc/init.d/dhcp restart# /etc/init.d/inetd restart

Si no se ha quedado bloqueado debido a losproblemas de compatibilidad con el hard-ware, ahora tendrá un cluster SSI en ejecu-ción. Pasamos a la sección de configuracióndel nivelador de carga.

Instalación en el Disco DuroPara su uso real en un sistema en produc-

ción hay que instalar OpenSSIen el disco duro. Esta instala-ción tarda más que la simpleejecución del Live CD y no seva a describir aquí en detalle.Sin embargo, indicaremosdónde buscar las instruccionesdetalladas.

En la página de descarga deOpenSSI [2] se encuentranenlaces a las guías Cómo Insta-lar de cada versión de OpenSSI.Una vez que se haya instaladoOpenSSI, puede encontrarse lainformación para configurardiversas características en [3].

Nivelado de CargaUna vez instalado y en ejecu-ción un cluster OpenSSI básico,puede configurarse el niveladode carga para el mismo. Paraindicarle a OpenSSI que confi-gure el nivelado de carga paraun programa, se puede poner el

nombre del programa en la lista del nive-lado de carga o ejecutar una shell especial,bash-ll, antes de invocar al programa.

Si el programa se encuentra en la listade nivelado de carga, todos los procesosque cree y todos sus descendientes seránnivelados. Si se está ejecutando el Live CDo Debian, la lista se encuentra en /clus-ter/etc/loadlevellist. Si se está ejecutandoFedora, la lista se encuentra en/etc/sysconfig/loadlevellist.

Para configurar la shell especial bash-ll,deberá copiarse la shell bash estándar aun fichero denominado bash-ll. Tambiénhay que poner bash-ll en la lista de nive-lado de carga. Ahora, si se quiere que unprograma sea nivelado, se ejecuta bash-ll.Cada proceso que comience en esta nuevashell y todos sus procesos hijos seránnivelados.

Para completar la configuración serápreciso crear un enlace duro que apunte abash llamado bash-ll.

$ ln /bin/bash /bin/bash-ll

En Fedora, bash-ll está configurado pordefecto. En el Live CD, bash-ll no está con-figurado por defecto. En Debian, bash-llestá parcialmente configurado.

Probando el Nivelado deCargaPara probar la configuración puede ejecu-tarse la demo que viene con OpenSSI.

La demo funciona de la siguientemanera. Primero se deshabilita el nive-lado. Se ejecuta un programa de demostra-ción especialmente preparado. Cadasegundo, el programa muestra informa-ción de cuántos datos está procesando porsegundo. Tras habilitar el nivelado de

el prompt del sistema operativo. Si no sepuede arrancar a causa de problemas hard-ware, habrá que probar la instalación en eldisco duro. Utilizar la serie 1.9.x de OpenSSIen vez de la 1.2.x puede ser de ayuda.

Si se consigue arrancar desde el Live CDdebería obtenerse ahora el prompt del sis-tema. Se deberá configurar el nodo init paraque acepte el otro nodo del cluster, para locual se ejecuta ssiaddnode. Habrá que res-ponder a una serie de preguntas. A la pri-mera cuestión se responde con y para acti-var los mensajes de ayuda. A continuaciónsolicita que se elija un número de nodo.Deberá introducirse un número entre 2 y125. Ahora preguntará por la dirección MACdel nodo. Se introduce la dirección que seanotó anteriormente.

Téngase en cuenta que los números hayque separarlos por el carácter dos puntosindependientemente de cómo PXE hayamostrado la dirección. Seguidamente solici-tará una dirección IP para el nuevo nodo.Hay que teclear una dirección en el espacio10.x.x.x, por ejemplo, 10.0.0.2. (El nodo inittiene asignada ya la dirección 10.0.0.1).Cuando pregunte si el nodo va a arrancarpor PXE o Etherboot, se deberá teclear Ppara PXE. También deberá hacerse con unnombre para el nodo, por ejemplo, Knop-pix2. (El nodo init ya tiene el nombre Knop-pix1).

Para finalizar, se pulsa dos veces la teclaEnter para aceptar la configuración. Una vez

ADMINISTRACIÓN • OpenSSI

66 Número 36 W W W . L I N U X - M A G A Z I N E . E S

user@debian:~$ demo-proclb -m 1800 in_file Forkedchild 50 / 501: 0 ##### |1800: 575 recs/sec2: 0 ####### |1800: 812 recs/sec3: 0 ####### |1800: 833 recs/sec4: 0 ####### |1800: 837 recs/sec5: 0 ####### |1800: 841 recs/sec6: 0 ####### |1800: 833 recs/sec7: 0 ####### |1800: 835 recs/sec8: 0 ####### |1800: 835 recs/sec9: 0 ####### |1800: 817 recs/sec10: ####### |1800: 791 recs/sec11: 0 ########## |1800: 1183 recs/sec12: 0 ############ |1800: 1431 recs/sec13: 0 ########### |1800: 1375 recs/sec14: 0 ############ |1800: 1425 recs/sec15: 0 ########## |1800: 1172 recs/sec16: 0 ############# |1800: 1592 recs/sec 17: 0 ########### |1800: 1320 recs/sec18: 0 ############ |1800: 1486 recs/sec19: 0 ############# |1800: 1504 recs/sec 20: 0 ############ |1800: 1479 recs/sec21: 0 ############ |1800: 1477 recs/sec

Listado 1: Demostración delNivelado de Carga

Figura 1: La herramienta de gestión webView permite la monito-

rización de los nodos del cluster.

064-067_OpenSSi1LM36 12/2/08 8:10 pm Página 66

Page 4: Prueba

carga en cualquier momento, los procesosse repartirán por todo el cluster. Puedeobservarse cómo se incrementa la canti-dad total de datos que el programa pro-cesa por segundo.

Si la demo no se encuentra en la instala-ción en el disco duro, puede encontrarse enla página web de OpenSSI. Si se está utili-zando en Live CD, la demo puede estar en/demo-proclb.

Para ejecutar la demo en el Live CDserán necesarios al menos dos nodos en elcluster. En el Live CD, el programa ya estáen la lista de nivelado de carga. El directo-rio de la demo se añadirá en el PATH:

# export PATH=$PATH:/demo-proclb

Ahora desde otra consola en el mismonodo se deshabilita temporalmente elnivelado de carga:

# /etc/init.d/loadlevel stop

En este momento elnivelado de carga estádesactivado. Se vuelve ala consola previa paraejecutar el programa.Éste requiere un ficherode entrada, que puedeser cualquier ficherogrande.

Es posible, por ejem-plo, utilizar la imageninitrd del directorio/boot. Invocando el pro-grama con:

$ d e m o - p r o c l b<fichero_entrada>

debería estar ahora en ejecución.Si se observa durante varios segundos

podrán apreciarse la cantidad de datosprocesados.

El nivelado de carga puede activarse encualquier momento. Para ello, en la otraconsola se ejecuta:

# /etc/init.d/loadlevel start

El nivelado de carga ya está activado y loprocesos empiezan a migrarse entre losnodos. Ya se puede volver a la consola queestá ejecutando la demo.

¿Funciona? Tras unos instantes, la canti-dad total de datos procesados por segundodebería incrementarse. El Listado 1 mues-tra un ejemplo del programa demo funcio-nando. Cada línea representa la cantidadde datos procesados por segundo. El nive-lado de carga se activó en t=9.

Compilación enParaleloSi se es desarrollador de software,puede utilizarse un cluster OpenSSIpara acelerar el compilador. En lapráctica, esta solución sólo es real-mente útil si se utiliza la instalaciónen el disco duro.

El comando make tiene unaopción para dividir la tarea de com-pilación en un número de trabajosen paralelo. La opción es -j.

Para compilar un código fuenteen múltiples máquinas a la vez, seconfigura el nivelado de carga y acontinuación se ejecuta el siguientecomando:

$ make -j N su_proyecto

donde N es un número mayor o igual que elnúmero de nodos. Puede experimentarsecon diferentes valores de N.

Si se tiene instalado OpenSSI en el discoduro, puede instalarse la excelente herra-mienta visual para la monitorización y ges-tión de OpenSSI.

OpenSSI – webViewOpenSSI – webView es una herramientaPHP desarrollada por Kilian Cavalotti. Lainterfaz está dividida en varias solapas.Puede verse la carga en cada nodo del clus-ter (Figura 1), monitorizar el estado decada nodo (Figura 2) o ver las gráficas condiversas estadísticas (Figura 3). Tambiénpueden monitorizarse procesos en cadanodo y migrar manualmente un proceso aotro nodo.

Para utilizar webView, primero hay queinstalar OpenSSI en el disco duro. Se pue-den encontrar instrucciones en línea parainstalar OpenSSI-webView en distribucio-nes como Debian [4] y Fedora [5].

ConclusiónLas características que tiene OpenSSI sonsorprendentes, y la ambición del proyectoes enorme. Sin embargo, las versiones vanbastante atrasadas con respecto aldesarrollo del kernel de Linux. Con elanuncio de que el proyecto openMosix vaa concluir y con Kerrighed bajo desarrollorápido, el futuro de OpenSSI parece pro-metedor. Por el momento no cabe másque disfrutarlo. Puede verse una compara-tiva de rendimiento exhaustiva entreOpenSSI y sus competidores en Lottiaux etal. [6]. �

OpenSSI • ADMINISTRACIÓN

67Número 36W W W . L I N U X - M A G A Z I N E . E S

[1] Introducción a OpenSSI: http://openssi.org/ssi-intro.pdf

[2] Descarga de OpenSSI: http://openssi. org/cgi-bin/view?page=download.html

[3] Documentación de OpenSSI: http://openssi.org/cgi-bin/view?page=docs

[4] OpenSSI webView para Debian:http://wiki.openssi.org/go/OpenSSI_webView

[5] OpenSSI webView para Fedora:http://openssi-webview.sourceforge.net/install.php

[6] OpenMosix, OpenSSI y Kerrighed:Estudio comparativo: http://www.irisa.fr/paris/Biblio/Papers/Lottiaux/LotBoiGalValMor05CCGrid.pdf

RECURSOS

Figura 2: También se puede utilizar webView para ver la informa-

ción del estado.

Figura 3: Las gráficas ofrecen una representación

visual del rendimiento del cluster.

064-067_OpenSSi1LM36 12/2/08 8:11 pm Página 67