We've developing a database driven (70%/30% read/write load) website using C#.NET, IIS and MS SQL Server 2008 to be hosted on Windows 2008. Due to contractual reasons our setup has to be hosted on our own physical/virtual servers instead of a cloud solution at this stage.

Could someone outline or link to some best practices that would provide both high availability (priority at the moment) and eventually load balancing for our site. We're probably looking at some sort of 2 SQL server mirrored system and 2 ISS web servers to start with.

1 Answer
1

For load balancing avoid using Session state. If you have to use session, use a SQL database for it; you can use a customised SessionState provider to avoid a singular point of failure, but the database is much easier to implement and manage. Using a load balancer with "session stickyness" just moves the failure point to the load balancer.

The SQL 2008 databases can be mirrored/clustered between 2 servers, and the failover partner listed in the web site's connection string.

NOTE: Microsoft's SQL licensing allows a single license to cover both the active server and the passive mirror, as long as the mirror is failed back within 30 days. See the diagram on page 2 of the SQL Server 2008 Pricing and Licensing document.