Search code examples
.netiis-7load-balancingiis-7.5osi

Load balancing with layer 7 or layer 4


I'm don't understand what is the difference between Layer 7 and Layer 4 load balancing.

Is one of them better over the other? How I can decide which is more applicable in my system?


Solution

  • I guess this could be a very strong discussion and anyway it's not related to programming but...

    The difference between them is where (which OSI layer) you do the balancing. In my opinion you should never do balancing only on layer 7 (then you should always use the layer 4).

    Why? Layer 7 load balancing is good because you do not need any special hardware for it, it's done at application level, but you pay this with many many other drawbacks:

    • Performances are not so good: load balancer will have to keep track of cookies and sessions (when needed), for this you will need a more powerful hardware. The right way should be to let the application to manage this properly. To override this you'll need a more powerful hardware.
    • The load is distributed across servers but it's not easy to have a true load balancing. Very often it's simply something injected in the DNS server then it doesn't have a true knowledge of how much a server is busy (imagine you have one intensive and two lightweight operations to dispatch to two servers, round robin may assign one intensive and one lightweight to the same server when the best could be assign both lightweight to the same server).
    • They are not scalable at all (they have to manage what your application should manage) and it'll waste a lot of resources.

    Why they are good? They could be a quick, easy, dirty solution to patch a non scalable application (for layer 4 balancing your ASP.NET application should be scalable by itself). They could be a temporary solution to a contingent problem, not The Solution. In the real world the layer 4 load balancing is preferred (and sometimes mixed with layer 7 balancing, Google for example uses a first level round robin dns load balancing).

    Read this very good article about load balancing: http://1wt.eu/articles/2006_lb/index.html

    Something I found funny, here (about advantages of layer 7 load balancing) they say:

    While the use cases are still fairly limited, this functionality of layer 7 load balancing does open up many possibilities for future use. As this technology evolves, we will gain the ability to balance additional types of traffic more intelligently.

    If use cases (of these advantages) are "still fairly limited" and we have to wait that "as this technology evolves" then I do not see any reason to base NOW any load balancing solution only on layer 7 (moreover it's something really easy to add in any moment in the future).