2

Is there a vetted Windows-friendly, or even .NET-native, load-distributing/load-balancing utility out there along the lines of HA Proxy? We have a .NET stack product, and the one piece that we step out of the stack is for load-balancing.

We need something with configurable rules for distribution -- perhaps subdomain-driven -- that NLB alone doesn't seem to offer. If it integrates directly with .NET, or offers an exposed API callable by webservices, so much the better!

Thanks in advance!

Clarification: we need to logically part over boxes. This is not just a cluster/failover/replication scenario.

Further clarification: we are a WCF house. We already have a custom router and inspectors on our grid. We need distribution on the frontend however, which is where HA Proxy currently lives in our architecture. However, we need something we don't have to write then test the heck out of, as we're about to wrap a release and no one has cycles to test something up to the level of an HA Proxy.

Candidate solution: I was previously unaware of IIS7+ Application Request Routing (ARR) which uses the URLRewrite module. I'm not familiar with anyone who can speak to ARR's performance and stability, perhaps a Stacker can help me out?

andrewbadera
  • 1,372
  • 9
  • 19

2 Answers2

1

I've been using Application Request Routing for several months now, though more for reverse proxying than load-balancing or farm management at this point in time.

It's certainly convenient when you're 100% Microsoft stack to begin with.

I can't speak to performance yet, at least not in any broad sense. Using it as a proxy introduces no user-noticeable performance hit, but it does introduce very occasional 502s, apparently when the content server takes longer to respond than the ARR controller is configured for timeout.

ARR appears to be fairly extensible, for integration with custom affinity providers, integration with third-party equipment like Citrix or F5, but I haven't fully explored this.

I've seen no "definite," no "regular" stability issues, but there has been some IIS flakiness that may be ARR-related. Inexplicable errors that go away with an app pool recycle, or server restart.

None of the minor issues encountered have prevented going to production. None of the minor issues encountered have been showstoppers for clients.

andrewbadera
  • 1,372
  • 9
  • 19
-1

With .NET 4.0 we get the WCF Routing Service which looks to be a software based proxy we get out of the box, which could possibly be used to distribute load. It can do content based routing, protocol mediation (tcp/ip->http or https->http) and is likely extensible in some fashion.

Some resources to get started:

You can always start rolling your own using these articles by Bustamante:

HTH,

Z

Zach Bonham
  • 6,759
  • 36
  • 31
  • Sorry, but nowhere close to what I'm looking for. We're a WCF house -- we have a SaaS/grid technology with smart (custom) routing, custom inspectors, discovery and balancing. We need distribution on the front end however, and we don't have time to implement something as robust as HA Proxy, which is why we're looking for an OOTB Win alternative, not to code our own solution. – andrewbadera May 06 '10 at 21:36
  • 1
    Also, as a product vendor, we can't hop on 4.0 yet, not with customers still, just now, making the transition into 3.5. – andrewbadera May 06 '10 at 21:37
  • no worries! :) didn't get all that from original post. I was thinking that you could still have the software proxy (routing service) sitting in front of your services tier (just like hardware) to distribute load. In that capacity, it could 'stand alone', as it were, and not really introduce dependencies anywhere else in the call chain. – Zach Bonham May 06 '10 at 21:56
  • Thanks for the input all the same! Offhand it looks/feels like an "easy" problem to write a solution for, but when you're standing next to HA Proxy, and it's a critical piece of a highly-available architecture, I guarantee that whatever "hey that does it!" first-swipe work I do will not "do it" "right enough" without an additional significant investment of time. Stuff like rule/algo implementation or rule engine implementation is guaranteed to eat me alive ... – andrewbadera May 06 '10 at 22:32