Академический Документы
Профессиональный Документы
Культура Документы
Desarrollado por:
Diego Rodrigo Guzmn Santamara Julio Martnez Tovar Sal Martnez Vidals Jos Isaac Torres Rivera
Bajo la direccin de:
ndice general
1. Introduccin
1.1. 1.2. 1.3. Descripcin del Sistema Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9 9 10
2. Investigacin previa
2.1. Sockets 2.1.1. 2.1.2. 2.1.3. 2.2. JXTA 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.2.5. 2.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelo cliente-servidor usando sockets orientados a conexin
11
12 12 12 13 13 13 13 13 14 14 14 14 14 15 15
Fortalezas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.
NDICE GENERAL
2.4.2.
Debilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3. Actividades Realizadas
3.1. 3.2. Deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Respaldo y Recuperacin de Archivos 3.2.1. 3.2.2. 3.2.3. 3.2.4. 3.3. 3.4. 3.5.
17
17 18 18 19 19 19 20 20 20 20 21 21 21
Transriendo Archivos va FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispersin y Agrupacin de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Registro de los Archivos Respaldados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dicultades Enfrentadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pruebas Finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1. 3.5.2. 3.5.3. 3.5.4. AT - 105 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AT - 106 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AT - 220 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dicultades Encontradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Trabajo Futuro
4.1. 4.2. 4.3. 4.4. 4.5. 4.6. Transferencia Paralela Servicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
23 24 24 24 25 25
Acceder a Servidores en Otras Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mejorar la Seguridad del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deteccin y FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A. Manual tcnico
A.1. Requerimientos del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2. Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.1. Deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.2. FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
27 27 28 29
NDICE GENERAL
32 32 33 34
B. Manual de usuario
B.1. Conguracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.1.1. Servidor de deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
37 37 38 39 39 39
B.2.2. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C. Diagramas
C.1. Diagramas Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2. Diagramas de Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3. Diagramas de Secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
41 45 48 51
NDICE GENERAL
ndice de guras
3.1. Deteccin de servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
C.1. Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2. Detalle del Respaldo de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3. Detalle de la Recuperacin de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42 43 44 46 47 49 50 51
C.4. Clases del Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.5. Clases del Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.6. Secuencia Recuperacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NDICE DE FIGURAS
Captulo 1
Introduccin
ndice
1.1. Descripcin del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Cmo Leer ste Reporte? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10
En la actualidad el almacenamiento de informacin en forma de archivos es muy comn y se realiza en diversos medios fsicos, por ejemplo: Discos Duros, Discos Compactos, Memorias Flash USB, etc. Sin embargo corremos el riesgo de que informacin importante pueda corromperse de forma imprevista en cualquiera de estos dispositivos. Esto crea la necesidad de disear sistemas capaces de soportar dichos fallos (perdida de archivos).
1.2. Objetivos
El principal objetivo de ste proyecto es, tener un sistema de alamacenamiento distribuido de archivos que sea:
Fcil de usar Fcil de instalar Fcil de congurar Independiente del sistema operativo
10
captulo 2.
Una vez terminada dicha investigacin, realizamos varias actividades, referentes al desarrollo de la aplicacin, en el
captulo 3 describimos las tareas que realizamos, y los problemas que se nos presentaron, as como la forma
en que los solucionamos. Dado el poco tiempo de desarrollo del que disponemos, hay mucho trabajo que qued pendiente, un listado completo de las funcionalidades que es deseable que el sistema tenga en un futuro cercano, puede ser leida en el
captulo 4.
Dada la complejidad de la aplicacin, es necesaria una especie de gua que ayude a las personas que retomen este trabajo, a utilizar las bases que hemos dejado. El manual tcnico, en el para entender mejor la documentacin de la aplicacin . Como una referencia para el usuario nal, incluimos en el documento el manual de usuario (disponible en el
1 La
mento.
Documentacin del sistema de almacenamiento distribuido, se incluye junto con el cdigo fuente, los archivos .jar y ste docu-
Captulo 2
Investigacin previa
ndice
2.1. Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1. Modelo cliente-servidor usando sockets orientados a conexin . . . . . . . . . . . . . . . . 2.1.2. Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3. Desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.2.5. Requerimientos . . . . . . . . . Ajuste de variables de entorno Fortalezas . . . . . . . . . . . . Debilidades . . . . . . . . . . . Problemas que se presentaron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
12 12 13
2.2. JXTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
13
14 15
13 13 13 14 14 14 14 15 15
La primera etapa en la realizacin de ste proyecto, fue una investigacin sobre diversas herramientas que podran ayudarnos en las tareas de deteccin, y envo de archivos a travs de una red, las herramientas examinadas fueron:
Siendo seleccionada
JBoss Remoting
12
2.1. Sockets
2.1. Sockets
Los sockets son canales de comunicacin, se consideran el objeto bsico en la comunicacin a travs de internet, su comunicacin es continua y naliza cuando una de las mquinas cierra su conexin. Existen dos tipos de canales de comunicacin o
En los primeros se deben conectar con un socket los programas y hasta que la conexin se encuentre establecida correctamente, ninguno de los programas podr transmitir datos. Aqu es donde acta el protocolo TCP y nos garantiza que todos los datos van a llegar de un programa a otro correctamente. Este canal de comunicacin es utilizado cuando no se quiere perder ningn dato sin importar que un programa quede bloqueado esperando o transmitiendo datos. En la comunicacin no orientada a conexin, no es necesario que los programas estn conectados, cualquiera puede transmitir datos en cualquier momento, independientemente de que est escuchando o no. Esta comunicacin la maneja el protocolo UDP y nos garantiza que los datos llegarn correctamente, pero lo que no garantiza es que lleguen todos. Esta comunicacin es utilizada cuando queremos que el programa no se quede bloqueado y no importa que los datos se pierdan.
1. Inicia el puerto de comunicacin en espera de que algn cliente se conecte, creando un serverSocket. 2. Una vez que existe una conexin, crea un hilo de ejecucin orientado a conexin para este usuario mientras que el hilo principal regresa a vericar el puerto de comunicacin. 3. Se comunica con el cliente mediante el socket creado. 4. Espera a que el cliente cierre la comunicacin o l mismo la cierra y elimina el hilo que cre.
Y el cliente.
1. Establece la conexin con el servidor creando un socket. 2. Manda mensajes al servidor o espera mensajes de ste. 3. Cierra la conexin con el servidor.
Con el uso de sockets UDP y TCP es necesario saber a qu computadora y por cul puerto se van a comunicar.
2.1.2. Ventajas
Mejor rendimiento. Flexibilidad en las aplicaciones a desarrollar. Compatibilidad entre sistemas operativos.
2. Investigacin previa
13
2.1.3. Desventajas
Es necesario seleccionar explcitamente el protocolo, direccin IP y puerto a utilizar. Se requiere mucho tiempo de programacin para tener una aplicacin funcional.
Se descartaron los sockets como medio de comunicacin en el proyecto debido al elevado tiempo de programacin necesario para la deteccin de servidores ya que se encontr un API que nos permite realizar deteccin de forma mucho ms sencilla, adems de lo elaborado que resulta realizar una conexin y enviar archivos de una mquina a otra.
2.2. JXTA
JXTA (Juxtapose) es una plataforma peer-to-peer (P2P) open source creada por Sun Microsystems en el ao
2001. Esta plataforma est denida como un conjunto de protocolos basados en XML. Dichos protocolos permiten que dispositivos conectados a una red intercambien mensajes entre si. JXTA es el framework P2P ms maduro que actualmente existe. Adems, fue diseado para permitir que un amplio rango de dispositivos (computadoras, telfonos celulares y PDAs) se comuniquen de forma descentralizada.
2.2.1. Requerimientos
Ant 1.6 o superior (apache.org) Java Standard Edition 5.0 Compatible VM (java.sun.com) JXSE 2.5 BouncyCastle 1.37 (bouncycastle.org) Servlet 2.3 (java.sun.com) Jetty 4.2.25 (mortbay.com)
2.2.3. Fortalezas
Funciona bien en redes LAN Existen aplicaciones desarrolladas, similares a la nuestra.
14
2.2.4. Debilidades
Su instalacin es complicada y poco clara.
JXTA Shell An cuando los comandos necesarios para enviar mensajes y para actualizar las PC conectadas,
funciona adecuadamente, no fue posible enviar archivos entre las mquinas. Las pruebas en Windows Vista, fueron fallidas.
2.3.1. Fortalezas
El hecho de que sea simplemente una interfaz y no una implementacin completa en Java de MPI, ayuda a que el rendimiento de las aplicaciones sea un poco mejor.
2.3.2. Debilidades
MPI es una abstraccin de muy bajo nivel para el paso de mensajes, y no ofrece ayuda alguna en el problema de la deteccin de servidores remotos.
Requiere de instalar una distribucin en C de MPI (por ejemplo, lam, mpich, u open-mpi).
1 Message Passing Interface Por sus siglas en ingls 2 es un ambiente de programacin paralela SPMD: Single Program, Multiple Data,
arreglos distribuidos
HPJava
2. Investigacin previa
15
2.4. JBoss-Remoting
2.4.1. Fortalezas
Fcil desarrollo para la comunicacin entre equipos, en gran medida por el alto nivel que proporciona el API y por el lenguaje de programacin utilizado. Multiplataforma, al estar basado en tecnologa Java, se puede portar a otros sistemas operativos haciendo pocos o ningn cambio.
2.4.2. Debilidades
Al estar basado en Java, no hay buen rendimiento en equipos con hardware que ya tiene varios aos en el mercado.
16
2.4. JBoss-Remoting
Captulo 3
Actividades Realizadas
ndice
3.1. Deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Respaldo y Recuperacin de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1. 3.2.2. 3.2.3. 3.2.4. Transriendo Archivos va FTP . . . . Dispersin y Agrupacin de Archivos . Registro de los Archivos Respaldados Dicultades Enfrentadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 18
3.3. Diseo de la Interfaz de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4. Empaquetando la Aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Pruebas Finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.1. 3.5.2. 3.5.3. 3.5.4. AT - 105 . . . . . . . . . . AT - 106 . . . . . . . . . . AT - 220 . . . . . . . . . . Dicultades Encontradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20 20 20
18 19 19 19
20 21 21 21
En una primera etapa se dividi el problema en dos partes: la deteccin de servidores en una red local y el respaldo de un archivo.
3.1. Deteccin
Para la deteccin el problema se resolvi en dos versiones. En una primera la deteccin se realiz mediante el uso de procedimientos para guardar las direcciones a un
String )
IP
en donde estaba guardada la informacin del servidor encontrado, guardndolos en una estructura y
conforme fueran detectndose los servidores fueran agregados, al igual que cuando un servidor se detena, buscaba su IP y se eliminaba de la estructura actualizndose de forma continua mientras se ejecutaba la deteccin, en sta versin los elementos guardados en la estructura slo eran las direcciones IP. Ya que esta versin haca lo debido pero de una forma muy burda se recurri a la revisin y ajuste del cdigo. Para la segunda versin se revis la forma de agregar los servidores y eliminarlos al ser encontrados por el detector, esto se realiz con una estructura en java que nos permiti guardar y borrar slo con la llamada al mtodo 17
18
correspondiente, se guardaron referencias completas del servidor localizado, teniendo informacin como protocolo, host y puerto, entre los mas importantes al invocar los mtodos de la clase que nos guarda la referencia del servidor. Con esta versin la deteccin se realiz de una manera ms sencilla y se pudo obtener mayor informacin a cerca de los servidores encontrados. Para detectar los servidores, el cliente manda paquetes hacia todos los posibles destinatarios en la red local los cuales son recibidos por los servidores que estn activos (escuchando por el puerto) indicado, y a
broadcast ),
su vez, notican al cliente que se encuentran activos, envindole su direccin. dicho procedimiento se ilustra en la gura 3.1 La deteccin fue implementada en base a los ejemplos proporcionados por el API de dolo a un tiempo de deteccin determinado.
JBossRemoting ajustn-
JBossRemoting.
JBossRemoting,
optamos por cambiar de tecnologa para realizar la transmisin de archivos, de esta forma se buscaron API's para
3. Actividades Realizadas
19
java que nos permitieran trabajar con servidores nativos FTP, el API elegido fue CleanFTP, este API cuenta con varios mtodos que nos permiten interactuar con servidores FTP. En el caso del servidor FTP, se tienen 2 opciones dependiendo del sistema operativo instalado en cada mquina, para el caso de GNU/Linux usamos vsFTPd este servidor trabaja en segundo plano y tiene un archivo de conguracin fcil de modicar. En el caso de Windows se empleo FileZilla Server FTP que cuenta con una interfaz grca para su conguracin. La ventaja de utilizar
FTP para enviar archivos de un host a otro es que el mismo protocolo nos garantiza (al
menos con los servidores y el cliente FTP elegidos) que los datos llegan correctamente a su destino, adems de que resolvemos al mismo tiempo el problema de respaldar y recuperar archivos.
dispersin y recuperacin
Investigamos al respecto, pero no encontramos una solucin satisfactoria al problema, adems, la transferencia de archivos via
JBoss Remoting tenia el inconveniente de que no se pueden transmitir archivos mayores que 2Gb.
20
$ java
j a r
cliente . jar
archivo
$ java
j a r
cliente . jar
archivo
3.5.1. AT - 105
Utilizamos computadoras con los siguientes Sistemas Operativos:
Ubuntu Linux, tanto en sus versiones 8.04 como 8.10 Slackware GNU/Linux 12.0 Microsoft Windows XP Microsoft Windows Vista, . Microsoft Windows 7 beta
1 Laboratorios
3. Actividades Realizadas
vsftpd - en las mquinas con Linux. FileZillaFTP Server - en las mquinas con Windows.
21
3.5.2. AT - 106
En el laboratorio utilizamos nicamente computadoras con Sistema Operativo Microsoft Windows Vista Home Edition, cabe destacar que al momento de escribir estas lneas , slo se hicieron pruebas de la deteccin de servidores.
3.5.3. AT - 220
El ste laboratorio utilizamos mquinas que tienen como Sistema Operativo: Ubuntu Linux 8.04, y como servidor FTP, vsftpd.
22
Captulo 4
Trabajo Futuro
ndice
4.1. 4.2. 4.3. 4.4. 4.5. 4.6. Transferencia Paralela . . . . . . . . . Servicio . . . . . . . . . . . . . . . . . . Interfaz Grca de Usuario . . . . . . Acceder a Servidores en Otras Redes Mejorar la Seguridad del Sistema . . . Deteccin y FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 24 24 24 25 25
De entre las actividades que quedan pendientes para las siguientes etapas del desarrollo del proyecto, se incluyen las siguientes:
Respaldo:
Una vez detectados los servidores, fragmentado el archivo, y decidido, en que servidor va que
( servidor, archivo ) en una cola, y se transmiten por FTP una por una al
Recuperacion:
Una vez detectados los servidores, y ubicados los fragmentos que nos interesa recuperar,
( servidor, archivo )
Un objetivo a futuro, es implementar esta transferencia de archivos, utilizando hilos, los cuales sern lanzados de manera concurrente, con la nalidad de ahorrar tiempo en la transmisin, tanto de ida como de vuelta, respecto de la solucin que est implementada actualmente. 23
24
4.2. Servicio
4.2. Servicio
Actualmente el servidor de deteccin funciona como cualquier aplicacin de usuario, es decir, cuando el usuario lanza el proceso del servidor, mediante el comando:
$ java
j a r
servidor . jar
$ java
j a r
servidor . jar
5555
5555.
La idea es que en prximas versiones de la aplicacin, el servidor sea como un servicio ms (como el FTP, por ejemplo).
de manera no interactiva, se le indica al sistema, la accin que se desea realizar (en ste caso
usabilidad
respaldar o recuperar un archivo) y sobre que archivo se requiere aplicar dicha accin. Con el objetivo de mejorar la del sistema, as como para facilitar la conguracin del mismo, se
requiere desarrollar una interfz grca de usuario para la aplicacin, la cual, dado el estado actual del programa, puede ser desarrollada independientemente de ste.
4. Trabajo Futuro
25
26
Apndice A
Manual tcnico
ndice
A.1. Requerimientos del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2. Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.3.1. Deteccin de Servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3.2. Transferencia de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3.3. Dispersin y Reunin de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.1. Deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.2. FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27 27 32
28 29
32 33 34
Una red de rea local (LAN): con al menos cinco computadoras, sobre las cuales se instalar el sistema. Un servidor FTP instalado en cada uno de los nodos que van a desempear el rol de Servidor La Mquina Virtual de Java de Sun Microsystems. para poder ejecutar las aplicaciones (tanto el cliente,
como el servidor de deteccin)
comn en tdas las mquinas servidor, la cual se utilizar para establecer las
conexiones a los servidores FTP cada vez que se requiera respaldar o recuperar archivos.
A.2. Servidor
Para que un host pueda desempear la funcin de servidor de almacenamiento, necesita bsicamente de dos componentes: el servidor de deteccin, y un servidor FTP, el cual es independiente del sistema. 27
28
A.2. Servidor
A.2.1. Deteccin
El cdigo fuente que corresponde al el se denen tres clases:
JBoss Remoting,
una vez
iniciado el servidor, lo nico que hace es escuchar por el puerto que se le indique, ya sea desde su archivo de conguracin, o desde la lnea de comandos, cuando recibe una peticin desde algn cliente, procesa el mensaje y devuelve un mensaje que contiene Una instancia de la clase obtener la informacin que necesita del servidor. La clase encargada de iniciar el servidor de deteccin es cia de
Notication 1 ,
servidor.conf.Principal, dicha clase crea una instanservidor.deteccion.DetectorServidor, la cual se dedica a escuchar por el puerto indicado, a continuacin
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
Listing A.1: Iniciando el Servidor de deteccin /* informacion host puerto ttlServidor del servidor
*/
protocolo
= " socket " ; = datos . getProperty ( " host " ) ; = datos . getProperty ( " puerto_deteccion " ) ; = Integer . parseInt ( datos . getProperty ( " tiempo_servidor " ) ) ; al servidor para que pueda ser detectado
identifica
*/
*/
DetectorServidor () ;
s e r v i d o r = new
detector
de
mensajes
*/ */
servidor . iniciaDetector () ; /* } catch ( Exception { System . e r r . p r i n t l n ( "ERROR: JBossRemoting . " ) ; Al intentar iniciar el servidor remoto e) inicia el servidor de peticiones
1 Para
A. Manual tcnico
66 67
29
e . printStackTrace () ;
De acuerdo con la conguracin el servidor de deteccin espera un tiempo antes de terminar o continuar escuchando por el puerto (previamente especicado)
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
Listing A.2: Deteniendo el Servidor de deteccin /* cuando el valor de ttl_servidor por tiempo en el archivo de configuracion es 0, el
* servidor */
/*
funciona != un 0)
indefinido
if ( ttlServidor { espera
lapso
de "
tiempo segundos
antes o
de
detener activo
el por
*/
+
System . o u t . p r i n t l n ( " E l
servidor
estara puede
ttlServidor
deternerlo
C t r l+ C\ n " ) ;
Thread . s l e e p ( t t l S e r v i d o r try {
*1000) ;
servidor . detenDetector () ; } catch ( Exception { e . printStackTrace () ; } servidor . detenServidor () ; } else { System . o u t . p r i n t l n ( " I n i c i a d o " ernerlo /* el servidor funciona servido use remoto J B o s s / Remoting ... para det " + C t r l+ C" ) ; e)
indefinidamente
*/
A.2.2. FTP
En un principio, la idea fue transferir archivos de un host a otro utilizando el API de
con dicho mtodo es que tiene limitantes sobre el tamao mximo de archivo que puede transmitir, adems de que no garantiza que los datos llegarn correctamente a su destino, lo que nos hubiera obligado implementar algoritmos
30
A.2. Servidor
de deteccin y correccin de errores. Por stas razones la eleccin tomada para transferir archivos de una mquina a otra, fue utilizar FTP.
GNU/Linux Instalacin: Por simplicidad se uso el servidor vsftpd, que se encuentra en los repositorios de ubuntu. El cual
instalamos con la siguiente instruccin:
$ sudo a p t g e t install
l i s t e n= YES anonymous_enable= NO l o c a l _ e n a b l e= YES w r i t e _ e n a b l e= YES l o c a l _ u m a s k =022 d i r m e s s a g e _ e n a b l e= YES x f e r l o g _ e n a b l e= YES c o n n e c t _ f r o m _ p o r t _ 2 0= YES f t p d _ b a n n e r=B i e n v e n i d o c h r o o t _ l i s t _ e n a b l e= YES al
servidor
de
Isaac
:D
c h r o o t _ l i s t _ f i l e =/ e t c / v s f t p d . c h r o o t _ l i s t
pam_service_name=v s f t p d
r s a _ p r i v a t e _ k e y _ f i l e =/ e t c / s s l / p r i v a t e / s s l
c e r t s n a k e o i l . pem c e r t s n a k e o i l
. key
A. Manual tcnico
Ejemplo:
31
Listing A.6: Lista de Usuarios del servidor FTP usuario del utilizado servidor para FTP transferir archivos en el sistema
usuarios
Windows
Servidor FTP FileZilla, se encuentra en su pagina web
http://filezilla-project.org/.
Instalacin:
direccin:
_9_30 . e x e
Una vez que tenemos el archivo (FileZilla_Server-0_9_30.exe) hacemos doble click y hacemos una instalacin estndar. Compatible con Windows 2000, XP y Vista.
Conguracin:
En el rea de Users aadimos el usuario (pds). A continuacin, denimos la carpeta para el FTP. Esto lo hacemos en las opciones de Shared Folders y marcamos las opciones de:
32
A.3. Cliente
Append
Para los archivos (Files) y para los directorios marcamos las opciones de:
A.3. Cliente
El cliente es la parte del sistema desde la cual, el usuario puede respaldar y recuperar los archivos que desee, bsicamente mediante dos tareas principales
Mtodo
cliente.motor.Aplicacion.getServidoresActivos();
DetectorCliente, la cual se encargar
Cuando se llama a ste mtodo, la Aplicacin crea una instancia de la clase disponibles.
de emitir mensajes por inundacin ( broadcast ) los cuales sern contestados por los servidores que se encuentren
84 85 86 87 88 89 90 91 92 93 94 95 96
Listing A.8: Iniciando el mtodo de deteccin A r r a y L i s t <I n v o k e r L o c a t o r > g e t S e r v i d o r e s A c t i v o s ( ) { cliente J B o s s / Remoting . . . " ) ; d c = new DetectorCliente () ;
public
detector
*/
*1000) ;
} }
c a t c h ( Throwable
e)
e . printStackTrace () ;
A. Manual tcnico
33
Pasado algn tiempo detiene el perodo de deteccin de servidores para poder continuar con la ejecucin del programa.
/* try } }
Detiene {
el
detector
*/
System . o u t . p r i n t l n ( " D e t e n i e n d o
cliente
J B o s s / Remoting " ) ;
ArrayList
detectado alguno, en caso contrario, el sistema emite un mensaje de error y termina la aplicacin.
105 106 107 108 109 110 111 112 113 114
Listing A.10: Devolviendo los servidores detectados A r r a y L i s t <I n v o k e r L o c a t o r > s e r v i d o r e s A c t i v o s = d c . s e r v i d o r e s A c t i v o s ( ) ; if ( { System . e r r . p r i n t l n ( " E r r o r : System . e x i t ( 1 ) ; } return servidoresActivos ; No hay servidores activos ") ; System . e r r . p r i n t l n ( " A b o r t a n d o . . . " ) ; s e r v i d o r e s A c t i v o s == n u l l || s e r v i d o r e s A c t i v o s . s i z e ( ) == 0 )
ControlFTP.respaldoMasivo()
varios archivos, a varias mquinas ( con una correspondencia de 1 a 1 ). Tanto para el envo como para la recepcin de archivos, se inician varias sesiones FTP, (una por archivo en el servidor que le corresponde). y se carga o descarga el archivo segn sea el caso.
34
A.3. Cliente
2
A modo de ejemplo se muestra una parte del cdigo del mtodo es muy similar a su contraparte de recuperacin .
ControlFTP.recuperacionMasiva(),
el cual
Listing A.11: Recuperacin de archivos int try { f t p . openConnection ( if ( iniciar hosts . get ( i ) , alias , clave puerto ) ) { ); // V e r i f i c a n d o que se pueda i = 0 ; i < hosts . s i z e () ; i++ ) {
for (
if (
archs . get ( i ) ,
203
204
getNombreArchivo ( a r c h s .
205 206
System . e r r . p r i n t l n ( " ) ;
Recuperacion
fallida .
207
getNombreArchivo ( a r c h s .
208
Dispersar un archivo: Genera cinco copias del archivo original, cada una llamada de la siguiente forma: si el archivo se llama archivo.loquesea, cada una de las copias ser llamada archivo-i.loquesea, donde i es
un dgito entre 1 y 5 (los digitos no se repiten).
Reunir un archivo: Una vez terminada exitsamente la recuperacin de los archivos y se tienen almacenados
en una carpeta temporal (la que se especique en el archivo de conguracin del cliente), la reunin de los fragmentos consiste en eliminar todos los archivos descargados menos uno, y el archivo que se conserve ser renombrado, para que se llame igual que el archivos original, es decir, si el archivo recuperado se llama
ms informacin al respecto consultar la documentacin adjunta con el cdigo fuente del proyecto
A. Manual tcnico
banador, la cual implementa la Archivo y regeneraArchivo3 .
La clase que, en sta versin del sistema, se encarga de las tareas arriba mencionadas, es interfaz
35
cliente.motor.Dispersa,
cliente.motor.Re dispersa-
Para integrar la dispersin de archivos al proyecto, slo se necesita escribir una clase que implemente esta interfaz, y que una instancia de ella reemplace a cada instancia de la clase
cliente.motor.Rebanador.
3 Para
ms informacin al respecto consultar la documentacin adjunta con el cdigo fuente del proyecto
36
A.3. Cliente
Apndice B
Manual de usuario
ndice
B.1. Conguracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2. Modo de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.2.1. Servidor de deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2.2. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.1.1. Servidor de deteccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.1.2. Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37 39
37 38 39 39
B.1. Conguracin
B.1.1. Servidor de deteccin
Para inciar el servidor de deteccin, primero debemos de congurar el archivo servidor.conf para ajustar la direccin IP que tiene la mquina, el puerto de deteccin, as como el tiempo que el servidor de deteccin estar en uso, este se especica en segundos, si se selecciona el 0 es por tiempo indenido y hasta que se elige detener el servidor este se encuentra activo, para detenerlo ejecutamos
ctrl + c.
# Archivo
p u e r t o _ d e t e c c i o n =5400
37
38
B.1. Conguracin
en segundos es 0 el que se mantiene estara activo activo el servidor tiempo JBossRemoting , indefinido
# tiempo # si el
valor
servidor
por
t i e m p o _ s e r v i d o r =0
B.1.2. Cliente
Para poder utilizar las funciones del cliente es necesario congurar un archivo en el cual se especicaran los reconocida.
path
que nos permitan guardar los archivos respaldados, estos archivos deben de existir para que la conguracin sea
# Archivo de
## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # configuracion del cliente # ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # usuario a l i a s =p s d p a s s w o r d=a r c h i v o s # direccion IP local y contrasena para acceder a los servidores FTP r e m o t o s
f i n a l d i r =/home/ f t p #E l archivo estan donde se registran que archivos estan respaldados , y en que servidores
dispersos
l o g r e s p a l d o s =/home/ f t p / l o g r e s p a l d o s
B. Manual de usuario
39
$ java
j a r
servidor . jar
El servidor mostrar los siguientes mensajes al estar activo el tiempo que se haya congurado.
yo5bw3 :
para
f t 0 i t x q f . 0 : lap :1 con ... el URI socket ://192.168.1.25:5400 de los clientes . use C t r l+ C mensajes para
identificado listo
servidor
encuentra remoto
aceptar
J B o s s / Remoting
deternerlo
B.2.2. Cliente
Una vez congurado el archivo al ejecutar el siguiente comando, se obtendr una sinopsis de cmo usarlo
i n t r e p i d @ i n t r e p i d : ~ / p r o y e c t o p r u e b a s / c l i e n t e $
j a r
cliente . jar
Almacenamiento
distribuido
de
archivos .
[h ]
[ l ]
[ r <nombre >]
OPCIONES :
Respaldar quiere
un
a r c h i v o , <a r c h i v o > e s
el
' p at h '
completo
del
archivo
h l
: :
Muestra Lista
40
<nombre> de
Ejemplo
uso :
j a r
cliente . jar
/ etc / fstab
Respaldo
Para realizar un respaldo desde la aplicacin es necesario pasar como argumento la bandera -e y el nombre del archivo que deseamos respaldar, ejecutandolo de la siguiente manera.
java
j a r
cliente . jar
M i a r c h i v o . png
Ejecutado este comando la aplicacin realiza el respaldo en los servidores encontrados siempre que sean 5, en caso de detectar ms de 5 servidores el programa tomar los 5 primeros.
Recuperacin
Para realizar una recuperacin desde la aplicacin es necesario pasar como argumento la bandera -r y el nombre del archivo que deseamos recuperar, ejecutandolo de la siguiente manera.
java
j a r
cliente . jar
M i a r c h i v o . png
Slo si el archivo ha sido respaldado anteriormente y adems se encuentran activos almenos 3 servidores que tienen el archivo este es recuperado con xito.
Ayuda
Para que nos muestre la ayuda debemos de ejecutar al cliente con la bandera -h, este nos mostrar la forma en que deben ser pasadas las banderas dependiendo de la accin que se desee realizar.
java
j a r
cliente . jar
Apndice C
Diagramas
ndice
C.1. C.2. C.3. C.4. Diagramas Casos de Uso . . . Diagramas de Clases . . . . . Diagramas de Secuencia . . . Diagrama de Implementacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 45 48 51
respaldar
recuperar
archivos, en la gura C.1 por ejemplo se muestra una vista global de los casos de
uso del sistema, mientras que en las guras C.3 y C.2 se muestran los detalles de los casos de uso
Recuperacin
41
42
C. Diagramas
43
44
C. Diagramas
45
46
C. Diagramas
47
48
??.
C. Diagramas
49
50
C. Diagramas
51
52
Bibliografa
[1] Documentacin del API de Java:
http://java.sun.com/j2se/1.5.0/docs/api/ http://www.jboss.org/overview.html
https://jxta.dev.java.net http://aspen.ucs.indiana.edu/pss/HPJava/mpiJava.html
A Top-Down Approach Featuring the Internet J.F Kurose & K.W. Ross Pearson Education Inc, 2003, 2nd edition
53