Bienvenido(a) a Grupo Linuxero del Bajío lunes, agosto 10 2020 @ 11:07 CEST

Linux clústers - Parte 1/3

  • Autor:
  • Lecturas 4,147
Artículos

Para inciar la ronda de artículos que Ceyusa nos solicitó, me he dado a la tarea de narrarles en una serie de tres artículos sobre la experiencia de construir y hacer funcionar un clúster usando Linux como sistema operativo y utilizando como ejemplo un clúster de 21 máquinas que estoy montando.
En esta primera parte veremos lo referente a conceptos básicos, el diseño y requerimentos físicos y el arranque bajo el LiveCD ParallelKnoppix

¿Qué es un clúster?


    De la Wikipedia: Simplemente, clúster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio. De un cluster se espera que presente combinaciones de los siguientes servicios:
  • Alto rendimiento (High Performance)
  • Alta disponibilidad (High Availability)
  • Equilibrio de carga (Load Balancing)
  • Escalabilidad (Scalability)

  • La construcción de los ordenadores del cluster es más fácil y económica debido a su flexibilidad: pueden tener todos la misma configuración de hardware y sistema operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (clúster semi-homogéneo), o tener diferente hardware y sistema operativo (clúster heterogéneo).
    Para que un clúster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento.

¿Qué necesito?


  • Nodos. Sirven cualquier tipo de máquinas que hasta pueden ser de desecho, y lo más básico que se imaginen, solo requerimos que posean procesador, memoria, tarjeta de red y si de preferencia disco duro. Claro que entre más nodos tengamos más capacidad de cómputo tendremos, pero cuidado con el tipo de máquina que se colocan, no es lo mismo colocar un Pentium I a 100MHz que un CoreDuo a 2GHz, de preferencia usen nodos clónicos o de similar capacidad para que el balanceo de carga sea adecuado.
  • Sistema de red. Si bien podemos usar sistemas como fibra óptica o mirynet que son de alta velocidad, el precio se eleva demasiado, actualmente la mayoria de las computadoras soporta e incluye red Ethernet 10/100/1000 y con un switch de cuantos puertos necesitemos basta para la mayoria de las aplicaciones. Existe un desarrollo para activarlas por conexiones Wifi, pero como no las he probado y las velocidades no se comparan, solo trataremos redes físicas.
  • Sistema operativo. Por supuesto que Linux pero en cuanto a la distribución a usar tenemos toda una bateria para escoger, es más, se puede transformar su distro favorita en un sistema para súpercomputo instalando los paquetes adecuados, pero por comodidad prefieran las distros que ya incluyen este soporte.
  • Aplicaciones de funcionamiento. El manejador de balanceo, sistemas de colas, soporte a MPI/LAM, etc. En las distros que vienen listas para clustering ya las traen preparas para usarse.
  • Aplicaciones finales. Pues depende de que uso le van a dar: para renderizar imágenes, cálculos matemáticos, ripear un DVD, codificar a OGG su biblioteca musical, etc. Muchas aplicaciones ya traen soporte para sistemas de clustering o sino tiene toda la libertad de crear las suyas y probar su clúster.

Caso práctico: BlackMamba


    Pues en mi caso, se disponian de varias computadoras que se encontraban en almácen debido a una inconsistencia del periodo compra/uso, en específico se habían adquirido 40 computadoras y nadie las usaba, por lo que se solicitaron para que el área de bioinformática las explotara en lugar de llenarse de polvo. En principio nos otorgaron 4 para pruebas.
    Las características de las computadoras son (todas son iguales):
  • Procesador: 2 Intel Xeon @ 1.6GHz
  • Memoria: 2 Gb
  • Disco Duro: 150 Gb
  • Tarjeta de Red: Ethernet 10/100/1000 y Wifi Atheros
  • Tarjeta de video: NVidia QuadroPro 128Mb

  • Se compró un switch de 24 puertos 10/100 por menos de $1000 pesos, el equivalente con soporte 1000 triplicaba el precio, y los respectivos cables CAT-5.
    Deben tomar en cuenta el requerimiento de energía electrica, nosotros sin saberlo montamos el clúster bajo una línea de 30A, pero nuestros ingenieros de mantenimientos nos han llamado la atención porque cada computadora consume aprox. 5A, por lo que solo podemos colocar 6 computadoras por línea independiente. Ya solicitamos más líneas para evitar sobrecargas.
    Otra consideración es la energía calorífica generada, nosotros tenemos el área bajo un sistema de clima de alta capacidad, pero el colocar muchas máquinas en un área reducida y sin ventilación puede llegar a calentar al punto de fundir los CPUs, memorias y discos duros, lo óptimo es que su cuarto ya en funcionamiento no sobre pase la temperatura ambiente.
    Nuestro esquema fue el de un nodo maestro y el resto como esclavos. Al nodo maestro se le colocó una segunda tarjeta PCI de red con el fin de que por la eth0 se comunica el clúster y por eth1 a nuestra intranet/internet. Salvo ese anexo no se modificó nada más, pero en los nodos maestros es buen consejo ampliar la memoria y el disco duro lo más que se pueda. Para solventar un poco el espacio en disco duro se nos presto un NAS Iomega de 1 Tb (sí, usamos muchos datos muy grandes) que accedemos vía red.
    Una vez armado para probar la eficiencia y darle números con el fin de solicitar aumentar los nodos, se probó con ParallelKnoppix.

ParallelKnoppix


    ParallelKnoppix como su nombre indica es una distro LiveCD basada en Knoppix, basada a su vez en Debian, que viene preparada para armar un clúster de forma rápida y sin tantos dolores de cabeza. Su uso es exageradamente sencilla y muy poderosa, basta con arrancar el nodo maestro con el CD, levantar los servicios mediante un sistema gráfico de configuración y levantar los nodos y ¡listo!, más sencillo no se puede.
    Los pasos es mejor que los consulten en la documentación en el tutorial incluido, dado que son muy fáciles no me parece que deba repetirlos, las preguntas que les hacen son para levantar un servidor DHCP, generar llaves de acceso, crear una imagen para arrancar por red y demás servicios. Una vez configurado el maestro y cuando el sistema lo pida, arrancamos los nodos esclavos usando arranque por red. Ya tenemos un clúster funcionando al 100%.
    Las pruebas que hicimos fue compara un grupo de secuencias contra una base de datos, dicho proceso en una computadora con 1 procesador y 1Gb de RAM tardó casi 26 hrs., pero usando 4 nodos (8 procesadores) solo tardamos como 4 Hrs. Esa fue la pauta para que nos dieran 7 nodos más y se autorizaran otros 10 en cuanto las instalaciones eléctricas lo permitan.
    Pero no nos quedamos con ParallelKnoppix, dado que es un sistema diseñado para ser temporal y no fijo, si bien se puede instalar al disco duro, el sistema presenta mucho trabajo para configurar tal y como estaba en el LiveCD, por lo que buscamos opciones más estables y prometedoras y despues de probar un par nos quedamos con ROCKS, del cual les hablaré en la siguiente parte.

Autor: Juan Caballero (linxe (arroba) glib . org . mx)