Recently we got a customer who wanted an inexpensive high availability solution. To keep costs down we decided to utilize NLB within Windows Server 2008 and load balance two IIS web servers. The issue we ran into was getting multiple sites to balance. It actually turned out be a very simple issue. When a request is passed to IIS it looks at the header for the site and then passes that request to the site with the same binding. I had setup the bindings in IIS 7 for the sites to the local IP addresses on each server. When our sys admin setup NLB and tried the sites one each server through the NLB public facing IP we got a 404.
Our sys admin gave me a quick crash course in NLB so I could get a simple understanding of how it worked and was setup. After watching the setup I suddenly realized what was going on. It was a great eureka moment. I knew what I had to do to fix it but I was hoping for a work around because I wanted ot keep it simple for the customer. In the end all I had to do was assign the bindings with the public facing IP of the NLB cluster, not the IP’s on the local machines. After doing this the sites worked great.
The servers we are load balancing are virtual so we simply paused one and made sure the site still worked. It worked great. If one of the servers goes down the other will take over requests. This is very simple setup. If you want to get a little more complicated and really dig into high avialability I suggest looking into ARR. Here is a link, Microsoft Application Request Routing with NLB for high availability. Have fun with that one 🙂