Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistemas Distribuidos
Se escogi el sistema operativo deban debido a su amplia documentacin disponible en la red, y por su bajo consumo de recursos se instal la versin no grafica ya que no es necesaria para el experimento a realizar. En tal experimento se tienen 3 mquinas virtuales en VirtualBox con el sistema operativo Debian, se utiliz la imagen debian-505-i386-netinst.iso que puede ser obtenida de http://cdimage.debian.org/debiancd/current/i386/iso-cd/, para el maestro se utiliz un disco de 4GB, para los esclavos se utiliz un disco de 3GB, en ambos casos el disco es dinmico y la memoria RAM es de 256MB. El maestro tiene 2 tarjetas de red la primera es de tipo Puente y la segunda es de tipo Interna, en el caso de los esclavos es de tipo interna, pero se puede utilizar primeramente NAT o Puente para la instalacin o acciones necesarias para el acceso a internet antes de configurarlo como se debe. El orden de instalacin es el siguiente NAT, DHCP, DNS, NFS, NIS, SSH y MPI. Configuracin del NAT Para el mapeo del NAT se utiliza el archivo disponible en http://www.inf.uct.cl/~amellado/archivos/Sim ple_NAT.txt el cual contiene una configuracin simple, se ingresa en el script de inicio /etc/rc.local y se debe colocar antes de la instruccin exit 0 con lo que debera quedar as:
iptables iptables iptables iptables iptables iptables exit 0 -t -t -t -t -t -t filter nat -F filter filter filter nat -A -F -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT POSTROUTING -o eth0 -j MASQUERADE
Instalacin:
Con esto las maquinas van a tener una direccin IP que parte de 192.168.20.10 hasta 192.168.20.254, en el caso del option domain-name-servers se coloca la IP del servidor de nombres de la mquina, el cual se puede obtener en el archivo /etc/resolv.conf, en este caso era 192.168.5.1. Modificamos el archivo server y lo dejamos:
INTERFACES="eth1"
/etc/default/dhcp3-
eth1 es la interface de red configuramos el archivo /etc/network/interfaces que nos quedar as:
auto lo eth0 eth1 iface lo inet loopback iface eth0 inet dhcp iface eth1 inet static address 192.168.20.1 netmask 255.255.255.0 network 192.168.20.0
configuramos
el
archivo
Luego descomentamos net.ipv4.ip_forward=1 del archivo /etc/sysctl.conf Configuracin del DHCP Para instalar y configurar el servicio DHCP se sigui de la siguiente pgina http://www.guatewireless.org/os/linux/distro s/debian/ubuntu/como-instalar-y-configurarun-servidor-dhcp-en-linux-ubuntu-debian/
Configuracin del DNS Para la configuracin del DNS se sigui la pgina http://manes.debianchile.org/bind.html. Instalamos: Luego
options{
En el maestro:
Luego definimos el domainname haciendo:
domainname jfhack.info
Podemos
};
/etc/resolv.conf.
est listo haciendo more luego modificamos el archivo /etc/default/nis y le modificamos los valores a las siguientes lneas:
/etc/defaultdomain
ver
que
Configuracin del NFS Para esta configuracin se sigui la pgina http://www.forat.info/2008/05/07/comoinstalar-y-configurar-un-servidor-nfs-y-susclientes-en-linux-ubuntu-y-linux-debian/ Instalamos:
Luego agregamos un usuario llamado prueba con el comando useradd -m prueba luego levantamos los servicios de la siguiente manera:
probar
que
est
corriendo
ejecutamos el
Con esto le decimos al servidor que queremos compartir el directorio /home y le damos acceso de lectura y escritura con (rw), reiniciamos el servidor con:
/etc/init.d/nfs-kernel-server restart
Ahora en cada esclavo hay que configurar el nfs, primero instalamos:
domainname jfhack.info
ypserver master
Luego modificamos el archivo /etc/yp.conf y lo dejamos as: Donde master es el nombre del maestro definido en el archivo /etc/hosts del esclavo. Para finalizar modificamos el archivo /etc/nsswitch.conf agregndole a cada lnea la palabra nis y quedara como sigue:
passwd: group: shadow: hosts: networks: protocols: services: ethers: rpc: netgroup: compat nis compat nis compat nis files dns nis files nis db files nis db files nis db files nis db files nis nis
Configuracin del NIS Para configurarlo se sigui la siguiente pgina http://mguazzardo.wordpress.com/2008/10/28/i ntroduccion-a-los-servicios-de-directorios/ Primero se instala el NIS en el maestro y los esclavos.
Y ejecutamos ypbind. Configuracin del SSH Instalacin: En el maestro y en cada esclavo instalar openSSH con el comando: se debe
Donde master, slave1 y slave2 son los nombres del maestro, esclavo 1 y esclavo 2 respectivamente definidos el archivo /etc/hosts y slots=1 indica el nmero de procesadores de la mquina. Archivo de ejemplo mpi anillo.c:
#include <stdio.h> #include <mpi.h> int main(int argc, char *argv[]){ MPI_Status status; int num, rank, size, tag, next, from; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); /* Usaremos una etiqueta arbitraria de valor 201. Calculamos el identificador (rango) del siguiente y del anterior, suponiendo un anillo */ tag = 201; next = (rank + 1) % size; from = (rank + size - 1) % size; /* En el proceso primario preguntamos un parametro */ if(rank==0){ printf("Introduce el numero de vueltas al anillo: "); scanf("%d", &num); printf("Proceso %d envia %d al proceso %d\n",rank, num,next); MPI_Send(&num, 1, MPI_INT, next, tag, MPI_COMM_WORLD);} /* Los procesos "pasan" el numero de vueltas que faltan. Cuando llega al proceso 0, se descuenta una vuelta. Cuando un proceso recibe un 0, lo pasa y termina.*/ do{ MPI_Recv(&num,1,MPI_INT,from,tag,MPI_COMM_WORLD,&status); printf("Proceso %d ha recibido %d\n", rank, num); if(rank == 0) { --num; printf("Proceso 0 descuenta una vuelta\n");} printf("Proceso %d envia %d al proceso %d\n",rank,num,next); MPI_Send(&num, 1, MPI_INT, next, tag, MPI_COMM_WORLD); }while(num>0); printf("Proceso %d termina\n", rank); /* El proceso "primario debe esperar el ultimo envio del ultimo proceso antes de terminar */ if(rank == 0) MPI_Recv(&num,1,MPI_INT,from,tag,MPI_COMM_WORLD,&status); MPI_Finalize(); return 0;}
id_rsa.pub authorized_keys
Para probar que funciona, iniciado sesin como otro debemos ejecutar ssh slave1, siendo slave1 el nombre del primer esclavo definido en el archivo /etc/hosts, al ejecutar esta instruccin deveriamos poder conectarnos con el esclavo1 mediante SSH sin necesidad de ingresar la contrasea. Configuracin del MPI Para esta configuracin se sigui la pgina http://techtinkering.com/articles/?id=32 Instalacin: En el maestro:
openmpi-bin
openmpi-common
Ahora iniciamos sesin como el usuario otro y creamos el archivo .mpi_hostfile el cual tendr lo siguiente:
master slots=1 slave1 slave2