Arranque del servicio#

IceStorm es un servicio que es parte del middleware y está implementado utilizando las propias herramientas disponibles en él.

En este caso, la implementación está realizada en C++, utilizando IceBox, que sin entrar en mucho detalle, es un framework que permite desarrollar servicios en forma de librerías dinámicas, que luego son cargadas a través de configuración por IceBox.

Para arrancarlo, necesitaremos tener tanto IceBox como IceStorm instalados. Esto se debe realizar a nivel de sistema operativo:

En distribuciones basadas en Debian, deben instalarse los paquetes zeroc-icebox y libzeroc-icestorm3.7. Para la instalación en otros sistemas operativos o distribuciones, consultad la página oficial de instalación de IceStorm.

Una vez instalada la librería, debe arrancarse icebox pasándole la configuración adecuada.

IceBox.Service.IceStorm=IceStormService,37:createIceStorm --Ice.Config=config/icestorm.config

Como se puede observar, el fichero de configuración elige la librería y versión a cargar, pasándole después los argumentos, que en este caso incluyen el fichero de configuración del servicio:

IceStorm.TopicManager.Endpoints=tcp -p 10000
IceStorm.Publish.Endpoints=tcp -p 10001
IceStorm.LMDB.Path=/tmp/icestorm

IceStorm.Trace.TopicManager=2
IceStorm.Trace.Topic=1
IceStorm.Trace.Subscriber=1

IceStorm.Flush.Timeout=2000

Ice.Admin.InstanceName=icestorm
IceMX.Metrics.Debug.GroupBy=id
IceMX.Metrics.ByParent.GroupBy=parent

Con estos dos ficheros ubicados dentro de un mismo directorio config, podremos lanzar el servicio:

$ icebox --Ice.Config=config/icebox.config