I've to create an offer for a future ASP.NET application. They wants an high availability(99.9%+).
So I'm searching the best solutions with .Net technologies(asp.net mvc 3, IIS 7, SQL Server 2008 R2) to ensure this availability.
So:
- Is there a way to do some clustering on IIS Servers?
- What is the way to ensure this availability with the SQL Server? Replicate the data between two servers(I already know doing this)+switch to the second server if the first isn't available(don't know doing this), or is there a way to directly declare a cluster of database and every sql instruction is writen in two or more database?
One other goal is also that if I've two IIS Server and two SQL Server, to improve the performance, by using some loadbalancing. Is this possible?
Thank you very much for your suggestions/link
For SQL Server, start here: High Availability Solutions Overview. Pay particular attention to the sections on Failover Clustering, which sounds like the solution you're looking for.
IIS supports both failover clustering (also known as server clustering) and NLB, or Network Load Balancing - which is decidedly NOT the same thing.
Failover clustering works on the IP level, and substitutes a warm standby when the primary server goes down, or is otherwise unavailable, for more than a millisecond or so.
While detection is very fast, ramping up the particular standby server may not be; in the case of SQL server, starting up the failover server will take as much as 30-60 seconds.
IIS NLB, on the other hand, is definitely NOT redundant - it just puts 2 or more servers to work on the same workload, and decides which server handles a specific request based on a deterministic algorithm. This may or may not play havoc with session-based applications, and what not, and if one of the servers fails, its requests will simply go unanswered.
VIP-based hardware load balancing is often preferable to this.
For SQL server, the fastest and most available solution is database mirroring - although this takes place on the database level and does not protect the entire SQL instance automatically.
Since you indicate that you will be paid for this, I suggest you familiarize yourself with the various technologies and strategies available - these are not beginner subjects.