Reminder: One Role Instance in Windows Azure does NOT give you High Availability

My team had an incident recently where an ISV’s application went down at a very inopportune time. Upon looking into it, we found that they only had a single role instance running. So, it seemed like a good idea to do a post to remind people that you need at least two role instances running in order to have high availability.

Cloud providers, including Windows Azure, run on commodity hardware. Hardware WILL fail. At Microsoft, we have Service Level Agreements (SLAs) in place about accessibility of our services, and we incur financial penalties if we fail to meet those service levels.

For Azure compute (Web and Worker Roles), when you create a new project, the service configuration file will default to a single role instance. I’m assuming this was done to preserve client resources when running in the emulator, but that’s just a guess. It works just fine for development, but if you deploy and only have a single role instance, you have a single point of failure, and the SLA will not apply. You can specify how many role instances you want either through the portal, by changing/uploading a new ServiceConfiguration.cscfg file, or using the Service Management API.

Of course you are incurring a cost for every role instance, but compare that to the cost of an outage, and assess the risk. In some cases, outages can be tolerated (eg:queued async operations), in others (eg: customer-facing portal), they can’t.

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>