Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
llamada MAESTRO que ser en la que se ejecutaran los programas paralelizados, y el otro que ser el ESCLAVO este fungir como el que ejecuta los procesos que reciba, es decir, no ejecutara el programa que se paralelizar sino el proceso que reciba del programa paralelizado que se est ejecutando en el MAESTRO. Crear 2 maquinas virtuales: CARACTERSTICAS: Maquina 1: Ip: 192.168.1.1 Usuario: root Privilegios: ADMINISTRADOR (root) Contrasea: admin Nombre del equipo: MAESTRO Imagen del prompt: root@MAESTRO:~# Maquina 2: Ip: 192.168.1.2 Usuario: root Privilegios: ADMINISTRADOR (root) Contrasea: admin Nombre del equipo: ESCLAVO Imagen del prompt: root@ESCLAVO:~# Ahora se procede a configurar el archivo hosts: Primero configuramos al MAESTRO:
root@MAESTRO:~# gedit /etc/hosts
Agregamos al final del archivo las direcciones ips de las 2 computadoras con sus alias:
192.168.1.1 maestro master 192.168.1.2 esclavo slave
Agregamos al final del archivo las direcciones ips de las 2 computadoras con sus alias:
192.168.1.1 maestro master 192.168.1.2 esclavo slave
Si se recibe un error verificar que las direcciones ips sean las que estn asignadas a su computadora. Ahora procedemos a descargar los programas que se necesitan para el correcto funcionamiento del cluster:
root@MAESTRO:~# apt-get libopenmpi1.3 libopenmpi-dev install openmpi-bin openmpi-common
Nos aseguramos que este corriendo el servicio, ssh trabaja en el puerto 22 de nuestra computadora as que veamos:
root@MAESTRO:~# netstat -noa root@ESCLAVO:~# netstat noa
Y nos muestra una lista de todos los puertos que tenemos abiertos y ofreciendo un servicio. Netstat del MAESTRO:
Proto TCP Direccin local 192.168.1.1:22 Direccin remota 0.0.0.0:0 Estado LISTENING PID 1080
Una vez instalado todo lo anterior procedemos a configurar las maquinas: Primero configuramos la maquina MAESTRO:
root@MAESTRO:~# ssh-keygen
Nos pedir que ingresemos la direccin donde se guardara el archivo, le damos enter. Luego nos pedir una frase clave, le damos enter. Y nos pedir confirmar la clave, le damos enter. Luego necesitamos que esta clave la conozca el ESCLAVO para que se pueda establecer la conexin asi que se la mandamos por scp:
root@MAESTRO:~# scp .ssh/id_rsa.pub root@ESCLAVO:
Nos preguntara si queremos agregar la conexin al archivo host_rsa, le damos enter. Si nos marca un error intentar con esto:
root@MAESTRO:~# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key root@MAESTRO:~# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
Nos preguntara si queremos agregar la conexin al archivo host_rsa, le damos enter. Si sigue dando el error proceder la misma accin pero con el ESCLAVO:
root@ESCLAVO:~# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key root@ESCLAVO:~# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
Y volver a intentar la conexin. Si todo va bien intentar enviar de nuevo el archivo id_rsa.pub. Si el comando scp funciono la primera vez, es decir, que ya se envio el archivo al ESCLAVO, nos vamos al ESCLAVO y tecleamos lo siguiente: Creamos una carpeta .ssh para almacenar el archivo id_rsa.pub
root@ESCLAVO:~# mkdir .ssh
Le damos permisos:
root@ESCLAVO:~# chmod 700 .ssh
Solo se procede a mover el archivo debido a que se cre la carpeta cuando se configuraron los archivos de rsa y dsa. Esto es para ejecutar despues de las dos formas de configuracin de ssh.
root@MAESTRO:~# ssh root@ESCLAVO hostname
Esto nos deber regresar el nombre del host(equipo) es este caso: esclavo:
Ahora necesitamos una carpeta que se comparta entre el MAESTRO y el ESCLAVO. Para ello en MAESTRO creamos una carpeta a compartir:
root@MAESTRO:~# mkdir cluster
Guardamos y cerramos. Nota: El * representa localhost, se puede sustituir por: 192.168.1.1/24 que es la direccin ip del MAESTRO. Y ahora reiniciamos el servicio nfs:
root@MAESTRO:~# /etc/init.d/nfs-kernel-server restart
Ahora vamos al ESCLAVO, solo vamos a configurar ya que ya lo habamos descargado antes. Creamos una carpeta para montar la unidad del MAESTRO:
root@ESCLAVO:~# mkdir cluster root@ESCLAVO:~# showmount e maestro
Con esto nos debe mostrar las carpetas que esta compartiendo y podemos montar en nuestra maquina (ESCLAVO) Nos debera mostrar algo como esto:
Export list for 192.168.1.1: /root/cluster 192.168.1.1/24
O no mostrar la direccin IP. Ahora veamos que unidades estn montadas en nuestra maquina (ESCLAVO):
root@ESCLAVO:~# mount
y nos mostrara todas las unidades montadas, pero hasta ahora no est montada la de la maquina MAESTRO. Procedemos a montarla:
root@ESCLAVO:~# mount t nfs master:/root/cluster /root/cluster
Esta es la forma manual de montar una unidad si queremos que cada vez que se inicie el ESCLAVO se monte automticamente debemos configurar el archivo fstab como sigue:
root@ESCLAVO:~# gedit /etc/fstab
Ahora desde la maquina MAESTRO,nos vamos a la carptea que se esta compartiendo, cluster, creamos un archivo de configuracin para repartir los procesos a las computadoras:
root@MAESTRO:~# cd cluster root@MAESTRO/cluster:~# gedit .mpi_hostfile
Lo guardamos como:
Hello_world.cpp
Lo compilamos:
root@MAESTRO/cluster:~# mpic++ hello_world.cpp o hello_world
Debern aparecer 3 archivos: 1.- hello_world.cpp 2.- hello_world 3.- .mpi_hostfile Probamos que funcione en la maquina MAESTRO:
root@MAESTRO/cluster:~# ./hello_world root@MAESTRO/cluster:~# mpirun np 4 ./hello_world root@MAESTRO/cluster:~# mpirun np 4 hostfile ./hello_world .mpi_hostfile
Probablemente en esta ltima prueba ocurran las siguientes situaciones: 1.- que se ejecute, si se ejecuta quiere decir que el archivo esta mal escrito por qu?, debido a que el archivo tiene lo siguiente:
#NODOS MAESTRO: Localhost slots=2 #NODOS ESCLAVO: esclavo slots=2
En donde localhost seria igual a 192.168.1.2, porque lo estamos corriendo desde el cliente, y Esclavo es igual a 192.168.1.2, es decir, la misma direccin
2.- que no se ejecute, si no se ejecuta esta bien configurado el archivo ya que esatria de la siguiente forma:
#NODOS ESCLAVO: Localhost slots=2 #NODOS MAESTRO: maestro slots=2
En donde localhost es igual a 192.168.1.2 que es el ESCLAVO, y Maestro es igual a 192.68.1.1, pero por qu arroja el error?, debido a que el que debe distribuir los procesos es el MAESTRO el ESCLAVO no tiene privilegios para distribuir los procesos y se genera el error, pero si se ejecuta localmente (sin distribucin) mientras tenga los archivos necesarios instalados. Si al ejecutar el ./hello_world marca un error de que no puede ejecutarlo instalar lo siguiente:
root@MAESTRO/cluster:~# apt-get install mpich2 libssl-dev
Si en alguna instalacin marca algn error intentar despues de ejecutar la instalacin esto:
root@MAESTRO/cluster:~# apt-get install f
Esto instalara todos los paquetes que necesita para su correcto funcionamiento.