Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

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?

share|improve this question

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.

share|improve this answer
    
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 '12 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. –  Phil Bolduc Nov 1 '12 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 '12 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. –  Phil Bolduc Nov 3 '12 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. –  Bart Czernicki Nov 7 '12 at 1:31

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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