Most suitable high availability solution

clusterhigh-availabilityhyper-vwindows-server-2008

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.

UPDATE:

  • 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.

UPDATE2:

  • 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.

Best Answer

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

Related Topic