This forum has been archived. Please start a new discussion on GitHub.

IceStorm Multiple instances (replica) how to make ?

Hello All,

In my case I have solution which we using Ice 3.5 and we got grid (multiple servers environment ) with single point of failure which is REQUESTDISPATCHER/CALCULATINGNODE/Registry/IceStorm/IcePatch on one server. As an improvement process I’ve used replica for Registry and REQUESTDISPATCHER to avoid single point of failure and have it on multiple servers. Till that moment all working ok, it is possible to communicate to all Nods of grid (CALCULATINGNODE and REQUESTDISPATCHER) registry with replica is working proper.
Only part which causing problem is IceStorm and IcePatch.
As I was going thru documentation I’ve find out that IcePatch is not able to have multiple instances or Replicas on one Grid environment (multiple servers) so I left that as a single service on one server. As I understand IcePatch is only used when system/application is updated so it is acceptable to lose that service for normal daily operations, or I’m wrong?
IceStorm is more problematic, I was able to create multiple instances and replicas but there was no communication flow (not possible to see events from grid elements). When I have single instance IceStorm for whole grid with replicated CALCULATINGNODE , REQUESTDISPATCHER and registry all working ok , events are proper shown and saved. Then IceStorm instance name is “GridName.IceStorm”. But when I have multiple instances and IceStorm instance name is “GridName.IceStorm.NodName” and I’m not able to see any event flow and they are not saved.
When I looking in local machines grid folders I see event are generated in to local output, but not shown in global grid event.
As I understand IceStorm is used for events flow, or I misunderstand that ?

I’ve got question about IceStorm. Is it possible to have multiple instances or replicas of IceStorm on single Grid environment ? If Yes can you provide me any working examples ?

Best Regards



  • benoit
    benoit Rennes, France

    Hi Konrad,

    Regarding IcePatch, you're correct: it's only used for distributing new binaries, it's in general not needed to replicate this service as it can easily be transferred to another machine if the machine hosting it fails. That said, you could also create multiple instances of IcePatch and configure your clients or IceGrid to use these multiple instances. Note however that we are deprecating IcePatch2, it won't be included in the next major Ice version. We recommend using more standard mechanism for distributing binaries on the different machines (file system sharing, Ansible, Puppet, etc).

    For IceStorm, you should be able to deploy a replicated IceStorm service with IceGrid. We demonstrate this with the IceStorm/replicated demo from the ice-demos repository. This demo specifies the deployment of 3 replicated IceStorm instances.

    It's not clear why events are not forwarded when you deploy multiple IceStorm instances. We would need more specific details on the configuration of your deployment and how your subscriber/publisher obtain the proxy on the IceStorm instances to be able to help.

    I suggest that you look into the demo and don't hesitate to come back to us if you have any additional questions.

    Also, it's not clear if you're still using 3.5 or not... I strongly recommend using the latest Ice 3.7 version, 3.5 is quite old. If you use the C++98 mapping or Java-Compat mapping, you should also consider upgrading to the C++11 mapping and the new Java mapping.