Académique Documents
Professionnel Documents
Culture Documents
Introduccion
1.1 Computacin Grid
La necesidad de aprovechar los recursos disponibles en los sistemas informticos conectados a Internet y simplificar su utilizacin ha dado lugar a una nueva forma de tecnologa de la informacin conocida como computacin grid (Grid Computing) !e este modo" los sistemas distribuidos se pueden emplear como un #nico sistema virtual en aplicaciones intensivas en datos o con gran demanda computacional $n Grid es un con%unto de recursos hard&are y soft&are distribuidos por Internet 'ue proporcionan servicios accesibles por medio de un con%unto de protocolos e interfaces abiertos (gestin de recursos" gestin remota de procesos" libreras de comunicacin" seguridad" soporte a monitorizacin" ) Las organizaciones virtuales 'ue se interconectan por medio de un Grid tienen 'ue mantener sus propias polticas de seguridad y gestin de recursos (sto significa 'ue la tecnologa usada para construir un Grid es complementaria a otras tecnologas aprovechando los recursos distribuidos en la intranet de una organizacin La computacin grid permite aprovechar los momentos de ba%a carga de todos los computadores conectados mediante una red de alta velocidad $na plataforma grid de altas prestaciones involucra un con%unto heterog)neo de nodos de computacin 'ue pueden residir en diferentes ubicaciones" poseer una estructura diferente y utilizar diferentes polticas La tecnologa grid es una tecnologa relativamente nueva" 'ue est en fase de desarrollo y e*plotacin (n el libro +,he Grid- .lueprint for a /e& Computing Infrastructure0" se compara la tecnologa grid con electrical po&er grid" en el sentido de 'ue el usuario debe poder utilizar los recursos computacionales de la misma forma 'ue la energa el)ctrica" es decir" desde cual'uier lugar" con un funcionamiento adecuado y un coste ase'uible (n 1223" durante el congreso 4uperComputing 23" se demostr la factibilidad de e%ecutar aplicaciones cientficas distribuidas en una red de alta velocidad formada por nodos de 15 centros de (stados $nidos (sta demostracin signific el punto de partida de diferentes proyectos 'ue tenan como denominador com#n la comparticin de los recursos de computacin distribuidos (ntre los primeros proyectos grid" surge el proyecto Information 6o&er Grid (I6G) de la /747" 'ue permite la integracin y gestin de recursos de los centros de la /747 6or otro lado" entre las aplicaciones ms conocidas se incluyen los proyectos 4earch for (*traterrestrial Intelligence" 'ue analiza los datos obtenidos por telescopios para la b#s'ueda de signos de vida e*traterrestre" o Great Internet 8ersenne 6rime 4earch (GI864)" cuyo ob%etivo es el descubrimiento del mayor n#mero primo Como se puede observar" la computacin grid se ha utilizado en el anlisis de numerosos tipos de datos 7l igual 'ue el desarrollo de Internet ha sido posible gracias al uso del protocolo estndar ,C69I6" la tecnologa grid tambi)n posee un estndar de facto" denominado Globus Globos proporciona una infraestructura soft&are 'ue incorpora los protocolos y servicios bsicos necesarios para la construccin de aplicaciones grid Globus surge a partir de la colaboracin de distintas universidades y centros de investigacin" 'ue forman ,he Globus 7lliance La tecnologa grid posibilita la resolucin de problemas demasiado costosos a nivel de computacin y gestin de la informacin como para 'ue se resuelvan por una #nica m'uina o un #nico cl#ster de estaciones de traba%o (ntre las aplicaciones 'ue hacen uso de este nuevo paradigma" debido a su gran necesidad de computacin y el enorme con%unto de datos 'ue utilizan" se encuentran aplicaciones de las denominadas ciencias de la vida" 'ue tienen como principal baluarte el conocimiento del genoma humano o los progresos realizados en las neurociencias" as como
aplicaciones de fsica" de modelado del clima atmosf)rico o de visualizacin (stas aplicaciones suelen utilizar sistemas 'ue se encargan de la e*plotacin de la informacin" a partir de t)cnicas de data mining u otros algoritmos de tratamiento de la informacin ,odos estos sistemas re'uieren mdulos de ad'uisicin de datos (information retrieval) eficientes y con una alta capacidad de almacenamiento (n general" las denominadas data:intensive applications o aplicaciones con uso intensivo de datos pueden beneficiarse de la aplicacin de la computacin grid (ste campo" enormemente e*tenso dada la gran cantidad de informacin 'ue gestionan hoy en da las aplicaciones" de%a abiertos numerosos retos tanto formales como tecnolgicos y representa uno de los temas de inter)s ms activos en campo de la informtica distribuida ;esumiendo" las principales venta%as 'ue ofrece la computacin grid son La potencia ilimitada 'ue ofrecen multitud de computadores conectados en red" con su capacidad de proceso La integracin de sistemas y dispositivos heterog)neos La eliminacin de los cuellos de botella de algunos procesos de computacin 4e trata de una solucin altamente escalable /unca 'ueda obsoleta" como ocurre con los grandes e'uipos" debido a su capacidad dinmica de modificar el n#mero y caractersticas de sus componentes
: : : : :
Glaciar: 7lgunos retos de los sistemas middle&are son la seguridad y los fire&alls Glaciar es una solucin fire&all de Ice" 'ue simplifica el despliegue de aplicaciones seguras 7utentica y filtra las solicitudes de los clientes y permite callbacCs al cliente de una manera segura $tilizado en combinacin con Ice44L" proporciona una solucin segura 'ue no permite intrusos y es fcil de configurar IceStorm: un servicio de mensa%era 'ue soporta la federacin (n comparacin con otros servicios de mensa%era o eventos" Ice4torm soporta tipado de eventos" entendiendo 'ue la difusin de un mensa%e en una federacin es tan fcil como invocar un m)todo sobre un interface IcePath: es un servicio de parcheado para distribuciones soft&are 8antener el soft&are actualizado es una tarea tediosa Ice6ath automatiza las actualizaciones tanto de archivos individuales y de %erar'uas de directorios 4olo los archivos modificados son descargados en las ma'uinas cliente" utilizando eficientemente algoritmos de compresin
2. IceGrid
(s un servicio de activacin y localizacin para aplicaciones Ice Aue introducido en la versin Ice D E" anteriormente su traba%o lo realizaba de forma similar Ice6acC" pero debido al auge de la computacin grid se decidi su aparicin IceGrid realiza todas las funciones 'ue realizaba Ice6acC y aFade nuevas funcionalidades 'ue permiten el desarrollo y administracin de aplicaciones Ice en redes grid Como desarrollador" se necesita escribir cdigo para e%ecutarse sobre computadoras grid" y Ice es una suite ideal como infraestructura para permitir a los componentes de una aplicacin grid comunicarse unos con otros Las caractersticas de IceGrid son las siguientes Servicio de localizacin: como implementacin de un servicio de localizacin" IceGrid permite a los clientes unirse indirectamente con sus servidores" haciendo aplicaciones ms fle*ibles y fuertes a los cambios de re'uisitos Activacin de servidor ba o demanda: iniciar un proceso servidor Ice se conoce como activacin de servidor IceGrid puede realizar responsablemente la activacin de un servidor ba%o demanda" es decir" cuando un cliente intenta acceder a un ob%eto hospedado por el servidor La activacin generalmente ocurre como efecto secundario de una unin indirecta" y es completamente transparente al cliente !istrib"cin de la aplicacin: IceGrid proporciona una manera apropiada de distribuir la aplicacin entre un con%unto de computadoras" sin la necesidad de compartir el sistema de ficheros o complicados scripts 4implemente configurando un servidor Ice6atchG y permitir 'ue IceGrid descargue los ficheros necesarios y se mantendrn sincronizados !"plicacin # balance de car$a: Icegrid soporta duplicacin agrupando los adaptadores de ob%eto de varios servidores dentro de un #nico adaptador de ob%eto virtual !urante la unin indirecta" un cliente puede ser destinado a un endpoint de cual'uiera de estos adaptadores 7dems" IceGrid monitoriza la carga de cada computadora y puede utilizar esa informacin para decidir 'ue endpoint debe de destinarse a un cliente %ec"peracin de errores a"tom&tica: Ice soporta sistemas de volver a intentar y de recuperacin de errores en cual'uier pro*y 'ue contenga varios endpoints Cuando se combina con el soporte de duplicacin y balance de carga de IceGrid" recuperacin de errores se traduce en 'ue solicitud fallida se vuelve a realizar transparentemente en el siguiente endpoint con la menor carga posible %esp"estas din&micas: hay 'ue aFadir con respecto a la unin transparente" 'ue las aplicaciones pueden interactuar directamente con IceGrid de diferentes formas para localizar ob%etos 'onitorizacin del estado: IceGrid soporta interfaces 4lice 'ue permite aplicaciones 'ue monitorizan estas actividades y reciben notificaciones sobre eventos significativos" activando el desarrollo de herramientas o integrando eventos de estado de IceGrid dentro de la estructura de gestin e*istente Administracin: IceGrid incluye una lnea de comandos herramientas de administracin grafica" estn disponibles en todas las plataformas soportadas y permiten comenzar" parar" controlar y reconfigurar cual'uier servidor gestionado por IceGrid !esplie$"e: se utilizan ficheros B8L" se puede indicar los servidores 'ue se desplegaran en cada computador Las plantillas simplifican la descripcin de servidores 'ue son id)nticos
Como computacin grid apuntar 'ue el flu%o principal y los servidores de cmputo se vuelven sencillos" los usuarios esperan ms productividad de sus aplicaciones IceGrid en cooperacin con
el entorno de e%ecucin Ice" te releva de las tareas de ba%o nivel para acelerar la construccin y simplifica la administracin de las aplicaciones distribuidas
2.1 Arquitectura
$n e%emplo de Icerid consiste e un #nico registro y varios nodos " 'ue cooperan %untos para gestionar la informacin y servir los procesos 'ue componen la aplicacin Cada aplicacin asigna servidores a los nodos (l registro mantiene un archivo persistente con esta informacin" mientras 'ue los nodos son responsables de iniciar y monitorizar los procesos servidor asignados (n una configuracin tpica" cada nodo se e%ecuta en un computador 'ue hospeda servidores Ice (l registro no consume mucho tiempo de procesador" pero com#nmente se e%ecuta en el mismo computador como un nodoH de hecho" el registro y un nodo pueden e%ecutarse en el mismo proceso si se desea ( emplo La Aigura 1 muestra una aplicacin grid muy simple e%ecutndose en una red de tres computadoras (l registro IceGrid es le #nico proceso de inter)s en el host 6C1" mientras 'ue los nodos IceGrid se e%ecutan en los hosts 6CG y 6CD " en este e%emplo cada servidor ha sido asignado a cada nodo
!esde la perspectiva de una aplicacin cliente" la principal responsabilidad del registro es resolver los pro*ies indirectos como un servicio de localizacin Ice (sta contribucin es transparentecuando un cliente primero intenta conectarse a un pro*y indirecto" el entorno de e%ecucin Ice del cliente contacta con el registro para convertir la informacin simblica del pro*y en un endpoint 'ue permite al cliente establecer una cone*in 7un'ue el registro nos suene a algo parecido" es solamente una tabla de b#s'ueda" esta es la diferencia 6or e%emplo" localizar una solicitud puede provocar 'ue un nodo comience la b#s'ueda del servidor ob%etivo automticamente" o 'ue el registro puede seleccionar el endpoint apropiado basndose en estadsticas de carga de cada computador (sto muestra los beneficios de los pro*ies indirectos- el servicio de localizacin puede proporcionar una gran funcionalidad sin 'ue una accin especial sea realizada por parte del cliente" a diferencia de lo 'ue ocurre con los pro*ies directos" los clientes no necesitan conocimientos previos de la
direccin y puerto de los servidores (l nivel e*tra de indireccin aFade algo de latencia al primer cliente 'ue hace uso de un pro*yH sin embargo" todas las interaciones posteriores se realizan directamente entre el cliente y el servidor" el coste es insignificante 7dems" la indireccin permite a los servidores migrar a distintas computadoras sin la necesidad de mantener actualizados los pro*ies por parte del cliente !"plicacin +%eplication, La fle*ibilidad de IceGrid permite una variedad de configuraciones interminable 6or e%emplo" si tenemos una red grid y 'ueremos replicar un servidor en cada ho%a" como muestra la Aigura G
(n Ice la duplicacin se basa en los adaptadores de ob%eto y no en los servidores Cual'uier adaptador de ob%eto en cual'uier servidor puede participar en una duplicacin" pero es ms probable 'ue todos los adaptadores de ob%eto duplicados sean creados por instancias del mismo servidor e%ecutable 'ue esta funcionando en cada computadora (sta es la configuracin del e%emplo anterior" pero IceGrid re'uiere 'ue cada servidor tenga un #nico nombre Server 1 y Server 2 son nombres diferentes para un mismo e%ecutable (l proceso de unin funciona de manera diferente cuando la duplicacin esta involucrada" el registro tiene varios adaptadores de ob%eto para escoger La descripcin de una aplicacin IceGrid gua la decisin del registro sobre 'ue adaptador o adaptadores de ob%eto utilizar 6or e%emplo" el registro puede considerar la carga del sistema de cada computador ('ue es peridicamente enviado por los nodos) y devolver el endpoint del adaptador de ob%eto de la computadora 'ue tiene una menor carga ,ambi)n es posible 'ue el registro combine los endpoints de varios adaptadores de ob%eto" en cuyo caso el entorno de e%ecucin Ice en el cliente" selecciona el endpoint para el intento de cone*in inicial !esplie$"e +!eplo#ment, (n IceGrid" el despliegue es el proceso de descripcin de una aplicacin al registro La descripcin contiene la siguiente informacin Gr"pos de %eplica: un grupo de replica es el termino aplicado para definir una coleccin de adaptadores de ob%eto duplicados $na aplicacin puede crear los grupos de replica 'ue desee" donde cada grupo debe de tener un identificador #nico .odos: una aplicacin debe asignar los servidores a uno o ms nodos Servidores: la descripcin de un servidor incluye un nombre #nico y la ruta al e%ecutable ,ambi)n describe la lista de adaptadores de ob%eto 'ue crea Adaptadores de /b eto: la informacin de los adaptadores de ob%eto incluye sus endpoints y cual'uier ob%eto bien conocido (&ell:Cno&n) 'ue anuncie
/b etos: un ob%eto bien conocido es #nico y se le conoce por su identidad (l registro mantiene una lista global de cada ob%eto para utilizarse durante le solicitud de localizacin
IceGrid utiliza el t)rmino descriptor para referirse a la descripcin de una aplicacion y sus componentesH para desplegar una aplicacin es obligatorio crear sus descriptores en el registro >ay diferentes formas de hacerlo: : : 4e puede utilizar la herramienta de lnea de comandos 'ue lee descriptores B8L 4e pueden crear los descriptores interactivamente con la herramienta de administracin grafica 4e pueden crear los descriptores programando mediante el interface administrativo de IceGrid
(l servidor de registro debe de e%ecutarse para poder desplegar una aplicacin" pero no es necesario para los nodos 'ue este activo Los nodos 'ue son arrancados despu)s del despliegue" recuperan la informacin 'ue necesitan del registro automticamente $na vez desplegada" se puede actualizar una aplicacin automticamente
3. Caracteristicas:
3.1 Ob eto! "ien Conocido! (#e$$%&no'n)
>ay dos tipos de pro*ies indirectos- uno especifica una identidad y un identificador de adaptador de ob%etos" mientras 'ue el otro contiene una identidad (ste #ltimo tipo de pro*y indirecto hace referencia a los ob%etos bien conocidos" es decir" esta identidad es suficiente para permitir al cliente localizar al ob%eto Ice re'uiere 'ue todas las identidades de ob%etos de una aplicacin sean diferentes" pero generalmente solo unos pocos ob%etos pueden ser localizados por sus identidades (l registro mantiene una tabla de estos ob%etos" 'ue puede ser rellenada de diferentes formas: estticamente mediante descriptores : con programacin mediante la interface administrativa de IceGrid : dinmicamente utilizando la herramienta de administracin de IceGrid La base de datos del registro mapea una identidad de un ob%eto a un pro*y $na solicitud de localizacin 'ue contiene #nicamente una identidad" provoca 'ue el registro consulte esta base de datos 4i hay una coincidencia" el registro e*amina el pro*y asociado para determinar si se necesita hacer traba%o adicional
(l pro*y asociado con Object1 contiene un endpoint" el registro puede simplemente devolver este 6ro*y al cliente 6ara el Object2" el registro publica el id del adaptador y che'uea para ver si e*iste el adaptador identificado como TheAdapter 4i e*iste" intenta obtener el endpoint del adaptador" lo 'ue puede hacer 'ue el servidor se inicie 4i el registro es capaz de determinar el endpoint de un adaptador" entonces devuelve un pro*y directo 'ue contiene ese endpoint al cliente 4i el registro no reconoce TheAdapter o no puede obtener su endpoint" entonces devuelve un 6ro*y indirecto Object2@TheAdapter al cliente 4i se recibe otro pro*y indirecto" el entorno de e%ecucin Ice en el cliente puede intentar una vez mas resolver el pro*y" pero generalmente esto no sucede y el entorno de e%ecucin Ice en el cliente lanza la e*cepcin NoEndpointException como resultado Ainalmente" el Object3 representa una situacin desesperada- Ipuede el registro resolver Object3 cuando su pro*y asociado se referencia a el mismoJ (n este caso" registro devuelve el 6ro*y Object3 al cliente" lo 'ue causa 'ue el cliente lance la e*cepcin NoEndpointException (sta claro 'ue esta situacin hay 'ue intentar evitarla
Tipos de Objetos
La base de datos del registro no solo asocia una identidad con un 6ro*y" tambi)n puede asociar un tipo ,)cnicamente un +tipo0 es un string arbitrario" pero por convencin" representa el tipo 4lice ms obtenido del ob%eto Los tipos de ob%etos son #tiles para realizar preguntas
Descriptores de Objetos
(l descriptor de un ob%eto permite aFadir un ob%eto al registro 4uele aparecer dentro del conte*to de un descriptor de un adaptador" como muestra la siguiente figura de un e%emplo B8L-
!urante el despliegue" el registro asocia la identidad de un ob%eto con el pro*y indirecto" si el descriptor de un adaptador ha omitido el id del adaptador" el registro ha de generar un identificador #nico utilizando el id del servidor y el nombre del adaptador
Descriptores de Servidores
(l e%emplo 'ue muestra la Aigura 3" nos muestra la definicin de dos nodos 'ue contiene un servidor en cada uno" y 'ue forman parte de una aplicacin de ripeo de un cd:rom de audio y convertirlo en archivos 86D (n este e%emplo no se utilizan plantillas
4e ha definido la plantilla del servidor con el nombre de EncoderServerTemplate (l elemento server-template es un elemento 4erver 'ue define un servidor de codificacin La #nica diferencia con el e%emplo anterior es 'ue el elemento s erver esta parametrizado- el parmetro de la plantilla index se utiliza para formalizar identificadores #nicos para el servidor y su adaptador (l smbolo !indes" se reemplaza con el valor del parmetro index donde aparezca La plantilla es instanciada por el elemento s erver-instance" 'ue se puede utilizar en cual'uier sitio donde se utilice el elemento server y 'ue identifica la plantilla 'ue va a ser instanciada y proporciona el valor del parmetro index
Con esto se consiguen ficheros B8L ms pe'ueFos" lebles" y lo ms importante e 'ue desplegar servidores en nodos adicionales es ms sencillo
4e puede observar" 'ue la instancia Node1 utiliza el valor por defecto para el nuevo parmetro exepath" pero la instancia Node2 define una localizacin diferente para el e%ecutable del servidor
(l nombre 'ue se le da a la aplicacin no es importante" y tu solo tienes 'ue definir las plantillas de los servidores y servicios de esta !espu)s de configurar el registro para utilizar este fichero" las plantillas por defecto estn disponibles para todas las aplicaciones 'ue las necesiten Los descriptores de cada aplicacin indican si las plantillas por defecto se pueden importar (por defecto no se puede) 4i las plantillas son importadas" es esencial copiarlas dentro de los descriptores de la aplicacin y tratarlas como si fueran definidas por la propia aplicacin Como resultado" tenemos 'ue los cambios de los ficheros 'ue contienen las plantillas por defecto" no tienen efecto en los descriptores de la aplicacin e*istentes
Descriptores
$n servidor Ice.o* comparte muchas de las caractersticas de otros servidores" pero sus re'uisitos especiales necesitan de un nuevo descriptor 7 diferencia de otros servidores" un servidor Ice.o* generalmente contiene varios servicios independientes" cada uno con su propia instancia comunicadora y fichero de configuracin Como e%emplo" la siguiente figura muestra una aplicacin despliega un servidor Ice.o* 'ue contiene un servicio-
6arece muy parecido al descriptor de un servidor La diferencia ms significativa es el descriptor del servicio" 'ue se construye como un servidor en el 'ue se declaran sus atributos como
adaptadores de ob%eto y propiedades de configuracin (l orden en 'ue los servicios son definidos" determina el orden en el 'ue son cargados por el servidor Ice.o* (l valor del atributo name del adaptador necesita una e*plicacin adicional (l smbolo service es uno de los nombres reservados por IceGrid (n el conte*to de un descriptor de servicio" !service" se reemplaza por el nombre del servicio" y el adaptador de ob%eto tambi)n se le llama ServiceA
P anti as
(n Ice.o* se pueden crear plantillas de servicios y plantillas avanzadas" 'ue son plantillas de servicio dentro de una plantilla de un servidor
(l descriptor del adaptador se declara como miembro del grupo replica &eplicatedAdapter" 'ue tiene 'ue haber sido creado previamente por el descriptor del grupo replica (l grupo &eplicatedAdapter declara un ob%eto bien conocido para 'ue un pro*y indirecto de la forma TheObject sea e'uivalente al pro*y indirecto TheObject@&eplicatedAdapter
IceGrid para un adaptador de ob%eto causa 'ue el nodo incluya la propiedad &eplica$ro+p#d e'uivalente en el fichero de configuracin 'ue genera para el servidor 6or defecto" el registro IceGrid re'uiere 'ue el miembro de un grupo replica sea definido estticamente Cuando se crea un descriptor para un adaptador de ob%eto 'ue identifica un grupo replica" el registro aFade el adaptador a lista de miembros validos del grupo !urante la activacin de un adaptador" en el momento 'ue describe sus endpoints al registro" un adaptador adems puede reclamar 'ue los miembros en un grupo replica sean validados mediante la lista interna del registro (n una plicacion IceGrid bien configurada" este proceso ocurre sin incidentes" pero hay situaciones en las 'ue la validacin puede fallar 6or e%emplo" la activacin de un adaptador falla si la id del adaptador es cambiada sin informar al registro" esto puede ocurrir si se modifica manualmente el fichero de configuracin del servidor 'ue fue generado por el nodo ,ambi)n es posible 'ue la activacin falle cuando el registro IceGrid es utilizado #nicamente como un servicio de localizacin" en cuyo caso los descriptores no han sido creados y adems el registro no tiene conocimiento anterior de los grupos replica o de sus miembros (n esta situacin" la activacin de un adaptador hace 'ue el servidor reciba la e*cepcin Not&esteredException a menos 'ue el registro sea configurado para permitir la registracin dinmica" 'ue se puede hacer definiendo la siguiente propiedad- #ce$rid%&e'istr(%)(namic&e'istration - 1 Con esta configuracin" un grupo replica es creado implcitamente tan pronto como un adaptador se declara como miembro del grupo" y cual'uier adaptador tiene permiso para participar La registracin dinmica a con frecuencia causa la acumulacin de grupos replica y adaptadores obsoletos en el registro La herramienta de administracin de IceGrid permite inspeccionar y limpiar el estado del registro
/#mero de replicas- el grupo replica puede ordenar al registro 'ue devuelva los endpoints de uno (por defecto) o mar adaptadores de ob%eto 4i el numero N es mayor de 1" el pro*y devuelve como respuesta a una solicitud de localizacin los endpoints de los N adaptadores de ob%eto (l entorno de e%ecucin Ice en el cliente selecciona una de los endpoints a azar
Como e%emplo" el siguiente descriptor muestra la utilizacin del balance de carga de tipo adaptativo para devolver los endpoints de los dos adaptadores de ob%eto menos cargados con un intervalo de muestreo de 3 minutos
(l tipo de balance de carga hay 'ue especificarlo" pero los atributos restantes son opcionales
Las primeras tres tareas son responsabilidad del administrador del sistema" pero IceGrid puede ayudar con el cuarta tarea $tilizando un servidor Ice6atchG" se puede configurar los nodos para descargar los servidores automticamente y parchearlas en cual'uier momento La siguiente figura muestra la interaccin de los componentes
Como se puede observar" desplegar una aplicacin IceGrid tiene una gran significacin cuando esta involucrado Ice6atchG !espu)s del despliegue" la herramienta administrativa inicia el parcheado" lo 'ue causa 'ue el registro notifi'ue a todos los nodos activos 'ue estn configurados para la distribucin de la aplicacin 'ue comiencen el proceso de parcheado Cada nodo IceGrid es un cliente Ice6atchG" el nodo realiza el parcheo como cual'uier otro cliente Ice6atchG- se descarga todo si no e*iste una copia local de la distribucin" de lo contrario" realiza un parcheo incremental en el 'ue solo se descarga los nuevos ficheros y de 'uienes las firmas hayan cambiado Los beneficios 'ue conlleva son claros Los archivos de la distribucin se mantienen en una localizacion central 7ctualizar una distribucin en todos los nodos es una manera sencilla de preparar la distribucin maestra y permitir 'ue IceGrid haga el resto La transferencia manual de e%ecutables y ficheros de soporte a cada computador es evitable" %unto con los errores 'ue la intervencin manual a veces introduce
La ruta del servidor es icepatch2server" es decir" 'ue el programa es presentado en la ruta de b#s'ueda del e%ecutable del nodo (l #nico parmetro obligatorio es director(" 'ue especifica el directorio de datos del servidor y conoce el valor de la propiedad #ce.atch2%)irector( (l valor del parmetro instance-name es utilizado como el identificador del servidor cuando se instancia la plantillaH su valor por defecto incluye el nombre de la aplicacin en la 'ue la plantilla es instanciada (ste identificador tambi)n afecta a dos ob%etos bien conocidos declaraos por el servidor Consideremos el siguiente e%emplo-
(ste e%emplo instancia la plantilla Ice6atchG para crear un servidor identificado como 6atch)emo%#ce.atch2 Los ob%etos bien conocidos utilizan este valor como la categora en sus identificadores" tal como .atch)emo%#ce.atch2,server 6ara poder utilizar la plantilla en las aplicaciones" el registro debe de estar configurado para utilizar el fichero con*i',templates%xml como la plantilla por defecto o copiar la plantilla dentro del fichero B8L 'ue describe la aplicacin
Descriptor de Distribuci'n
6roporciona los detalles 'ue necesitan los nodos para poder descargar los ficheros necesarios (l descriptor proporciona el 6ro*y del servidor Ice6atchG y los nombres de los subdirectorios
comprendidos en la distribucin" todos son opcionales 4i el descriptor no proporciona el pro*y" entonces el valor por defecto es!application"%#ce.athc2,server (ste es un pro*y indirecto" lo 'ue implica 'ue el servidor es desplegado con la aplicacin y puede ser iniciado ba%o demanda si es necesario 4i el descriptor no selecciona ning#n subdirectorio" entonces el nodo descarga el contenido del directorio de datos Ice6atchG (n B8L" un descriptor tiene un comportamiento por defecto 'ue describe como es escrito /distrib,0" para especificar un 6ro*y se utiliza el atributo icepatch/distrib icepatch-1.atch)emo%#ce.atch2,Server1,0 Ainalmente" se seleccionan subdirectorios con el siguiente elemento/distrib0 /director(0dir1/,director(0 /director(0dir2,s+bdir/,director(0 /,distrib0 4i se incluyen solo algunos subdirectorios en la distribucin" se pueden minimizar el tiempo y el esfuerzo necesario para descargar el parche en cada nodo
/server id-4SimpleServer4 %%%0 /distrib0 /director(0Server5iles/,director(0 /,distrib0 /,server0 /,node0 /,application0 /,ice'rid0 Cuando un descriptor de distribucin es definido para ambos niveles" aplicacin y distribucin" con%untamente" como se ha mostrado en el e%emplo anterior" IceGrid asume 'ue una relacin de dependencia e*iste entre los dos" a no ser 'ue el servidor sea configurado de otra forma IceGrid che'uea la dependencia antes de parchear el servidor" si el servidor depende de la distribucin del servidor" IceGrid parchea primero la distribucin de la aplicacin" y despu)s parchea la distribucin del servidor 4e puede desactivar esta dependencia modificando el descriptor del servidor" configurando el atributo application-distrib con el valor *alse para informar a IceGrid 'ue las distribuciones son independientes" como muestra el e%emplo siguiente/ice'rid0 /application name-4.atch)emo40 /distrib0 /director(02ommon/,director(0 /,distrib0 /node name-4Node40 /server id-4SimpleServer4 application-distrib-4*alse4 %%%0 /distrib0 /director(0Server5iles/,director(0 /,distrib0 /,server0 /,node0 /,application0 /,ice'rid0
Inte$ridad de Servidor
7ntes de 'ue un nodo IceGrid comience a parchear la distribucin" este se asegura 'ue todos los servidores relevantes estn cerrados (shut do&n) y les previene para 'ue no se reactiven hasta 'ue se complete el parcheo 6or e%emplo" un nodo desactiva todos los servidores donde sus descriptores declaren una dependencia con la distribucin de la aplicacin
(l descriptor para el Server2 proporciona el directorio de distribucin del servidor como una opcin de la lnea de comandos
"e,uisitos de Con!i$uraci'n
$n cliente IceGrid tpico" puede ser configurado con un pro*y localizador" pero los re'uisitos de configuracin cambian cuando el cliente accede indirectamente al servicio de localizacin mediante un router GlacierG" como muestra la siguiente figura-
(n esta situacin" es el router el 'ue debe de ser configurado como un pro*y localizador 4e asume 'ue el endpoint del cliente en el registro utiliza el puerto LEEE" el router necesita la siguiente propiedad de configuracin-
#ce%)e*a+lt%6ocator-#ce$rid,6oc+tor7tcp 8h 19%9%9%2 8p :999 (l nodo es el encargado de proporcionar esta propiedad cuando inicia el router" para 'ue no sea necesario configurarlo e*plcitamente >ay 'ue indicar 'ue todos los clientes del router utilizan el mismo localizador 4i se tiene la intencin de administrar remotamente IceGrid mediante un router GlacierG" se necesita definir una propiedad adicional$lacier2%Session;ana'er-#ce$rid,Session;ana'er $n router solo puede tener un gestor de sesin 4i la aplicacin necesita utilizar su propio gestor de sesin" es necesario desplegar un router e*tra destinado #nicamente a los clientes administrativos IceGrid
>ay 'ue destacar 'ue la ruta del servidor es 'lacier2ro+ter" es decir" el programa debe de estar presente el la ruta de b#s'ueda del e%ecutable del nodo Mtro punto importante es el modo de activacin del servidor- este utiliza la activacin manual (por defecto)" es decir" el router debe de iniciarse manualmente >ay 'ue considerar 'ue el router es el punto de contacto para clientes remotosH si el router no esta funcionando" no hay forma de 'ue los clientes contacten con el localizador y causar 'ue el router se inicie ba%o demanda $n router GlacierG posee una plantilla de configuracin" de los parmetros 'ue contiene los ms interesantes son" por e%emplo" el parmetro instante-name" 'ue permite configurar la propiedad $lacer2%#nstanceName (l valor por defecto de este parmetro incluye el nombre de la aplicacin
'ue utiliza la plantilla (ste parmetro tambi)n afecta a las identidades de los ob%etos implementados por el router" veamos el siguiente e%emploNicegridO Napplication namePQGlacierG!emoQO Nnode namePQ/odeQO Nserver:instance templatePQGlacierGQ client:endpointsPQtcp :h 3 K 5 L :p LEEEQ session:timeoutPQDEEQ server:endpointsPQtcp :h 1E E E 1Q9O N9nodeO N9applicationO N9icegridO 7l instanciar la plantilla $lacier2 se crea un identificador de servidor llamado $lacier2)emo%$lacier2 ('ue es determinado como valor por defecto para el parmetro instantename) Los ob%etos del router utilizan este valor como la categora en sus identidades como $lacier2)emo%$lacier2,ro+ter (l router pro*y utilizado por los clientes debe contener una identidad 'ue concuerde 6ara poder hacer referencia a una plantilla $lacier2 en las aplicaciones" se debe tener anteriormente configurado el registro para utilizar el fichero con*i',templates%xml como plantilla por defecto o copiar la plantilla en el fichero B8L 'ue describe la aplicacin
-a )ctivaci'n a Deta e
La activacin se produce cuando un cliente Ice solicita el endpoint de uno de los adaptadores de ob%eto del servidor mediante un solicitud de localizacin 4i el servidor no esta activo en ese momento" el cliente publica la solicitud" el nodo activa el servidor y espera al adaptador ob%eto ob%etivo para registrar sus endpoints $na vez 'ue los endpoints del adaptador de ob%eto estn registrados" el registro devuelve la informacin del endpoint al cliente (sta secuencia asegura 'ue el cliente revive la informacin del endpoint despu)s de 'ue el servidor este listo para recibir solicitudes
6ara poder utilizar la activacin ba%o demanda sobre un adaptador de ob%eto" el adaptador debe tener un identificador y debe estar en el registro IceGrid
.!iciencia
$na vez 'ue el servidor esta activado" permanece en e%ecucin permanentemente $n nodo desactiva a un servidor cuando lo solicita e*plcitamente" como resultado" los procesos del servidor tienden a acumularse sobre el nodo 'ue los hospeda $na de las venta%as de la activacin ba%o demanda es Ca posibilidad de gestionar los recursos computacionales ms eficientemente 6or supuesto hay muchos aspectos involucrados" pero Ice utiliza una t)cnica particular muy simple- los servidores pueden ser configurados para terminar elegantemente despu)s de 'ue hayan estado parados durante cierto tiempo $n escenario habitual es en el 'ue un servidor para automticamente cuando no ha recibido solicitudes durante un n#mero configurable de segundos ,odo lo 'ue hace falta es establecer la propiedad de configuracin de servidor #ce%Server#dleTime a la cantidad de tiempo deseada
"e$istro de .ndpoint
(n este apartado se e*plican los re'uisitos de configuracin para activar el registro automtico de endpoint en un servidor IceGrid simplifica el proceso de configuracin de dos formas1 G $n servidor 'ue es activado automticamente por un nodo IceGrid no necesita configurar e*plcitamente un pro*y para el localizador por'ue el nodo IceGrid lo define en la lnea de comandos del servidor (l mecanismo de despliegue de IceGrid automatiza la creacin de un fichero de configuracin para el servidor" incluyendo la definicin de los identificadores y los endpoints de los adaptadores de ob%eto
/. .jemp o
(l e%emplo es el tpico >ola8undo para =ava 6ara poder construir la aplicacin necesitamos el =ava 4!R 1 S G o superior y 7pache 7nt 1 K D o superior" 'ue se pueden obtener dehttp-99%ava sun com9%Gse9inde* %sp http-99ant apache org9bindo&nload cgi (l directorio bin de 7nt debe de aFadirse a la variable de entorno 67,>" y hay 'ue definir las siguientes variables de entonroset <A=A>?O;E-/<ava S)@ installation root director(0 set #2E>?O;E-/#ce installation root director(0 set .AT?-A#2E>?O;EABbinCA.AT?A 4e puede construir la aplicacin e%ecutando 7nt en el directorio donde se encentran los archivos fuente" pero antes de e%ecutar la aplicacin hay 'ue modificar el 26ASS.AT? de la siguiente formaset CL74467,>PTIC(U>M8(TVlibVIce %arHTIC(U>M8(TVlibVdb %arHclassesHTCL74467,>T >ay 'ue aFadir" 'ue la =@8 necesita el directorio 'ue contiene las librerias .erCeley !.'ue se lista en java%librar(%path" por tanto el directorio bin de Ice debe de estar en .AT? para poder e%ecutar las aplicaciones 'ue dependen del componente Ice Areeze
*.1 Cdigo
7 continuacin se muestra el cdigo en lengua%e 4lice" su e'uivalente =ava" el codigo para clientes y servidores y los descriptores en B8L
)rc&ivo de Con!i$uraci'n
Ice$rid%Instance&ame'DemoIce$rid # # (!e Ice$rid locator ro)y% # Ice%Default%Locator'DemoIce$rid*Locator+default , # # Ice$rid registry configuration% # Ice$rid%0egistry%Client%End oints'default , Ice$rid%0egistry%1erver%End oints'default Ice$rid%0egistry%Internal%End oints'default Ice$rid%0egistry%2dmin%End oints'default Ice$rid%0egistry%Data'd3*registry # # Ice$rid node configuration% # Ice$rid%&ode%&ame'local!ost Ice$rid%&ode%End oints'default Ice$rid%&ode%Data'd3*node Ice$rid%&ode%Collocate0egistry'#Ice$rid%&ode%Out ut'd3 #Ice$rid%&ode%0edirectErr(oOut'# # (race ro erties% # Ice$rid%&ode%(race%2ctivator'Ice$rid%&ode%(race%4atc!'#Ice$rid%&ode%(race%2da ter'. #Ice$rid%&ode%(race%1erver'5
-.///
-.///
Identi!icador de a )p icaci'n
NicegridO Napplication namePQ4impleQO Nnode namePQlocalhostQO Nserver idPQ4imple4erverQ e*ePQ%avaQ activationPQon:demandQO NoptionO4erverN9optionO Nadapter namePQ>elloQ endpointsPQtcpQ register:processPQtrueQO Nob%ect identityPQhelloQ typePQ--!emo-->elloQ9O N9adapterO Nproperty namePQIdentityQ valuePQhelloQ9O N9serverO N9nodeO N9applicationO N9icegridO
Codi$o 0ava
Servant
im ort Demo%6; { u3lic class HelloI e)tends _HelloDis { # u3lic HelloI(1tring name) _name ' name;
u3lic void sayHello(Ice%Current current) { 1ystem%out% rintln(_name 7 8 says Hello 9orld:8); # u3lic void s!utdo"n(Ice%Current current) { 1ystem%out% rintln(_name 7 8 s!utting do"n%%%8); current%ada ter%getCommunicator()%s!utdo"n(); # # rivate final 1tring _name;
import Demo%6; public class Client extends Ice%2 lication { private void menu() { 1ystem%out% rintln( 8usage+;n8 7 8t+ send greeting;n8 7 8s+ s!utdo"n server;n8 7 8)+ e)it;n8 7 8<+ !el ;n8); #
Cliente
public int run(1tring=> args) { ** ** ?irst "e try to connect to t!e o3@ect "it! t!e A!elloB ** identity% If itBs not registered "it! t!e registryC "e ** searc! for an o3@ect "it! t!e ++Demo++Hello ty e% ** Hello4r) !ello ' null; try { !ello ' Hello4r)Hel er%c!ecDedCast(communicator()%string(o4ro)y(8!ello8)); # catch(Ice%&ot0egisteredE)ce tion e)) { final 1tring ro)y ' communicator()%get4ro erties()%get4ro erty(8Ice$rid%Instance&ame8) 7 8*Euery8; Ice$rid%Euery4r) Fuery ' Ice$rid%Euery4r)Hel er%c!ecDedCast( communicator()%string(o4ro)y( ro)y)); !ello ' Hello4r)Hel er%c!ecDedCast(Fuery%findO3@ectGy(y e(8++Demo++Hello8)); # if(!ello '' null) { 1ystem%err% rintln(8+ couldnBt find a A++Demo++HelloB o3@ect8);
return -;
menu(); @ava%io%Guffered0eader in ' new @ava%io%Guffered0eader( new @ava%io%In ut1tream0eader(1ystem%in)); 1tring line ' null; do { try { 1ystem%out% rint(8''H 8); 1ystem%out%flus!(); line ' in%readLine(); if(line '' null) { break; # if(line%eFuals(8t8)) { !ello%sayHello(); # else if(line%eFuals(8s8)) { !ello%s!utdo"n(); # else if(line%eFuals(8)8)) { ** &ot!ing to do # else if(line%eFuals(8<8)) { menu(); # else { 1ystem%out% rintln(8unDno"n command A8 7 line 7 8B8); menu(); # # catch(@ava%io%IOE)ce tion e)) { e)% rint1tacD(race(); # catch(Ice%LocalE)ce tion e)) { e)% rint1tacD(race(); # # while(:line%eFuals(8)8)); return /; # public static void main(1tring=> args) { Client a ' new Client(); int status ' a %main(8Client8C argsC 8config8); 1ystem%e)it(status); #
Servidor
public class 1erver extends Ice%2 lication { public int run(1tring=> args) { Ice%O3@ect2da ter ada ter ' communicator()%createO3@ect2da ter(8Hello8); Ice%4ro erties ro erties ' communicator()%get4ro erties(); Ice%Identity id ' Ice%Itil%string(oIdentity( ro erties%get4ro erty(8Identity8)); ada ter%add(new HelloI( ro erties%get4ro erty(8Ice%1erverId8))C id);
static public void main(1tring=> args) { 1erver a ' new 1erver(); int status ' a %main(81erver8C args); 1ystem%e)it(status); # #
N9adapterO Nproperty namePQIdentityQ valuePQhello:WXinde*YQ9O N9serverO N9server:templateO Nnode namePQlocalhostQO Nserver:instance templatePQ4imple4erverQ inde*PQ1Q9O Nserver:instance templatePQ4imple4erverQ inde*PQGQ9O Nserver:instance templatePQ4imple4erverQ inde*PQDQ9O N9nodeO N9applicationO N9icegridO
>ay otras opciones de lnea de comandos soportadas" adems de esta" para permitir 'ue un nodo se e%ecute como un servicio Zindo&s o demonio $ni* Cuando el registro esta activo y funcionando" es el momento de desplegar la aplicacin Como nuestro cliente" la utilidad ice'ridadmin permite definir la propiedad #ce%)e*a+lt%6ocator 4e puede iniciar la utilidad con el siguiente comando en una ventana diferente$ icegridadmin --Ice.Config=config -e "application add 'application.xml'" $ java Client
(sto desplegara la aplicacin descrita en el fichero +application *ml0 e inicia el cliente Los mensa%es se mostraran en la pantalla del servicio IceGrid ,ambien se pueden usar los descriptote de los siguientes ficheros para desplegar la aplicacin: application_with_template.xml+ Este descri tor se utiliJa
ara demostrar el uso de las lantillas ara la definiciKn del servidor% Las lantillas ermiten des legar varias instancias de un mismo servidor fLcilmente% , application_with_replication.xml+ Este descri tor se utiliJa ara mostrar la re licaciKn y el 3alanceo de la carga de la a licaciKn so3re varios servidores% 4ara utiliJar estos e@em los utiliJaremos las siguientes llamadas+ $ icegridadmin --Ice.Config=config -e "application add 'application_with_template.xml'" o M icegridadmin ,,Ice%Config'config ,e 8server tem late instantiate 1im le local!ost 1im le1erver inde)'N8