In some cases failover based on virtual IP is not good solution for applications with high latency requirements (<100ms). In real life it takes time for network hardware to detect the failure and switch the traffic(>200ms or 2-3 sec). In this case critical components of the system should have application servers and brokers in hot reserve and also should have alternate network path for the messages in order to protect the application from software/hardware/network failures.
BTW, Why cannot we use simple cyclical Master/Slave solution?
1. Start fault tolerant pair Master(Host_a)/Slave(Host_b)
2. Master failed on Host_a
3. Slave become stand alone Master on Host_b
4. Start new Slave instead of failed Maser on Host_a
5. Got fault tolerant pair Slave(Host_a)/Master(Host_b)
Especially if persistence is not the issue I cannot see why it would not work.I used similar procedures , but for our own application process (hot reserve). Obviously some synchronization has to be done in background before it could become full tolerant pair again. During that time ?new? broker(Slave) should not allow to failover any clients till it fully synchronized itself with ?old? broker(current Master).
PS: Host_c or Host_a or virtual IP could be used to start new Slave broker
Edited by: gklyuzner on May 9, 2008 5:12 PM
Edited by: gklyuzner on May 9, 2008 5:13 PM
Edited by: gklyuzner on May 12, 2008 3:35 PM