Vous êtes sur la page 1sur 30

1.

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

1.2 Ice (The Internet Comunication Engine)


(s un middle&are #til para programadores $na plataforma de comunicacin a trav)s de Internet de alto rendimiento" Ice incluye una gran variedad de servicios y plu:ins Ice esta formado por los siguientes pa'uetes: : : Slice: (l lengua%e de especificacin para Ice (stablece el contacto entre servidores y clientes y adems es utilizado para describir datos persistentes Compiladores Slice: Las especificaciones en 4lice se pueden compilar en varios lengua%es de programacin- C<<" =ava" 6itn" 6>6" C? y @isual .asic Los servidores y clientes Ice traba%an %untos" a pesar del lengua%e de programacin Ice: (l n#cleo de librerias Ice" entre otras caractersticas este pa'uete gestiona todas las tareas de comunicacin utilizando un protocolo de altamente eficiente" proporciona soporte de hilos para servidores multihilo y funcionalidades adicionales para soportar escalabilidad e*trema con a priori millones de ob%etos Ice IceUtil: una coleccin utilidades como mane%o de $nicote y programacin con hilos (C<< solo) IceBox: $n servidor de aplicacin especifico para aplicaciones Ice Ice.o* puede e%ecutar y administrar servicios Ice 'ue son cargados dinmicamente como una !LL" librera compartida o clase =ava IceGrid: $n sofisticado servidor de activacin y herramienta de despliegue para computacin grid avanzada Freeze: proporciona persistencia automtica para servants Ice Con unas pocas lneas de cdigo" una aplicacin puede incorporar un vector altamente escalable 'ue gestiona eficientemente ob%etos persistentes FreezeScript: es necesario para cambiar tipos de datos persistentes" especialmente en proyectos soft&are grandes 6ara minimizar el impacto de estos cambios" Areeze4cript proporciona herramientas de inspeccin y migracin para bases de datos Areeze La herramienta soporta scripts basados en B8L ya 'ue es potente y fcil de usar IceSSL: $n plug:in de transporte 44L dinmico para el n#cleo Ice 6roporciona autenticacin" encriptacin e integridad de mensa%e" utilizando un protocolo 44L estandar

: : : : :

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

Fi$"ra )* Aplicacin IceGrid Simple

!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

Fi$"ra -* Servidor %eplicado en "na %ed Grid

(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

Fi$"ra 0* ( emplo de /b etos 1ell23no4n # s" Proxies

(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-

Fi$"ra 5* !escriptor de "n /b eto

!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

3.2 (anti$$a! (Temp$ate!)


Las plantillas IceGrid simplifican la tarea de crear los descriptores de una aplicacin $na plantilla es un descriptor parametrizado 'ue se puede instanciar cuando sea necesario 4on componentes de una aplicacin IceGrid y por tanto se almacenan en la base de datos del registro Las plantillas se pueden crear mediante ficheros B8L e interactivamente con la herramienta administracin grafica 4e pueden definir plantillas para descriptores de servidores y servicios (n este punto se describen los descriptores de servidores

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

Fi$"ra 6* !e7inicin de Servidores .ormal

La Aigura K muestra una definicin e'uivalente del e%emplo utilizando plantillas

Fi$"ra 8* !e7inicin de Servidores con 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

Parmetros de una P anti a


Los parmetros permiten especificar cada instancia de una plantilla cuando sea necesario (n el e%emplo anterior se defina el parmetro index con un valor diferente para cada instancia" lo 'ue permite asegurar 'ue los identificadores eran #nicos" a este tipo de parmetros se les llama parmetros obligatorios (mandatory) y no tienen valor por defecto Los parmetros permiten definir el valor por defecto 'ue se utiliza en una plantilla si no se especifico ninguno $n e%emplo de parmetros con valores por defecto" supongamos 'ue la ruta (pathname) del e%ecutable del servidor puede cambiar en cada nodo" se puede proporcionar un valor por defecto para este atributo y anularlo cuando sea necesario

Fi$"ra 9* Plantilla con Par&metros con :alor por !e7ecto

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

P anti as por De!ecto


(l registro IceGrid puede ser configurado para proporcionar descriptores de plantillas por defecto para utilizarse en aplicaciones La propiedad de configuracin #ce$rid%&e'istr(%)e*a+ltTemplates especifica la ruta del fichero B8L 'ue contiene las definiciones de las plantillas 4i el fichero plantilla es proporcionado por la distribucin Ice" lo hace como con*i',templates%xml" y contiene las plantillas de ayuda para desplegar servicios Ice tales como Ice6atchG y GlacierG $n fichero plantilla puede tener la siguiente estructura-

Fi$"ra ;* (str"ct"ra de "n Fichero Plantilla

(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

3.3 Integracin con Ice"o)


La configuracin de los servidores Ice.o* para 'ue hospeden uno o ms servicios" se hace muy fcilmente con IceGrid

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-

Fi$"ra <* ( emplo de Servidor IceBox

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

3.* +up$icacin (,ep$ication)


IceGrid soporta duplicacin como una implementacin del servicio de localizacin de Ice $na aplicacin define sus grupos replica y sus adaptadores de ob%eto participantes utilizando descriptores" entonces IceGrid genera la configuracin del servidor automticamente

Descriptor de un Grupo "ep ica


(l descriptor 'ue define un grupo replica puede opcionalmente declarar ob%etos bien conocidos y configurar los grupos para determinar su comportamiento durante una solicitud de localizacin @eamos un e%emplo-

Fi$"ra )=* ( emplo de !"plicacin

(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

#iembros de un Grupo "ep ica


6ara 'ue un adaptador de ob%eto participe en un grupo replica" tiene 'ue especificar la id del grupo en su propiedad de configuracin &eplica$ro+p#d Identificando el grupo replica en el descriptor de

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

3.- "a$ance de Carga


La duplicacin es una caracterstica muy importante de IceGrid pero cuando se combina con el balance de carga" la duplicacin es ms #til Los nodos IceGrid regularmente informan sobre la carga del sistema de sus hosts al registro La configuracin de un grupo replica determina si el registro considera la carga del sistema cuando decide 'ue endpoint(s) devolver al cliente como respuesta a una solicitud de localizacin (l balance de carga IceGrid posibilita la asistencia al cliente durante la seleccin del endpoint inicial para la cone*in" todas las solicitudes siguientes sobre el pro*y 'ue inicio la cone*in son enviadas al mismo servidor sin consideraciones adicionales sobre el balance de carga

Con!i$urar un Grupo "ep ica


$n descriptor de un grupo replica opcionalmente contiene un descriptor de balance de carga 'ue determina como se utiliza la carga de los sistemas en las solicitudes de localizacin (l descriptor de balance de carga contiene la siguiente informacin ,ipo- hay varios tipos de balance de carga soportados Intervalo de muestreo- uno de los tipos de balance de carga considera las estadsticas de carga del sistema" 'ue es informada por cada nodo a intervalos regulares (l grupo replica puede especificar el intervalo de muestreo a 1" 3 o 33 minutos

/#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

Fi$"ra ))* ( emplo de Utilizacion del Balance de Car$a

(l tipo de balance de carga hay 'ue especificarlo" pero los atributos restantes son opcionales

Tipos de %a ance de Car$a


$n grupo replica puede seleccionar uno de los siguientes tipos de balance de carga .one +nin$"no,: 4i no se 'uiere balance de carga" una solicitud de localizacin recibe los endpoints de todos los adaptadores del grupo (l registro no considera la carga del sistema en este caso %andom +aleatorio,: selecciona un adaptador de ob%eto de entre los disponibles de forma aleatoria (l registro no considera la carga del sistema de un grupo replica con este tipo Adaptative +adaptativo,: utiliza la informacin de carga del sistema para elegir los adaptadores de ob%eto menos cargados durante ese intervalo de muestreo (ste es el #nico tipo de carga 'ue utiliza intervalos de muestreo %o"nd %obin: devuelve los adaptadores de ob%eto menos recientemente utilizados (l registro no considera la carga del sistema para un grupo replica con este tipo

3.. +i!tribucin de $a Ap$icacin


Cuando se hace referencia a una aplicacin utilizando el t)rmino +despliegue0" se 'uiere decir 'ue se han creado los en el registro $na definicin mas amplia re'uiere otras tares adicionales (scribir los ficheros de configuracin IceGrid y preparar los directorios de datos en cada computador Instalar los binarios y las libreras dependientes de IceGrid en cada computador 7rrancar el registro y9o el nodo en cada computador" y posiblemente configurar el sistema para 'ue los lance automticamente !istribucin de los e%ecutables de los servidores" libreras dependientes y ficheros de soporte a los nodos apropiados

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

Fi$"ra )-* 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

Desp e$ando un Servidor IcePatc&2


4i utiliza se utilizan las habilidades de distribucin de IceGrid" se recomienda utilizar servidores Ice6atchG %unto con la aplicacin 6roporcionan los mismos beneficios 'ue cual'uier otro servidor IceGrid" incluyendo la activacin ba%o demanda y administracin remota (n aplicaciones 'ue necesitan una distribucin muy grande" se pueden replicar varios servidores Ice6atchG para balancear la carga Consideraciones del parcheado !esplegar y parchear se tratan de cmo dos pasos separados- el primer paso es desplegar la aplicacin" despu)s se inicia el proceso de parcheado Los servidores Ice6atchG y los ficheros de soporte son distribuidos por el administrador del sistema %unto con el registro IceGrid y los nodos a los computadores apropiados (l servidor es configurado para activacin ba%o demanda para 'ue su nodo se inicie automticamente cuando comienza el parcheado 4i el servidor se configura para activacin manual" se debe de iniciar antes de comenzar el parcheado Plantilla del Servidor La distribucin Ice incluye una plantilla de servidor Ice6atchG 'ue simplifica la inclusin de Ice6atchG en la aplicacin La siguiente figura muestra una parte relevante de fichero con*i',templates%xml-

Fi$"ra )0* Plantilla de Servidor IcePatch-

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-

Fi$"ra )5* ( emplo de Instanciacin con Plantilla

(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

Distribuci'n de Servidor ( a )p icaci'n


(l descriptor de distribucin puede ser utilizado en dos conte*tos- aplicacin y servidor Cuando aparece a nivel de aplicaron" significa 'ue todos los nodos de la aplicacin descargan la distribucin (sto es #til para la distribucin de los ficheros necesarios por todos los nodos en los 'ue los servidores son desplegados" especficamente en un entrelazado (grid) de computadoras heterog)neas" donde es muy tedioso repetir la misma informacin de distribucin en cada descriptor de un servidor (l siguiente es un e%emplo simple en B8L/ice'rid0 /aplication name-1.atch)emo10 /distrib0 /director(0 2ommon/,director(0 /,distrib0 3 /,application0 /,ice'rid0 7 nivel de servidor" el descriptor de distribucin descarga los directorios especificados para un uso privado del servidor/ice'rid0 /application name-4.atch)emo40 /distrib0 /director(02ommon/,director(0 /,distrib0 /node name-4Node40

/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

*ti i+aci'n de as Distribuciones


Los nodos almacenan la distribucin de la aplicacin y de los servidores en su directorio de datos La ruta de la distribucin esta representada por variables reservadas 'ue se pueden utilizar en sus descriptores aplication%distrib- se utiliza %unto al descriptor del servidor para referir al directorio de ms alto nivel de la distribucin de la aplicacin server%distrib- contiene el valor del directorio de ms alto nivel en la distribucin del servidor 4olo se puede utilizar %unto al descriptor del servidor 'ue tiene la distribucin

La siguiente figura muestra un e%emplo de utilizacin de ambas variables-

Fi$"ra )6* ( emplo de Utilizacin de las :ariables de !istrib"cin

(l descriptor para el Server2 proporciona el directorio de distribucin del servidor como una opcin de la lnea de comandos

3./ Integracin con G$aciar


(ste apartado proporciona informacin para integrar un router GlacierG en un entorno IceGrid

"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-

Fi$"ra )8* Utilizacin de IceGrid por medio de "n %o"ter Glacier-

(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

Desp e$ar un "outer


La distribucin Ice incluye una plantilla de servidor por defecto para servicios Ice tales como Ice6atchG y GlacierG" 'ue simplifica la tarea de desplegar estos servidores en el dominio IceGrid $n parte relevante del fichero con*i',template%xml se muestra a continuacin-

Fi$"ra )9* Parte del Fichero config/template.xml

>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

3.0 Acti1acin de 2er1idor


La activacin de un servidor ba%o demanda es una caracterstica valorada en las ar'uitecturas de computacin distribuida por varias razones 8inimiza el tiempo de arran'ue de la aplicacin" evitando la necesidad de pre:iniciar todos los servidores 6ermite a los administradores usar los recursos computacionales ms eficientemente por'ue solo los servidores 'ue actualmente se necesitan funcionan 6roporciona ms fiabilidad en el caso de algunos escenarios de fallo del servidor" por e%emplo" el servidor es reactivado despu)s de un fallo y todava es capaz de proporcionar algunos servicios a los clientes hasta 'ue el fallo es resuelto 6ermite la activacin y desactivacin remota

-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

C'di$o en -en$uaje S ice


#ifndef HELLO_ICE #define HELLO_ICE module Demo { interface Hello { nonmutating void sayHello(); idem otent void s!utdo"n(); #; #; #endif

)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);

ada ter%activate(); communicator()%"ait?or1!utdo"n(); return /;

static public void main(1tring=> args) { 1erver a ' new 1erver(); int status ' a %main(81erver8C args); 1ystem%e)it(status); # #

Descriptor para *ti i+aci'n de Dup icaci'n


NicegridO Napplication namePQ4impleQO Nserver:template idPQ4imple4erverQO Nparameter namePQinde*Q9O Nserver idPQ4imple4erver:WXinde*YQ e*ePQ%avaQ activationPQon:demandQO NoptionO4erverN9optionO Nadapter namePQ>elloQ endpointsPQtcpQ register:processPQtrueQ replica:groupPQ;eplicated>ello7dapterQ9O Nproperty namePQIdentityQ valuePQhelloQ9O N9serverO N9server:templateO Nreplica:group idPQ;eplicated>ello7dapterQO Nload:balancing typePQround:robinQ9O Nob%ect identityPQhelloQ typePQ--!emo-->elloQ9O N9replica:groupO Nnode namePQlocalhostQO Nserver:instance templatePQ4imple4erverQ inde*PQ1Q9O Nserver:instance templatePQ4imple4erverQ inde*PQGQ9O Nserver:instance templatePQ4imple4erverQ inde*PQDQ9O N9nodeO N9applicationO N9icegridO

Descriptor para *ti i+aci'n de P anti a


NicegridO Napplication namePQ4impleQO Nserver:template idPQ4imple4erverQO Nparameter namePQinde*Q9O Nserver idPQ4imple4erver:WXinde*YQ e*ePQ%avaQ activationPQon:demandQO NoptionO4erverN9optionO Nadapter namePQ>elloQ endpointsPQtcpQ register:processPQtrueQO Nob%ect identityPQhello:WXinde*YQ typePQ--!emo-->elloQ9O

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

*.3 E ecutando IceGrid


$na vez 'ue el fichero de configuracin esta escrito y la estructura de directorios preparada" se esta preparado para iniciar el registro y nodo Icegrid 6ara utilizar un registro y nodo colocado" solo necesitamos usar un comando$ icegridnode --Ice.Config=config warn

>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