Configurar Glacier2
En esta receta se explica como configurar Glacier2 para permitir el acceso a IceGrid (ubicado en una red privada) desde una red pública.
Configurar IceGrid
En primer lugar es necesario permitir el acceso de Glacier2 a las sesiones de administración de IceGrid. Para ello hay que definir un endpoint a través de la propiedad:IceGrid.Registry.AdminSessionManager.Endpoints=tcp -h host -p portPor medio de la definición de estos endpoints IceGrid crea dos objetos bien conocidos que utilizará Glacier2 para la comunicación con IceGrid.
- IceGrid/AdminSessionManager
- IceGrid/SSLAdminSessionManager
Configurar Glacier2
Ahora desde el ordenador que está conectado a ambas redes (pública y privada) se debe instanciar un glacier2router. Esta instancia debe tener unos endpoints para la parte pública y otros para la parte privada. Esto se consigue con las propiedades:- Glacier2.Client.Endpoints Endpoints parte pública
- Glacier2.Server.Endpoints Endpoints parte privada. Solo hay que indicar protocolo y host
Glacier2.PermissionsVerifier=Glacier2/NullPermissionsVerifierAdemás es imprescindible establecer el default locator del registry que queremos hacer accesible, así como permitir acceder a la sesión de administración.
Ice.Default.Locator=IceGrid/Locator:tcp -h host -p port Glacier2.SessionManager=IceGrid/AdminSessionManagerTambién se pueden añadir diversas propiedades para distintos propósitos, por ejemplo podemos establecer timeouts para solventar problemas con conexiones "zombies".
Glacier2.SessionTimeout=60 Glacier2.SessionManager.LocatorCacheTimeout=60Finalmente queda lanzar el servicio.
Detalles de implementación en las aplicaciones
A la hora de adaptar las implementaciones para utilizar IceGrid vía Glacier2 en lugar de utilizar directamente IceGrid hay que establecer el router por defecto. Por lo que hay que eliminar la propiedad Ice.Default.Locator y añadir la propiedad Ice.Default.Router con el proxy hacia la parte pública de Glacier2. También es necesario declarar las propiedades Ice.ACM.Client e Ice.RetryIntervals.Ice.Default.Router=Glacier2/router:tcp -h host -p port Ice.ACM.Client=0 Ice.RetryIntervals=-1Con respecto al código es necesario establecer una sesión con el router; una vez establecida todo lo demas funciona de forma transparente (al menos si se utiliza direcionamiento indirecto, con direccionamiento directo no lo he probado). En python esto tendría la siguiente pinta:
Referencias
[ show comments ]
blog comments powered by Disqus