We have one site on IIS build in ASP.NET with DNN. Currently we try to configure network load balancing for two servers. The service hosting provider told us this would be enough, but we seem to have hit a brick wall:

  • network load balancing only forwards requests from his public ip, it doesn't check the availability of the servers
  • if a server goes down, 50% of the requests will see a "server not a available" until we manually remove the server from the load balancing configuration
  • I don't see a way to configure this with two servers without this problem

With three-way load balancing, aka web farm, a single system checks which servers are available. If a server goes down, it will forward the request to the other server.

Is the above a correct assumption of the limitation of network load balancing, leading to classical web farm as only solution, or is there something the hosting provider can configure to prevent this behavior and have us stick with only two systems?


You have in fact hit one of the classic limitations of NLB. A Windows NLB cluster is only able to check if the node itself is available and cannot check if the actual application is still up and running. Ultimately what you need is for some type of health check of the application which can be done with a physical load balancer or perhaps a software load balancer such as the Microsoft Application Request Routing (ARR).

Another alternative that is somewhat new is a cloud based load balancer such as the offering from Rackspace. This gives you the benefit of having many of the features of a physical load balancer without the cost of implementing physical hardware.

Hope that helps.

Edit: There is somewhat of a way for NLB to perform health checks, however, it still requires what amounts to a third server. System Center Operations Manager has a management pack that can monitor applications. Details about that can be found here. If you are going to go through the trouble of adding something like this, you may as well look at the benefits of an actual load balancer that can perform the necessary health checks.

  • Very clear answer, then indeed NLB might not have been the right choice here. – Abel Jun 16 '11 at 13:54
  • 2
    Just as a note: "if the server goes down it's not removed" - if the server goes down, it is removed. If the App crashes, though, it's not. Rule of thumb: if the network stack on the box is still up, NLB's still going to accept requests. NLB doesn't care. Previous writings: blogs.technet.com/b/tristank/archive/2007/03/01/… – TristanK Jun 17 '11 at 1:01

If you have a third system (or two) it can distribute the load based on the utilization of the backend hosts, it can check the availability on a higher lever (application) and not only the network. It is also easier as each system has only one role, the load balancer only load balances and doesn't have to have anything else on it so less things can go wrong.

  • You seem to imply that availability on only the network level can be tested with network load balancing, however with tests we did, we found out what I wrote in the question: your user will get a "service unavailable". Can we prevent that with the current setup, or do we indeed require a 3-way system? – Abel Jun 16 '11 at 13:36

Third party products can do this (e.g. NetScaler) for which you add services bound to virtual servers configured within the NetScaler appliance. The appliance can automatically check that applications are available before load balancing to the servers. No need for manual intervention.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.