Pages

August 21, 2010

Web Load Balancing: IIS+ARR Revisited

In a previous post (IIS with ARR: Initial Impression) I mentioned I was evaluating IIS + ARR (Application Request Routing) to determine if it was a contender for a web load balancing project I was working on. For a time, it _was_ a contender. However, I didn't select it as the final solution. In three words: Network Load Balancing.

Network Load Balancing (NLB) is an unfortunately named feature available in Windows Server that is used to create a simple server "cluster". I say that it is an unfortunate name because it does not accurately reflect the purpose of the feature. In my experiments, I found it to be a simple heartbeat service between defined cluster members that was very chatty over the link layer (Ethernet) and not very responsive (even after configuration tweaks) to failed hosts in the cluster.

So what does NLB have to do with ARR? Well, ARR was designed to set up routing at the application layer (i.e. HTTP). If a backend host is down, ARR happily sends packets along. NLB is required to sense a failed backend using the simple heartbeat mechanism. It appeared to be very clumsy and an incomplete solution.

So, what now? How does one implement a web load balancing solution without purchasing an expensive appliance? You deploy an nginx + haproxy + keepalived combination.

And that, ladies and gentlemen is a topic for another post.

No comments:

Post a Comment