Archived
This forum has been archived. Please start a new discussion on GitHub.
IceStorm failover, resolving endpoints during runtime
In my project I plan to provide IceStorm failover so this service could run on any host and all subscribers/publishers resolve IceStorm service endpoints during runtime. Could you suggest the best way to do so not using indirect proxies and/or locators? Note: IceGrid will be not used intentionally because of internal requirements.
Thanks in advance.
Thanks in advance.
0
Comments
-
Hi,
The indirection mechanism that Ice provides to resolve endpoints at runtime is the Ice::Locator interface which is implemented by IceGrid. If you can't use it, you either have to implement your own mechanism or use another indirection mechanism.
You could for instance implement a small registry service where you register the endpoints of the running IceStorm service and your publishers/subscribers would first contact this registry to get the IceStorm endpoints. This service could be replicated for higher reliability.
Another option would be to use a DNS hostname. Your publishers/subscribers would always contact the IceStorm service with for example the endpoint: "tcp -h icestorm.dummy.com -p 15000" and you would update the DNS each time the IceStorm service is relocated to another host.
Finally, you could also use a proxy with multiple endpoints for the IceStorm topic manager. Each endpoint would point to a potential location of the IceStorm service (e.g.: "tcp -h 192.168.0.1 -p 15000:tcp -h 192.168.0.2 -p 15000:tcp -h 192.168.0.3 -p 15000").
Cheers,
Benoit.0