Sunteți pe pagina 1din 4

[PC] Como montar un cluster

12 Comentarios
por
JoJo_ReloadeD
- 17/12/2007 a las 20:20 (21242 Visitas)
Andaba esta maana mirando unas cosas en mi blog, y me he encontrado con un articulo que
hice hace ya algun tiempo, y que a alguien le puede parecer interesante.

En el describo paso a paso como construir un cluster con hardware sacado literalmente de la
basura.

En fin, ahi va, espero que os guste

---

Hace no mucho, mi hermano y un amigo me dieron respectivamente estas dos placas base y
micro:
# Placa Asus con un K6-III a 400mhz
# Placa Msi con un P3 a 800mhz

Y bueno, me dije yo, para que voy a usarlos si ya tengo firewall, servidor web y 2 pc's de
escritorio? Obviamente el dejarlos cogiendo polvo no era una opcion xD

Asi que en un principio pense en usar el P3 en algun proyecto de modding perro, meterlo
dentro de la caja de un video vhs o algo asi, pero luego pense que por que no los ponia a
trabajar juntos, y asi de paso veia como funcionaba eso de los clusters.

Un pequeo cluster embebido en una caja sobremesa de un antiguo 8088

Que es un cluster?

Un cluster no es ni mas ni menos que un conjunto de maquinas, conectadas entre si en red y
funcionando en paralelo y compartiendo recursos para conseguir mayor eficacia que un solo
equipo, aunque este sea de gran rendimiento.

Como se consigue esto en el ambito profesional?

Haciendo un cluster de servidores.
Sin ir mas lejos el mayor superordenador de europa, el Mare Nostrum esta formado por 10240
procesadores (Amd Opteron, si no me equivoco) divididos en infinidad de equipos (en
servidores es mas que comun que cada equipo tenga 2 o 4 procesadores) conectados entre si.

Otros ejemplos de supercomputacion conseguida mediante el 'clustering' son las granjas de
renderizado de los grandes estudios de cine, como el de Industrial Light & Magic, que en 2002
construyeron una de estas granjas para la produccion de El ataque de los clones, formado por
2000 equipos comunes (Pentium 4, si no recuerdo mal), como podemos leer aqui.

Y en un plan mas casero como seria?

#

Pues como nosotros quisieramos. La configuracion es exactamente igual para 2 nodos
(maquinas) que para 200.000

En este caso, y con un cluster montado con un P3 a 800 (1600 bogomips) y un K6-III a 400
(800 bogomips) pues como que no se consigue un gran rendimiento (mi P4 a 3000 rinde unos
6000 bogomips) xD, pero como minimo aprendemos, no?

Nota para aquellos que esteis a la que salta: Ya, ya se que los bogomips no son una medida
fiable del rendimiento de una maquina, es solo el tiempo que se tarda en recorrer un bucle del
inicio del kernel, pero sirve para darnos una idea general de la diferencia de rendimiento entre
varias maquinas

Bueno, al tema, he aqui un pequeo tutorial para construir un cluster, en el cual voy a obviar
temas que de entrada deben de estar resueltos tales como:
# Necesitamos n (con n>1) equipos funcionando.
# Dichos equipos tienen que tener un sistema Linux base instalado.
# Dichos equipos tienen que estar conectados en red.
# Haran falta conocimientos acerca de como recompilar el kernel.

Tampoco voy a entrar en discusiones acerca del hardware a usar. Cuanto mas rapido sea, pues
mejor. Es obvio, no ?

Sobre la red a emplear para comunicar las redes, como minimo una ethernet a 10MBits, siendo
recomendable una de 100Mbits. Una gigabit no ofrece una gran diferencia respecto a la de 100,
aun siendo bastante mas cara. En este sentido es mas importante la latencia que el ancho de
banda de la red. Asi que un switch que incorpore un buen algoritmo de balanceo de carga seria
de agradecer.

Bien, teniendo todo esto veamos los fundamentos del clustering:

Necesitamos que un sistema basado por varios equipos se comporten como uno solo y estos se
repartan los trabajos entre ellos de forma trasparente, de forma que el usuario ni se de cuenta
de ello.

En este caso vamos a emplear la solucion que nos da OpenMosiX, que es justamente lo que
necesitamos: Balanceo de carga trasparente y hecha al nivel del kernel. Wapo.

En la practica esto se consigue parcheando un kernel vainilla (uno sin parches) con el
openmosix, y ya el mismo se encargara de todo

Bien, pues vamos alla, bajamos de la web de openmosix el parche del kernel. La ultima version
estable del proyecto es la 2.4.26, asi que necesitaremos tambien el kernel vainilla 2.4.26, el de
kernel.org.

Una vez todo listo y descomprimido en /usr/src, ejecutamos:
Cdigo:
mv /root/openMosix-2.4.26-1.gz /usr/src/linux-2.4.26
cd /usr/src/linux-2.4.26
zcat openMosix-2.4.26-1.gz | patch -Np1
Con lo que el kernel limpio ha sido parcheado con openmosix

A continuacion hay que configurar dicho kernel para nuestra maquina, a divertirse solo hay
que tener en cuenta un nuevo menu, el de openmosix, en el que configuraremos lo siguente,
tal y como viene en el .config :
Cdigo:
...
CONFIG_MOSIX=y
# CONFIG_MOSIX_TOPOLOGY is not set
CONFIG_MOSIX_UDB=y
# CONFIG_MOSIX_DEBUG is not set
# CONFIG_MOSIX_CHEAT_MIGSELF is not set
CONFIG_MOSIX_WEEEEEEEEE=y
CONFIG_MOSIX_DIAG=y
CONFIG_MOSIX_SECUREPORTS=y
CONFIG_MOSIX_DISCLOSURE=3
CONFIG_QKERNEL_EXT=y
CONFIG_MOSIX_DFSA=y
CONFIG_MOSIX_FS=y
CONFIG_MOSIX_PIPE_EXCEPTIONS=y
CONFIG_QOS_JID=y
...
En realidad es como viene por defecto, solo hay que cambiar el CONFIG_MOSIX_DISCLOSURE
a 3, que creo que venia a 1.

Bien, hacemos lo tipico.. make bzImage... modules... configuramos el lilo/grub ... ya sabeis, y
reiniciamos la maquina con el kernel openmosix

Okey, ahora nos hacemos con los utiles para manejar el cluster, es decir, las opemosix_tools.
Las bajamos, las compilamos y las instalamos.

Esto nos creara el fichero de configuracion de openmosix /etc/openmosix.map en el que
configuraremos nuestro cluster.

Este archivo tiene la siguente estructura:
Cdigo:
ID_Nodo IP(o hostname) Tamao
-------------------------------------------
Nodo1 192.168.0.1 1
Nodo2 192.168.0.2 1
Hay que crear en dicho archivo una linea por cada nodo, en la cual pondremos un nombre a
ese nodo (ID_Nodo), su ip (o su hostname especificado en el /etc/hosts de TODAS las
maquinas del cluster) y el tamao (numero de procesadores que tiene el nodo)

Pues ya casi lo tenemos seores, una vez que esto esta configurado en todos y cada uno de los
nodos ejecutaremos:
Cdigo:
setpe -w -f /etc/openmosix.map
Y listo! El cluster esta funcionando de manera trasparente. Podemos monitorizarlo con las
ordenes mps (ps para el cluster) mtop (top para tal...) y mosmon (monitor del cluster).

Solo restaria poner dicha orden en el arranque del sistema, para ello vemos que en las fuentes
del openmosix_tools, en scripts, hay uno muy mono llamado openmosix lo copiamos a
/etc/init.d/ y hacemos un update-rc.d y listo, todo automatico

Bien, pues como habeis visto, esto mas facil no puede ser, asi que ale, a montar clusters a
diestro y siniestro ! xDDDD

EDIT:
Como no tenia ni idea de para que usar el cluster, y los del seti@home se han vendido a la
mierda del boinc, y hasta para usarlo en linux hace falta interfaz grafica, lo he puesto a calcular
con una precision de un millon de decimales (por usar un numero redondo), tal como hicieron
en 1973 con un CDC 7600

Aqui estan los ultimos 100 digitos de ese millon de decimales:
Cdigo:
171679196434755381900928799572121156884218368310723400688966829762660019077386
1265374746078134679968 1000000
EDIT 2:
Me aburria y lo que he hecho es instalarle el servidor X y fluxbox para ver que tal tira en estos
cacharros, y para mi asombro va infinitamente suave, aun poniendole antialiasing y usando
programas modernos como firefox , he aqui una captura de pantalla en la que se ve como
balancea la carga entre los 2 nodos: Cluster bajo X

S-ar putea să vă placă și