0

I've recently setup Windows NLB Custering on a couple of servers hosting IIS. I've heard that it's possible to control the "health" status of each server via script - i.e. rather than relying on window's internal definition of which servers have the most spare capacity/least load, have this decision driven by a comparison of the relative servers' health values, which are generated by scripts. That said, I can't find any examples of this sort of script / any instructions on how to achieve this.

  • Is this possible, or have I overheard a myth?
  • Do you know of any sample scripts & instructions on how to set this up?

Further Info:

I'm working with MS Dynamics AX 2009. Currently the workflow web services are hosted on a single server. To remove this single point of failure I'd like to put load balancing in place, where the load is shared whilst the servers are healthy, and if a server goes down requests continue to be sent to the live server seamlessly until the original server comes back online and requests can again be routed to both.

I don't currently know the exact details of what I'll want the health check script to check. Once I know if this is possible I'll start experimenting, looking at what options are available (i.e. do I use a simple test of whether IIS is available by calling a test service hosted on the same site / just check memory and cpu usage and balance accordingly / toggle the default server per request - avoiding offline servers). At this stage though I'm only concerned with whether this is possible before working on specifics.

Thanks in advance.

JB

  • Windows Server 2008 R2
  • IIS 7.5
  • Dynamics AX 2009 SP1 R8
JohnLBevan
  • 22,735
  • 13
  • 96
  • 178
  • Update: I've found some powershell info on how to change the health/weight of each node in the cluster: http://technet.microsoft.com/en-us/library/ee817112. My current plan is to schedule a task to run a script every 1 minute on each server to update that server's health value. This probably isn't the best way to do this though, so leaving the question open in case anyone can suggest a better alternative? – JohnLBevan Aug 08 '12 at 15:43

1 Answers1

0

The powershell option to load balance a server allows you to change the weights and priorities of servers. However, I found even after turning off affinity, setting the weight to 99:1 and trying priorities as 1:2 (and then 2:1 in case I'd got it the wrong way around) the load balancing seemed to work as expected for the first request, then would behave as if affinity was enabled for any remaining requests from the same machine. I suspect that in a lot of cases that's the desired behaviour, but in mine it wasn't (since there's only one client for this service - a dedicated ax aos batch server).

My new solution is to use an F5 load balancer's dynamic round robin algorithm (https://devcentral.f5.com/weblogs/dmacvittie/archive/2009/03/31/intro-to-load-balancing-for-developers-ndash-the-algorithms.aspx) to distribute the load, and an HTTP GET request from the F5 to ensure that the web services are up and running. Thanks to our network engineer for returning from remote site work in time to point me in the right direction.

JohnLBevan
  • 22,735
  • 13
  • 96
  • 178