Quite popular topic but couldn’t find a exact conclusion from anywhere to decide whether what should i go with what really matters on each choice.
I’m mostly in to SharePoint Stuff and whenever i propose a solution architecture, my recommended option is to have an Hardware Load-balancer for Web Server Load Balancing where the Microsoft NLB is the least. ofcource testers and developers wont to look for Hardware Load balancers since NLB really caters what they expect in that level.
For Internet/Extranet faced solutions are better to go with Hardware LB but small and medium level internal systems can still catered through Windows NLB. i also have experienced in many places that internally for small level systems NLB very very popular and don’t really know whether it’s stable. most of the time small and medium level doesn’t have a choice except going for NLB so that becomes the super hero in that arena.
What Really Varies NLB from Hardware Load balancer
Indeed Windows NLB is cheap as you have already paid for your windows Server and NLB its just a Service of it. so if you simply want to start with some medium and small level applications go ahead and test it out which is you are totally eligible for.
Hardware Load balancers are costly and ofcource you have bunch of choices to select in the market from various good vendors such as Cisco.
Features and Functionality
Lets say that you have launched a system with Windows NLB and it is now on production, after a while you will realize few more stuff becomes mandatory such as Monitoring | True-High Availability | Security | Filtering. NLB doesn’t give you true high-availability, Security or Monitoring where the Hardware LB will give you much much more. anyway just imagine what’s isolated hardware device capable of doing compared to Software Appliance so simply Hardware LB will be the greatest choice if you want to stay away from bugging and troubles at a Enterprise level Large setups.
NLB is DNS Round Robin (RR) which simply forward the client hits to defined interfaces. basically the users are sent between two systems. lets say just in case one of your server stuck and still DNS RR and NLB will keep sending request to particular server therefore NLB is just we can think like an Load balancer not a High Availability controller such as Hardware LB. quite a tough point to think on anyway.
Sample Scenario – NLB Isn’t Application or Service Aware
In a Networked Environment, Configure NLB Between Two WFEs which runs an Application on IIS to test (may be SharePoint). stop IIS on one Server and try to Access the Application from few Clients. You will simply notice some clients will get page cannot be displayed massage after hanging out for a while. this is because NLB isn’t intelligent enough to understand the application level or Services (i was a Fan of NLB earlier in small level stuff but when it comes to the next level the bitter truth is NLB doesn’t understand Web Technologies). NLB will not act if your Server’s Service or Application failed but only when Server is totally down or NIC Failed (or if you drain Dropped Manually).
Just Try to Drain Drop or Stop the Same Server from NLB Manager. you will realize that the Available Server Serving requests for all the clients nicely. meaning to the NLB only understands that Server isn’t available as there is no connectivity, not when a service or Application has a problem. clear ?
Enterprise has to Depend Further on NLB ?
It doesn’t seems to be that Microsoft doing further developments and enhancements on NLB. when looking at Windows Server 2008 R2 Releases they haven’t done any enhancements on NLB and couldn’t see much in Server 2012 too. but still this is a role embedded in both Server 2012 Editions which is readily available to enable and configure.
Windows NLB will cater basic Load Balancing requirements for small level environments but never to be confused with High-availability. whenever you have requirements such as High-Availability on Web Layer, Real time Filtering, Monitoring and Security the only option is Hardware Load Balancer which gives all in one.
Joel has done a great explanation as always – http://www.collabshow.com/2009/04/16/deciding-between-nlb-vs-hardware-load-balancing/
Exchange Team No longer Recommend NLB for Client Access Servers – http://www.stevieg.org/2010/11/exchange-team-no-longer-recommend-windows-nlb-for-client-access-server-load-balancing/