Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have 2 dedicated servers provisioned for my next project's datastores. The datastores are configured for master-slave replication. There's no inherent automatic failover but I of course want this. That is, I'd love for access to the master datastore to always just work without having to configure a client library to detect when a master is down and failover to the slave.

I've seen Wackamole which is based on the Spread Toolkit. You provide Wackamole with a set of IPs and a bunch of nodes, and regardless of the up/down state of any of the nodes, those IPs will stay available/up. Wackamole detects when a node goes down and ARPs the IP(s) that were up on the now-down node. It's pretty neat actually.

So, my thought was to use Wackamole to keep the 2 virtual private IPs available/up. Clients would then just always use the same private IP to access the master datastore and the same but distinct IP for the slave datastore, even if those IPs were hosted on the same node.

My datastore servers are accessed over a private network. I am unsure if this messes with Wackamole though.

Is this lunacy? How do you generally handle automatic failover of private services like a datastore.

FWIW, it shouldn't matter but the datastore is Redis. I don't want to hear "use mySQL" please :)


share|improve this question
up vote 1 down vote accepted

That seems reasonable to me. There will be a short period of time when your client might not be able to connect at all. The advantage of having the client know about the different servers is that it can try the slave right away. However, if you can live with a small number of errors, this should work.

share|improve this answer

Use master master replication rather than master slave. let your clients write to both masters. Readers will connect to whichever available master.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.