My company is hosting a website in a server with IIS, SQL Server and a 3rd party windows service (written in C#, source code available for amendments).

We bought a new identical server, composed by: 1x Quad Core, 12GB RAM, 4x160GB SATA Raid 5, Windows Server 2008 R2 Datacenter, Public IP.

We aim to put all webpages and the 3rd party windows service in an high-availability state.

After some lab-testing on how to configure Failover Clustering and Hyper-V, we have deep doubts on what the "best" solution would be, by "best" meaning maintainable and able to correctly handle a physical server failure.

Any suggestion on how we should configure the two servers?
We don't need all the configuration's step, just an hint on the right direction to follow.


  • No external SAN at the moment.
  • The mentioned services (SQL, IIS, Custom Windows Service) will require the most resources.
    There might be an Exchange server coming, but it's not important as of now.
  • No Domain Controller configured at the moment.

There are lacking elements, but we don't know which ones are more important than others, and which are the steps we should follow.


  • We wrote down a rough idea of we think would suit our needs. You can find the pdf here.
  • Question is now bountied. I understand there is a lot of IT Professionalism behind this kind of stuff, and it's understandable to reward the correct suggestion.
  • Our idea is based on these assumptions (please, correct any of them if you find them wrong):
    • You need a domain to create a Windows Failover Cluster
    • You can't install exchange on a Windows Failover Cluster
    • Domain controller is a single point of failure

Virtual machines seem to solve all these kind of problems, but they use also a lot of resources.

Isn't there a simpler failover configuration using two physical servers to just failover the SQL instance?
Web pages are stateless and the C# windows service operates mainly on the SQL database, I guess it would be possible to configure them using NLB?

Feel free to ask for more information if you need them, by putting a comment to this question.

  • Is any one component a particularly heavy-duty application, i.e. how many vCPUs per component (IIS, SQL, 3rd party piece)? – Chopper3 Apr 16 '10 at 16:13
  • 1
    If by 'best' you mean simple and hassle free, then there is no answer :) – JamesRyan Apr 16 '10 at 16:25

Are all of these services running on one system? I don't know what the load on the system is, but it sounds like achieving an active-active setup would be difficult.

First thing that comes to mind for me is to just use NLB for the web portion. Set one system as primary and the other to take over if the first one fails. Mirror your database using SAFETY FULL so that the slave sends confirmation of a query being hardened in it's logs before the principal does the same. This ensure your data stays in sync if one dies, assuming your application can handle this as it will add some delay to the process. Database failover can also be made automatic with mirroring.

If you are relying on IIS for your applications sessions, active-active won't work anyways because each server wouldn't know about the sessions on the other server.

Edit: Links to some resources:

Configuring NLB http://support.microsoft.com/kb/323437

Configuring Database Mirroring http://technet.microsoft.com/en-us/library/cc917680.aspx

  • I am looking for an automated failover active-passive configuration and the suggested NLB solution seems to fit; how can I handle the two different public IPs (one for each server)? – Alex Bagnolini Apr 22 '10 at 16:22
  • 1
    Within NLB you will specify the resources to add to the cluster. You will have to add whatever IP's you intend to use to both systems, and then specify the shared IP in NLB. There are plenty of resources and guides out there covering the initial setup of this. If your systems are actively being used now, I would suggest you setup two test systems to help create a solid upgrade path. They can each have the same IP, but if you need two IPs you can add both. With one IP in an active/passive setup, the passive will take over the IP in the event of the actives failure. – sinping Apr 22 '10 at 17:24
  • If you provide a link to how to configure it (I am actively searching it of course) I will accept your answer. Thank you again. – Alex Bagnolini Apr 23 '10 at 7:00
  • This is the answer that gave me the biggest step ahead on the whole configuration, thank you. – Alex Bagnolini Apr 23 '10 at 22:16
  • You're welcome, glad I could help. – sinping Apr 25 '10 at 2:56

Sounds like you were on the right track to me. I'm assuming you have everything on an external SAN right?


My assumption is you are talking HA with no COOP.

The following recommendations will provide you with HA & COOP, using industry leaders.

Some recommendations:
(1) Move to VMware instead of Hyper-V.
(2) Move your physical OSes into virtual ones using V2P software
(3) Move your SQL server into dedicated VMs, and move to an Active-Active mode
(4) Abstract your storage using Netapp
(5) Buy an additional Netapp + x86 server, or 2 for your COOP site

You should have abstracted RAID6 storage, available locally and remotely. The Netapps should be replicating
You should have multiple VMs running your web server (IIS Clustered) & C# app
You should have multiple VMs running your DB

If your DB is very performance sensitive, consider keeping it physical.


Look into VMware FT technology: http://www.vmware.com/products/fault-tolerance/overview.html

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.