I'm having some trouble trying to figure out the technical details of the below design; specifically in the area of the redundant load-balancers.
The web servers are running Windows Server 2003 R2 64 and serve .NET applications via IIS. The database servers are running Windows Server 2008 Enterprise 64 in a SQL Server Failover Cluster with SQL Server 2008. There are currently two web servers and two database servers.
What I am looking to accomplish:
- Automatic redundant fail-over if a load-balancer goes down.
- The ability to seamlessly take a web server out of the load-balanced mix for maintenance without interrupting users. I'm not sure how possible this is because of the way our applications work - users tend to say logged into the application for their entire shift.
- The ability to scale up web servers, as needed (does not need to be done live).
This is a pure-Microsoft shop; so unfortunately the standard Linux tools are not available to us.
What I have tried:
- Microsoft NLB (Network Load Balancing Service): this works relatively well for a simple solution and is quite cost-effective since it just runs on the web servers, but I have yet to find a way to make this service meet the above requirements. Every time we have tried to take a system out of the load-balanced mix, clients making requests to the load-balanced url/ip are still trying to get directed to the offline machine. This can create huge problems, especially considering that our users will be submitting customer payments through these systems. Maybe we're doing something wrong here...
The design:
So, given all of the above, is Microsoft NLB the only answer? Or are there better tools available for our situation?
Edit 4/21/11
Thanks for the quick feedback. Just to clarify a few points:
- These are intranet web servers. They don't touch the Internet. Ever.
- Convincing my boss to let me deploy a pair of Linux servers wouldn't be too difficult. She isn't the roadblock to a Linux environment - it's our staff. Their only skill-set is Windows. It would kill my social life to start deploying Linux servers in our data center. ;-)
- I'm ultimately searching for the "Microsoft way" of load-balancing web servers, while at the same time providing redundancy in the load-balancing subsystem. If that really is Microsoft's NLB service, well... maybe I should start a new question about that. :)
- I'm open to hardware load-balancers if that is a better (or only) solution.