High availability/failover with persistent TCP Connection in RHEL 7.1

Latest response

High availability/failover with persistent TCP Connection

I'm trying to figure out the right pieces to implement a highly available & failover setup for a C based server application. The TCP connections would ideally be up for days. If master Server goes down due to a uncontrolled network problem then Standby server will act as Master with TCP connections shifted to this Server.

The data within the socket connections looks very similar to protobuf data structures. It's not HTTP.

Thus far I've been looking at keepalived and HAProxy, but neither seem to allow redirecting/failovering a persistent TCP session to a different Standby server without disconnecting the session.

What I'm looking for is If Master server goes down then Standby server will handle all the Clients with TCP connections without disconnecting TCP session.

Master and Standby will have virtual IP using keepalived.

  |        VIP         |

+----+----+ +----+----+
| Master | <-VRRP-> | Standby |
+----+----+ +----+----+
| |
| |
------+---+------------+---+----------
|
+---+---+
|Client |
+---+---+

What options are there for shifting TCP Connections or Synchronizing TCP Sessions between Master and Standby Server running RHEL7.1. So that Client Connected cannot know whether Master server goes down and Standby Server has become Master Server.

Thanks!

Responses