Question

I'm building a client-server application and I am looking at adding failover to the client so that when a server is down it will try to connect to another available server. Are there any standards or specifications covering server failover? I'd rather adopt an existing standard than implement my own mechanism.

Was it helpful?

Solution

I don't there is, or needs to be any. It's pretty straight forward and all depends on how you can connect to your sever, but basically you need to keep sending pings/keepalives/heartbeats whatever you want to call em, and when a fail occurs (or n fails in a row, if you want) change a switch in your config.

Typically, the above would be running as a separate service on the client machine. Altenativly, you could create a method execution handler which handles thr execution of all server calls you make, and on Communication failure, in your 'catch' block, flick your switch in config

OTHER TIPS

You're question is very general. here are some general answers: Google for Fault Tolerant Computing

Google for High Availability Solutions

This is usually handled at either the load balancer or the server level. This isn't something you normally do in code at the client.

Typically, you multihome the servers each having their own IP + one that is shared between all of them. Further, they communicate with each other over tcp for the heartbeat to know which is the Active node in an Active / Passive cluster.

I can't tell what type of servers you have, but most of the windows servers can do this natively.

You might consider asking the question at serverfault to see how to properly configure your servers to support this.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top