We’ve had a number of inquiries into why we chose ldirectord as our primary load balancer for the new GitHub architecture. As I’ve mentioned before (and more on this later), we’ve hired the excellent team at Anchor as our server specialists. Our team lead over there is Matt Palmer, and we left the choice of load balancer up to him and his expertise. He’s taken it upon himself to explain the driving factors behind his choice, and it makes for an enlightening read if you’re interested in such things. Just head on over to the Anchor blog to check it out:
http://www.anchor.com.au/blog/2009/10/load-balancing-at-github-why-ldirectord/
Be sure to read the comments where the author of haproxy weighs in on the post and adds some additional perspective. Like most technology decisions, there is no single correct answer. Only tradeoffs and preferences.


+1 for LVS load balancing. With direct routing, you can let your app servers respond directly to clients rather than going back through the lb. Your outgoing bandwidth is limited only by the aggregate of your app servers/network hardware, and your incoming b/w can then saturate the lb's connection itself.
A nice, succinct summary of the situation, freels. That's exactly what we did, and why we did it.