views:

1960

answers:

3

The ASP.NET application that I am currently responsible for at my day job has hit its limit in terms of its ability to scale inside a single server. Obviously we are working toward moving session out of process and the test and hopefully deploy date draws near. I would like to draw on the experiencies of people using the built in load balancing in Windows vs. an appliance solution such as one by Baracudda, Coyote Point, F5 etc. Did you start with one and move to the other and why ?

thoughts and advice appreciated in advance...

+2  A: 

some thoughts

  • WLBS is often "good enough" to get you started with NLB. However like any great engineer - you need to "measure to know"
  • its not just about scale-up its about soft or hard redundancy too. We often NLB between VMs just to give us soft redundancy.
  • NLB applies just as much to back-edge as well as front-edge networks
  • stepping up to hardware acceleration brings you a new degree of ops costs. New training specialized support, escalation etc.
  • look for hardware acceleration to give you a lot more than NLB e.g. DDoS protection, SSL, Compression, Caching, Content Switching, Connection Aggregation, Buffering.
  • educate both Devs & Ops SE's about hardware acceleration benefits,a great design can merge the line between network operations and application development.
  • hardware buffering on it's own made our ASP.NET around 30% quicker just by reducing our GC time.
  • content switching can enable you to transparently merge or migrate disparate systems. We merged MSDN & MSDN2 platforms into a single url space using this technique.
  • session stickyness is a dual edged sword - use sparingly - again no substitute for good engineering - measure and test everything

We use both WLBS and NLB within our network - cost often drives the conversation. Treat both as tools in the toolbox, learn their nuances, cost models etc.

stephbu
thank you for taking the time to answer my question. it gives me a lot to think about.
MikeJ
+1  A: 

I have some experience with load balanced solutions, however it really depends how your network and software are designed as to which is the best solution for you to go for.

In terms of solutions I've encountered:

Built in load balancing in windows works well for most cases, although you need to ensure your applications can handle sessions correctly if they're not sticky. etc.

I've used F5 products, mainly as a caching solution, however they were overly complex for us. We are currently moving off them, as developers were not using them correctly as they were too complex. (Please note these were quite old F5 products.)

We're currently trialing hardware load balancers from Foundry, and we'll probably go with them as they will fit in well with our network architecture. (Which is quite complex.).

So I'd say, if you want a simple solution use load balancing in windows (If your applications will work correctly.).

If not use something more complex.

Regardless of which load balancer you go with, you're making your architecture more complex. So plan and test it carefully.

Bravax
thank you for taking the time to answer my question. it gives me a lot to think about. we are working to make the changes to the code and are running using windows NLBS - but its one thing to do so in produciton and another to operationalize it.
MikeJ
+1  A: 

setup a apache mod_proxy cluster. http://www.howtoforge.com/high_availability_loadbalanced_apache_cluster

easier then you think, and at a fraction of the price