I develop a TCP server application that listens to a specific port. One of my users is asking me if my application can run on an active-active Windows 2008 Enterprise cluster. Having only almost no experience in Windows Clustering, I googled and know that failover will work for Microsoft applications such as IIS and SQL Server, but I wonder if the same works for custom TCP application.

Firstly, I am aware that clients will connect to a virtual IP address instead of the physical IP addresses of the nodes, and if a specific node is down, Windows clustering will automatically redirect any connection request to the other node.

But how about the case in which only my TCP Server application hangs and stops responding (but Windows is still working), will failover still work? I might also intentionally want to reject the client connection if there is a critical application failure.

I would appreciate any pointers, thanks.


Yes you can setup your custom application within a Windows Cluster. However that isn't what your user is asking about. Windows clustering isn't an Active/Active cluster configuration. Windows clustering only supports failover not scale out. For a scale out solution where the service runs on multiple servers at the same time that would require using some sort of load balancer in front of the application which would route requests to one of the servers which is running the software application. The load balancer can be a hardware load balancer such as a Cisco, F5, etc. or a software package like Windows Load Balancer service.

All that said...

If you did install your application within a Windows cluster it would remain running on the same physical machine until the software crashed at which point the Windows cluster would attempt to restart it on the same machine, or it would move it to another machine in the cluster depending on how you have it configured. The Windows Cluster service doesn't monitor what your software is doing and your software could reject sessions all day long and the Windows Cluster would consider this totally normal.

  • @mrdenny- thank you for your detailed answer. :) how about NLB will that work be able to failover on the application level rather than windows itself?
    – Joshua Lim
    Oct 9 '12 at 18:12
  • NLB just routes connections to the TCP port that is open. If your application closes the port then NLB won't route connections to it any more until the port is open again.
    – mrdenny
    Oct 9 '12 at 19:05
  • sorry for the late reply. Does this mean NLB will failover to the other servers in the cluster if the port in the primary server is closed?
    – Joshua Lim
    Oct 18 '12 at 3:31
  • @mrdenny- On further research, I found out that it is possible to remove the local node from the cluster by issuing the "nlb stop" via command line?
    – Joshua Lim
    Oct 18 '12 at 11:32
  • That sounds about right. It's been a while since I've setup an NLB config.
    – mrdenny
    Oct 19 '12 at 17:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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