¿Que es un clusters ?


La Respuesta mas simple es un conjunto de computadoras las cuales Trabajan en conjunto para resolver una tarea.


Un cluster esta conformado por varias computadoras las cuales se comunican por medio de una conexión a red trabajando en un proyecto el cual seria muy largo para una sola computadora, resolviéndolo en un tiempo razonable.


Existen varios tipos de clusters uno de los mas comunes es el cluster computacional este generalmente es utilizado para calcular, procesar grandes cantidades de datos.


Otro tipo de cluster es le base de datos llamado libre de falla o alta disponibilidad se ocupa para almacenar bases de datos las cuales deben estar siempre en funcionamiento.






¿Historia de los sistemas clusters?



Los clusters son la principal alternativa para el alto desempeño en computación. High Performance Computing HPC.


El proyecto Beowulf Cluster tuvo inicio en (Goddord Space Flight Center GSFC) en el verano de 1994 cuando se ensamblaron 16 nodos clusters, para el desarrollo en ciencias de la tierra y el espacio, el proyecto rápidamente se extendió ala NASA algunos laboratorios, también diversas universidades al rededor del mundo.



El primer cluster se formo por 16 nodos DX4 conectados en una canal ethernet el máximo poder de procesamiento fue de un GigaFLOP (Floting Point Operation / sec.)


Los actuales sistemas cluster cuentan con procesadores y tecnología de red cada vez mas eficientes y rápidos, consisten en cientos rara vez en miles de nodos con el poder de procesamiento en varios TeraFLOPS.











¿Que usos tienen los Clusters?



Los sistemas cluster han empezado a ser usados en donde los sistemas mainframes o supercomputadoras eran utilizadas en el pasado.


Los clusters han formado parte significativa en el avance de las siguientes industrias.



En algunos puntos específicos







¿Como construir un cluster?



Nunca dos clusters Beowulf son iguales. De hecho, sus configuraciones hardware y software son tan flexibles y configurables que presentan un amplio abanico deposibilidades. En este tutorial, queremos proporcionar algunas guías y consideracio para reducir este amplio campo de opciones. Aunque cada cluster es diferente y lasconfiguraciones están dictadas por las necesidades de la aplicación, si que se pueden especificar algunos requerimientos mínimos.










Requerimientos Mínimos


Un nodo tendría que contener, como mínimo, una CPU 486 y una tarjeta madre Intel. Los procesadores Intel 386 funcionarían, pero su rendimiento raramente valdría la pena. Los requerimientos de memoria dependen de los requerimientos de datos de la aplicación y del paralelismo, pero un nodo tendría que contener como mínimo 16MB de memoria. La mayoría de aplicaciones necesitaran 32MB o más por nodo. Usando un espacio de disco centralizado, los nodos se pueden inicializar desde un disquete, un pequeño disco duro o un sistema de archivos en red. Entonces los nodos pueden acceder a su partición raíz desde un servidor de archivos a través de la red, normalmente usando el Network File System (NFS). esta configuración funciona mejor en un entorno con mucho ancho de banda en las conexiones y con un gran rendimiento en el servidor de archivos. Para un mejor rendimiento bajo otras condiciones, cada nodo tendría que tener suficiente espacio en el disco local para el sistema operativo, la memoria virtual y los datos. Cada nodo tendría que tener como mínimo 200 MB de espacio de disco para los componentes del sistema operativo y la memoria virtual, pero 400 MB o más permite tener espacio libre que puede ser usado para las aplicaciones en tiempo de ejecución. Como mínimo cada nodo tiene que incluir una tarjeta de red Ethernet o Fast Ethernet. Alternativamente, interconexiones de más alto rendimiento, incluyendo la Gigabit Ethernet y la Myrinet, podrían ser usadas en conjunción con CPUs más rápidas. Finalmente, cualquier tarjeta de vídeo, una lectora de disquetes, la caja y la batería, completan un nodo funcional.Los teclados y los monitores solo se necesitan para la carga y configuración inicial del sistema operativo, a no ser que las máquinas individuales sean usadas interactivamente además de servir como nodos en el sistema paralelo.





Todos los componentes hardware escogidos necesitan el soporte de drivers o módulos en Linux. Generalmente esto no es un problema si el hardware tiene algunos meses. Muchas fuentes de información acerca del hardware soportado están disponibles en la WWW . Particularmente interesante es la completa lista de drivers y la excelente documentación para una amplia variedad de tarjetas de red hecha por Donald Becker's. El soporte delas tarjetas de vídeo no es importante en los nodos, ya que normalmente no ejecutan un servidor X; no obstante, el nodo master puede gestionar el cluster. Un servidor X seria útil para esta máquina. Si un componente particular presenta un problema, preguntar en los grupos de noticias puede ayudar a encontrar información acerca del hardware soportado por Linux.










Conectividad de la red




Si es posible, los nodos tendrían que estar aislados en una red privada de área local con su propio hub o switch Ethernet. Esto evitará que el tráfico de la red normal interfiera en la comunicación entre los nodos y viceversa. Para incrementar aún más el ancho de banda entre los nodos, se pueden instalar tarjetas de red adicionales en los nodos. El software de Channel Bonding software disponible en www.beowulf.org puede usarse para operar con la red de comunicaciones paralela. El primer nodo, o master, tendría que tener una tarjeta Ethernet adicional para conectarse con la red normal, así como con la red privada. Esto es útil para los logins de usuario y las transferencias de archivos. En la red privada, es necesario usar un bloque de direcciones IP no usadas en ningún otro lugar de Internet. Lo más fácil es usar el espacio de direcciones de la Clase A 10.0.0.0 , reservado para las redes no enrutadas como esta. En este caso el archivo /etc/hosts de cada nodo seria como se muestra en la Tabla 1, y el archivo /etc/hosts.equiv de cada nodo aparecería como en la Tabla 2. Un ejemplo del archivo de configuración ifcfg-eth0 (usado por Red Hat Linux) para el nodo número 2 seria el mostrado en la Tabla 3.

Tabla 1: archivo /etc/hosts para todos los nodos


10.0.0.1 node1

10.0.0.2 node2

10.0.0.3 node3

10.0.0.4 node4

.

.


Tabla 2: archivo /etc/hosts.equiv para todos los nodos


node1

node2

node3

node4

.

.

.< /CODE>







Tabla 3: archivo /etc/sysconfig/network-scripts/ifcfg-eth0 para el

nodo 2




DEVICE=eth0

IPADDR=10.0.0.2

NETMASK=255.0.0.0

NETWORK=10.0.0.0

BROADCAST=10.255.255.255

ONBOOT=yes






Además, es deseable tener un Domain Name Server (DNS) disponible, particularmente si el nombre de los nodos o sus direcciones pueden cambiar en la red privada. Los DNS se pueden ejecutar en el primer nodo para proporcionar la resolución de nombres y direcciones en la red privada .




Almacenamiento Local


En el momento de cargar el sistema operativo, los constructores del Beowulf tienen que tomar una serie de decisiones acerca de la configuración. Estas decisiones tienen que pensarse cuidadosamente, ya que cambiarlas requiere reinstalar todos los nodos. La mayoría de los clusters Beowulf basados en Linux usan la distribución de Red Hat Linux, pero cualquier distribución tendría que soportar una clusterización básica. Los patches opcionales para el Kernel que proporcionan un espacio de PID Global y otras ayudas fueron desarrolladas en primer lugar por Red Hat, pero estas características no son obligatorias para la computación paralela. Cargar Red Hat es muy sencillo y puede hacerse vía CD-ROM o a través de una tarjeta de red desde Internet o desde el primer nodo en el cluster, que tendría que tener una copia de la distribución. Hemos encontrado beneficioso cargar el sistema operativo en los discos de cada nodo vía FTP desde el nodo primario en lugar de montar las particiones raíz vía NFS. Así sacrificamos un poco de facilidad de mantenimiento por un mejor rendimiento en la ejecución. Esta practica elimina trafico de red innecesario, preservado el ancho de banda para el paso de mensajes mientras las aplicaciones se ejecutan.





El entorno de ejecución de Red Hat Linux require solo unos 100 MB de espacio de disco en cada nodo; no obstante, es útil incluir compiladores y otras utilidades en todos los nodos para posibilitar la compilación paralela. Con esto, nuestra configuración requiere 175 MB de espacio en disco para el sistema operativo. Mientras algunos clusters se configuran para usar como memoria virtual un archivo del istema de archivos normal, es más eficiente usar un partición dedicada a la memoria virtual en el disco local. Se acepta normalmente que la cantidad de espacio razonable para la memoria virtual es el doble que el tamaño de la memoria, hasta los 64 MB. Para los nodos con más de 64 MB de memoria, el espacio para la memoria virtual tendría que ser igual a la cantidad de memoria. En la practica, uno puede desear reservar 128 de espacio para la memoria virtual si el tamaño de la memoria va de 64 a 128 MB. Como resultado, si un nodo previsor con 32MB de memoria tiene dos discos de 202 MB, uno podría cargar Linux en el disco principal (como una partición única) y usar el segundo disco para espacio de memoria virtual (64MB) y espacio local para la ejecución (138 MB).


Gestión del Cluster


La gestión y el mantenimiento del sistema puede ser tedioso, particularmente para grandes clusters. No obstante, hay varias utilidades y scripts disponibles en la WWW para ayudar en esta tarea (ver Recursos más adelante). Por ejemplo, los nodos tienen que mantenerse en sincronía con los otros respecto al tiempo y los archivos de sistema (e.g., /etc/passwd, /etc/group, /etc/hosts, /etc/hosts.equiv, etc.).

Simples shell scripts ejecutados regularmente por el cron pueden hacer la mayoría de las sincronizaciones..

Una vez todos los nodos están cargados y configurados, las aplicaciones paralelas pueden ser diseñadas y desarrollas para sacar provecho de este nuevo sistema.









Edgar Govea

Empezando con clusters

(01722)101375

govea@govea.com.mx