views:

160

answers:

2

Situation

I have a windows service which I would like to make highly available.

I have two unclustered servers (Windows server 2003 standard edition).

The question is:

What options do I have to make my service highly available in an automated way?

I can think of the asymmetric master-slave option which consists of keeping the service running on both machines with a communication heartbeat between them so one acts as the master and the slave takes over automatically whenever the master does not respond.

Do you know any other ways to implement this?

note: Please don't point me to this answer, I do NOT/won't/can't have clusters.

A: 

I suggest checking MS Patterns and Practices web site, there you could find advice on this topic (for example http://msdn.microsoft.com/en-us/library/ms998414.aspx)

JuanZe
I wrote this answer before you specify that your servers are unclustered
JuanZe
+1  A: 

If you're windows service is hosting a web/wcf service, you can configure your client to have a primary service url and a secondary service url. Then you can modify the client connection logic to use the secondary service when connection to the primary service fails.

You can do this transparently by adding a router service which will do the logic above. Basically proxying the operations for whichever service it is connected to. But this adds another point of failure, the router service.

The simplest i cant think of is to make sure to set the service recovery options on your windows service/s. Something like this http://code.google.com/p/daemoniq/wiki/WindowsServiceRecoveryOptions

HTH

jake.stateresa
I guess this is the best I will get without a proper cluster or a heartbeat.A Web Service is as particular case which is easy to load balance on the client side, provided the client knows both primary/secondary urls. Interesting to learn that WCF now helps with this.Service recovery using daemoniq is interesting and can be a viable option although far from perfect: if the primary gets disconnected from the network, it won't get a chance to do anything or start the secondary!