lunes, 12 de noviembre de 2012
Reporte Grupal
martes, 6 de noviembre de 2012
Puntos extras
En la ingeniería civil, el mejoramiento a la respuesta (datos del movimiento de estructuras) de estructuras debido a la fuerte excitación dinámica es un reto difícil.
Como ya antes mencioné, el sistema WiSSCon ha demostrado que es efectivo y fiable por lo cual no dudo en la futura aplicación de este y similares sistemas de control en las estructuras civiles.
Las personas que trabajaron en esta investigación son: Yang Wang, Andrew Swartz, Jerome P. Lynch, Kincho H. Law, Kung-Chun Lu, Chin-Hsiung Loh
Y la liga de la publicación es:
http://www-personal.umich.edu/~jerlynch/papers/SPIE2006Control.pdf
Las palabras clave para encontrar la publicación aquí presentada fueron:
Keywords: structural control, wireless communication, embedded computing
La redacción total de este post fue hecha por mí, y todas las imágenes fueron obtenidas de la misma publicación.
PD: La publicación no contenía gran información de los temas tratados en la materia, por tal motivo no puse ecuaciones, técnicas o conceptos estudiados durante el semestre.
Saludos!
miércoles, 23 de mayo de 2012
Sistemas Distribuidos (Clase y Laboratorio)
- Juan Carlos: Por haber creado los .sh para descargar, instalar y configurar todo lo necesario.- http://jcecdps.blogspot.mx/2012/05/dps-class-contributions-week-15.html
- Rafael: Por haber implementado las herramientas de monitoreo y creado el servidor de VPN (junto con Juan).
-José: Por habernos guiado a mí y otros 2 compañeros con la instalación y configuración para unirnos al clúster.
jueves, 17 de mayo de 2012
Sistemas Distribuidos (Clase y Lab)
- Rodolfo: Por la aportación de Grids computacionales en la wiki.
jueves, 10 de mayo de 2012
Reporte 14 - Benchmark (Clase)
En esta ocasión para el reporte de la clase de esta semana instalé y corrí el System Profiler y Benchmark llamado "HardInfo".
HardInfo es una pequeña aplicación que muestra información sobre el hardware y sistema operativo.
El post de esta semana se encuentra en la siguiente liga:
Y para mayor información acerca de la aplicación HardInfo pueden visitar la página web del desarrollador: http://hardinfo.berlios.de/HomePage
miércoles, 9 de mayo de 2012
Reporte 14 (Laboratorio)
- Los biólogos emplean grids para simular miles de posibles drogas en sus computadoras con el objetivo de descubrir una molécula capaz de bloquear proteínas específicas de ciertas enfermedades.
- Los científicos de la tierra emplean grids para registrar los niveles de ozono, usando satélites, descargando diariamente cientos de GB de datos.
- Los físicos de altas energías aplican grids en su búsqueda por una mejor comprensión del Universo, sobre la base de una grid de decenas de miles de computadoras de escritorio para almacenar y analizar los 10 Petabytes de datos producidos anualmente por el gran Colisionador de Hadrones. Miles de físicos en docenas de universidades alrededor del mundo quieren analizar esos datos.
- Los ingenieros usan las grid para estudiar energías alternativas, tales como la fusión de energía.
- Los artistas usan las grid para crear complejas animaciones para las películas.
- Los cientistas sociales estudian la vida de las abejas, el maquillaje que emplea nuestra sociedad y los secretos de la historia, mediante el uso de las grid
Se puede decir que la base de esta idea de grid computacional es el compartimiento de recursos.
La computación grid aspira a involucrar a todos en las ventajas de compartir recursos y en los beneficios de incrementar la eficiencia.
Las siguientes son algunas de las ventajas que te dan las grid computacionales:
- Las grid te dan acceso a pode computacional adicional.
- Una grid también te puede dar acceso directo a software, computadoras y datos remotos.
- Una grid te puede dar acceso a sensores remotos (lo que planean hacer algunos compañeros de domótica), telescopios y otros aparatos que no son de nuestra propiedad, pero los podemos rentar o los dueños pueden hacerlos de uso público.
Confiabilidad y seguridad
- Políticas de acceso: ¿Qué se comparte?, ¿A quién se le permite compartir?, ¿Cuándo se permite compartir?
- Autenticación: ¿Cómo identificas a un usuario o a un recurso?
- Autorización: Cómo determinar si una operación específica es consistente con las reglas.
- La capa más baja es la red, ella conecta los recursos de grid.
- Sobre la capa de red descansa la capa de recursos:
los actuales recursos de grid, tales como computadores, sistemas de
almacenaje, catálogos de datos electrónicos, sensores y telescopios que
están conectados a la red.
- La capa intermedia, el middleware, proporciona
las herramientas que permiten a los distintos elementos (servidores,
almacenaje, redes, etc) participar en una grid. Algunas veces la capa
intermedia es “el cerebro” tras la computación grid.
- La capa que se ubica más arriba en la estructura es la de aplicaciones, que incluye aplicaciones en ciencia, ingeniería, negocios, finanzas y más, además de portales y grupos de herramientas de desarrollo cuya función es apoyar a las mismas aplicaciones. Esta es la capa que “ven” los usuarios de grid y con ella interactúan. La capa de aplicación usualmente incluye un servicio de uso (serviceware), que desempeña funciones de manejo de carácter general, tales como el rastreo de quiénes proveen recursos grid y de quiénes los están usando.
http://gridcast.web.cern.ch/Gridcast/
miércoles, 2 de mayo de 2012
Sistemas Distribuidos (Clase)
Incluso generamos las llaves de SSH copiamos las llaves generadas de todos los nodos(ellos no podian copiar mis llaves), después intentamos entrar por SSH todos contra todos, yo podia entrar a las computadoras de todos, pero ellos no podian copiar las llaves que yo había generado, probamos varias veces sin éxito, al final concluimos que podría ser la versión de mi Ubuntu, pero no estoy seguro.
Nomino a los compañeros Jonathan y Avendaño por crear el clúster de manera exitosa y correr aplicaciones en él (pronto me les uniré :p).
Sistemas Distribuidos (Laboratorio)
Pero como menciono arriba existen distintos tipos de tests o pruebas Benchmark.
Existen dos niveles de Benchmark: componentes y sistemas:
- Componentes
Evalúan únicamente partes específicas de una computadora, como por ejemplo el procesador, el disco duro, la tarjeta gráfica, etc. Serán por tanto útiles a la hora de seleccionar componentes específicos para un determinado sistema.
- Sistema
Evalúan el rendimiento global del sistema, miden las prestaciones del procesador, memoria, vídeo, disco duro, etc., trabajando conjuntamente en la computadora. Este tipo de pruebas permiten comparar sistemas diferentes. Responde a cuestiones como ¿Este equipo es más rápido que el equipo? o ¿Puede mi aplicación ejecutarse mas rápidamente en el caso de aumentar la velocidad del procesador, o esta limitada por otros subsistemas?
Estos Benchmark miden prestaciones globales del sistema.
Bueno, apartir de estos conceptos se podrían sacar conclusiones sobre la utilidad de estas pruebas Benchmark, pero de igual manera mencionaré por qué estás pruebas son necesarias:
- Adecuar apropiados estándares de rendimiento que tomen en cuenta las diferentes características del software de 32-bits y las nuevas posibilidades de multitarea, video y 3D que las viejas pruebas no tienen en cuenta.
- Una medida más precisa de las diferencias de rendimiento relativo entre dos computadoras distintas, permitiéndole aumentar la vida útil de una PC con la vista puesta en el futuro.
- Ayudarle a prevenir que tenga que aumentar su inversión antes de tiempo, mostrándole la verdadera diferencia de rendimiento entre dos sistemas.
En una página de IBM encontré información sobre el LINPACK benchmark, ellos realizaron una prueba o test a si Linux clúster, los pasos para la instalación y la ejecución se detallan en la siguiente liga:
http://www.ibm.com/developerworks/linux/library/l-cluster2/
El benchmark Linpack puede conseguirse en versión Fortran, C y como un applet de Java.
Como tema de interés también descubrí que existe LINPACK para Android, funciona exactamente para lo mismo, con LINPACK for Android tu puedes obtener mediciones de las prestaciones de tu teléfono móvil con Android, también aplica para tabletas.
Ya obtenidas las mediciones de tu dispositivo, también tiene la opción de compararlas con otros equipos.
El benchmark Linpack fue desarrollado en el Argone National Laboratory por Jack Dongarra en 1976, y es uno de los más usados en sistemas científicos y de ingeniería.
Luego fueron agregándose cada vez mayor cantidad de máquinas.
Hoy en día, el programa Linpack ha sido reemplazado por el paquete Lapack, el cual hace un uso mucho mejor de las características de la arquitectura RISC (en esencia, sus técnicas algorítmicas fueron modificadas para que pase menor tiempo moviendo datos).
Aquí les dejo un video sobre un Linpack en un móvil con Android:
Pueden encontrar más información y videos sobre este benchmark en el siguiente link:
http://www.greenecomputing.com/
Aquí les dejo una imágen con el benchmark LINPACK for Android en ejecución:
jueves, 26 de abril de 2012
Sistemas Distribuidos (Laboratorio)
También la información solo puede ser modificada, creada o eliminada por quienes estén autorizados (integración), para este tipo de seguridad, yo recomendaría las técnicas y procedimientos que se aplican en algunas empresas como Alestra, para administrar equipos de red (routers, switches, etc) ellos primero tienen que autenticarse con user y password.
TACACS (Terminal Access Controller Access Control System) es un protocolo de autenticación remota, propietario de cisco, que se usa para comunicarse con un servidor de autenticación comúnmente usado en redes Unix. TACACS permite a un servidor de acceso remoto comunicarse con un servidor de autenticación para determinar si el usuario tiene acceso a la red.
Buenas prácticas en seguridad dentro de la red
- Mantener servicios y sistemas actualizados, en cuanto a parches y bug fixes, en este aspecto yo considero que nosotros estamos bien, porque todos tendremos la misma versión de SO además que es la LTS.
- Definir y emplear puntos y procedimientos de acceso (mecanismos de autenticación), aquí considero buena opción realizar un simulador de un servidor TACACS donde cada nodo cuente con su user y password guardados en el master, luego cuando queramos entrar al clúster, que nos pida autenticarnos y nuestros datos se comparen con los guardados en el master, de esta manera una persona no autorizada no podría entrar a nuestro clúster.
- Normar y controlar el acceso a las instalaciones físicas de los sistemas.
Para este punto yo creo que es más aplicable a empresas donde si requieren de un nivel de seguridad máximo, donde su información si es muy importante.
Es bien sabido y he escuchado de muchos expertos que si no tienes una seguridad física de tus equipos, entonces no sirve de nada tu seguridad "virtual", incluso me han platicado de equipos cisco con candado físico, creo yo para proteger puertos. - Implementar sistemas de respaldo. La mayoría de las empresas de IT cuentan con sistemas de respaldo, donde cada moviemiento de información se va actualizando en un disco duro.
En este tipo de sistemas, así como en los sistemas de redundancia (equipos secundarios que entran en acción cuando el principal falla), es muy importante que se verifique periódicamente su buen funcionamiento.
Actualmente está de moda el concepto de "la nube", incluso es una opción para respaldar la información del clúster, pero yo no la considero como una buena opción ya que dependes del servicio de alguien que ni siquiera le pagas para que te aloje tus datos, por lo tanto no te garantiza confiabilidad y disponibilidad. Peor aún dependes de una conexión a internet que debe ser muy segura y poco intermitente, a los proveedores de internet si les pagas, pero igual nunca garantizan confiabilidad.
Yo considero mejor opción un servidor de respaldo propio, que funcioné con la conexión local, por si el internet llega a fallar, tomando en cuenta que nuestro clúster estará dentro de un mismo salón.
- Cifrar o proteger con contraseñas los datos e información importante del clúster. Para eso nosotros estamos trabajando con SSH, con SSH estamos habilitando el establecimiento de conexiones completamente cifradas.
Saludos a todos!
Sistemas Distribuidos (Clase)
martes, 17 de abril de 2012
Sistemas Distribuidos (Clase y Laboratorio)
Lo que hicé esta semana fue solamente documentar (bases) las cosas que necesitaremos para relizar nuestro mini "proyecto", luego esperemos para la siguiente semana implementar el código para poder hacer uso de este interesante feature.
Hicimos está documentación con la intención de ampliarla más adelante con los códigos que vayamos implementando y por supuesto los resultados que conseguimos, si obtenemos buenos resultados les haremos saber (mediante la wiki o una entrada) para así intentar implementarlo con todos los compañeros.
Les dejo la liga del wiki, donde podrán ver la documentación que relicé para poder llevar acabo este proyecto (es solo las ideas, pasos y teoría, luego subiremos nuestras implementaciones de código).
Liga: http://elisa.dyndns-web.com/progra/Documentaci%C3%B3n%20RMI
Saludos!
domingo, 15 de abril de 2012
Sistemas Distribuidos (Clase y Laboratorio)
Java Remote Method Invocation (RMI)
La arquitectura RMI puede verse como un modelo de 4 capas (esto como las capas del modelo ISO OSI ayudan a hacer el troubleshooting en una red con complicaciones, al separar el proceso en layers que cumplen una función en específico):
- Primera capa
- Segunda capa
La capa 2 es la capa proxy, o capa stub-skeleton. Esta capa es la que interactúa directamente con la capa de aplicación. Todas las llamadas a objetos remotos y acciones junto con sus parámetros y retorno de objetos tienen lugar en esta capa.
- Tercera capa
La capa 3 es la de referencia remota, y es responsable del manejo de la parte semántica de las invocaciones remotas. También es responsable de la gestión de la replicación de objetos y realización de tareas específicas de la implementación con los objetos remotos, como el establecimiento de las persistencias semánticas y estrategias adecuadas para la recuperación de conexiones perdidas. En esta capa se espera una conexión de tipo stream (stream-oriented connection) desde la capa de transporte.
- Cuarta capa
La capa 4 es la de transporte. Es la responsable de realizar las conexiones necesarias y manejo del transporte de los datos de una máquina a otra. El protocolo de transporte subyacente para RMI es JRMP (Java Remote Method Protocol), que solamente es "comprendido" por programas Java.
Lo primero que se debe implementar para establecer comunicación entre los programas es el servidor. Vamos a crear una interface que enumere las funciones provistas por el objeto a ser exportado por la red osea que queramos invocar de forma remota (solo se declara, no se define). Esta interfaz es compartida entre cliente-servidor. Del lado del servidor vamos a crear una clase que implemente esta interfaz que acabo de mencionar.Después por el lado del cliente también se accede a esa misma interfaz, pero existe una clase stub que es la que se encarga a establecer el envío del mensaje por red, y recibir una respuesa.
El programa ejemplo se compone de 2 ventanas, una para el cliente y una para el servidor. El cliente tiene una caja de texto donde se escriben los mensajes a enviar; dichos mensajes se envían utilizando un método remoto(el método se encuentra en la clase RmiServidor.java). Mientras, el servidor posee un area de texto donde se muestran los mensajes que recibe de los posibles clientes.
Para descargar el código vayan a la siguiente liga, también podrán encontrar explicación detallada de cómo funciona RMI, el código no lo hice yo, esta es la página del autor: http://casidiablo.net/rmi-%C2%BFque-es-un-ejemplo-sencillo-con-rmi/
El código se compone de 5 clases:
- RmiServidor.java
- GUIServidor.java
- InterfazReceptorMensajes.java
- RmiCliente.java
La clase GUIServidor solo nos servirá para mostrar los procesos que el servidor realicé, osea mostrar el String escrito que le llega al Servidor desde el Cliente.
La clase InterfazReceptorMensajes es una interfaz que hereda de la clase Remote ( de java.rmi.) aquí es donde anteriormente mencioné que se declara el método recibirMensaje (solo se declara, se definirá en la clase RmiServidor.java)
La clase RmiCliente declara un objeto de la interfaz InterfazReceptorMensajes y dos objetos String en donde colocaremos la dirección IP del servidor a conectarnos y el puerto.
Como pueden ver en el código, la dirección del server es la 127.0.0.1, eso quiere decir que el servidor lo correré en la misma computadora (es la dirección localhost), lo ideal es hacerlo en 2 computadoras, también hacer la prueba con más clientes.
El método enviarMensaje es el que realmente utiliza RMI. Dicho método utiliza la función recibirMensaje del objeto rmiServidor, es decir: utiliza el método remoto del servidor a través de la interfaz.
Explicación más detallada del código pueden encontrarla en la liga antes mencionada (página del autor del código). Para la próxima sesión modificaré el código e intentaré correrlo en más computadoras para aprovechar este feature ofrecido por java.
Yo corrí los códigos con éxito y estos son los pantallazos (para compilarlo pueden hacer como con cualquier otro programa de java, yo hice javac *.java):
Saludos!