High availability/failover with persistent TCP Connection in RHEL 7.1
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
I don't think this is possible, since when a node goes down it is the responsibility of the cluster to make sure it is cut off sessions over there and start resources on another node. untill fence gets success on the failed node, resource would not move to another node, and for successful fencing all sessions would get terminated on the failed node. But I've not worked much on RHEL7 RHCS, hope our community folks would throw up their expert opinion.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
