Archived
Multiple master nodes
Dear Support team,
I am new to Ice, and currently working on designing the architecture of my new system. Playing with a small PoC now... My system will have the following deployment structure: Master node will be receiving requests from users, (pre)process them, and dispatch the processed requests to one of the other 3 Slave nodes. Those Slave nodes will be responsible for the final request processing and returning it back to Master for returning it to the user. Master node has critical, but quite lightweight logic on it, while Slave nodes do all the meaty job. On the Master node, I have ice patch and ice storm configured.
Now I started thinking about failover and wanted to ask you:
Failing a Slave node is not a problem. Failing Master can be a problem, if not managed. If this my application on all nodes is stateless (so some extent), I thought if I could install Master node code on all the nodes (including ice patch, ice storm). So that when Master node fails, I switch the clients from one failed Master to another one chosen from the functioning Slaves. This makes the system look symmetrical peer-to-peer and more robust. Does this approach make sense from the point of view of Ice? If yes, what topic and config parameters I should look into in order to implement it?
I would really appreciate your reply.
Best regards,
Pavel
Comments
-
Hi Pavel,
Ice is a communication framework that makes it easy for two or more processes to talk together. It's up to your application to implement the mechanism and logic to provide high availability for your front-end servers.
Ice can help with this at different levels. For instance, it supports automatic retries to automatically retry a failed request (possibly using another endpoint), a proxy can specify multiple endpoints where each endpoint can point to a different server replica, it provides a location service that also provides facilities to locate server replicas.
I recommend you to go through the Ice documentation for additional information on these features:
- https://doc.zeroc.com/ice/3.7/client-side-features/proxies/proxy-based-load-balancing
- https://doc.zeroc.com/ice/3.7/client-side-features/proxies/indirect-proxy-with-object-adapter-identifier
- https://doc.zeroc.com/ice/3.7/client-side-features/automatic-retries
- https://doc.zeroc.com/ice/3.7/ice-services/icegrid
Cheers,
Benoit.0 -
Thank you a lot, Benoit. I have read the documentation but still cannot figure out if I can have several ice registries in one grid so that if one fails, another one would be used by the grid. Could you please elaborate on this? If it is possible to do this, there is some configuration file that illustrates how to do this.
Thank you,
Pavel0 -
Hello Benoit. Any thoughts about this moment?
0 -
Hi,
Did you check out the IceGrid replication demo from the ice-demos repository?
This demo demonstrates the deployment of a hello world application where IceGrid registries and servers are replicated.
The service provided by the hello server is very basic. For your application, if your servers need to replicate some state, you will need to implement the replication mechanism yourself. Ice and IceGrid do provide the mechanism however to allow the client to connect to a working server replica.
Cheers,
Benoit.0 -
Thank you very much, Benoit. Didn't see that!
0