I'm currently building out a small web deployment using VM instances on MS Azure. The main problem I'm facing at the moment is trying to figure out how to get the load-balancing to detect if a particular VM has failed and not route traffic to that VM.

As far as I can tell, there are only only two load-balancing options:

  1. Have multiple VMs (web01, web02, web03 etc.) within the same 'cloud service' behind a single VIP, and configure the endpoints to be load balanced.

  2. Create multiple 'cloud services', put a single web VM in each and create a traffic manager service across all these services.

It appears that (1) is extremely simplistic and doesn't attempt to do any host failure detection.

(2) appears to be much more varied, but requires me to put all my webservers in their own individual cloud service. Traffic manager appears to be much more directed at a geographic failover scenario, where you have multiple cloud services across different regions. This approach also has the disadvantage in that my web servers won't be able to communicate with my databases on internal IP addresses, unlike scenario (1).

What's the best approach here?

1 Answer 1


Each cloud service VM has a Guest Agent (GA) installed which monitors the health of the VM. If a GA fails to respond, the Fabfic Controller (FC) will reboot the VM. In the case of hardware failure, the FC will move the role instance to a new hardware node and reprograms the network configuration for the service role instances to restore the service to full availability.

Edit: Guest Agents are only used on PaaS. IaaS (your VMs on Azure) do not have Guest Agents.

  • This is useful, but doesn't help against a specific service (e.g. nginx) failing on a VM, while the VM remains healthy.
    – growse
    Nov 1, 2012 at 23:06
  • Agreed. I am not aware of anything built-in that handles that. I would guess SCOM 2012 would be Azure aware. Perhaps there are open source monitoring for this. I dont see it as much of a stretch to use the REST API and external health monitoring to do this. Nov 1, 2012 at 23:17
  • Hmmm. Given that many other load balancers have the ability to do 'health-checking' of backend machines, either via simple TCP connect testing or HTTP status code checking, this appears to be a bit of an omission on Microsoft's part. FWIW, I'm currently testing on Rackspace and their load-balancing solution works exactly as I need. Downside: no concept of 'availability zones'.
    – growse
    Nov 2, 2012 at 10:07
  • Mark Russinovich's presentation 'Introduction to Windows Azure Infrastructure as a Service (IaaS)' (channel9.msdn.com/Events/Build/2012/2-011) at Build 2012, talks about how you can set up Load Balancer Custom Probes. He only talks about it briefly. You can skip to 00:50:00 to hear about it. Nov 3, 2012 at 18:11
  • You can configure this absolutely. Use the PowerShell API, which has the option of specifying a health check page that the load balancer can hit. Nov 7, 2012 at 1:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.