To ensure high availability of your applications and systems, you need to introduce redundancy.
It is achieved by creating a replica of the same system either within the same environment or different environment.
In the physical world this is done by adding duplicate systems within the network.
In the virtualized world it is achieved by replicating the virtual machine on a different server. In order to make the systems failsafe these virtual machines are added on a server that may have a different power supply that the original one.
Redundancy is prevalent in enterprises since this mechanism ensures of keeping their applications running even if the primary system is not available due to one of the various reasons. Thus keeping the applications “Highly Available”
Windows azure ensures high availability through Availability Set. Availability sets are directly related to fault domains or update domains
A fault domain is ensures that the no two virtual machines within an availability set are hosted on the servers that share common power or network supply, thus avoiding any single point of failure. In fact, a fault domain is closely equivalent to a rack of physical servers.
You manage the availability of your application that uses multiple virtual machines by adding the machines to an availability set. When multiple virtual machines are connected together in a cloud service, an availability set can be used to ensure that the machines are located in different fault domains. By using multiple virtual machines in your application, you can make sure that your application is available during local network failures, local disk hardware failures, and any planned downtime that the platform may require.
The following diagram shows two availability sets with two virtual machines in each set.
Image source Windows Azure help
Windows Azure periodically updates the operating system that hosts the instances of an application. A virtual machine is shut down when an update is applied. An update domain is used to ensure that not all of the virtual machine instances are updated at the same time. When you assign multiple virtual machines to an availability set, Windows Azure ensures that the machines are assigned to different update domains.
You should use a combination of availability sets and load-balancing endpoints to help ensure that your application is always available and running efficiently.
Configuring Availability Sets
You should ALWAYS specify an availability set when creating more than one virtual machine for the same purpose.
Typical Examples include :
- Two or more web servers
- Two or more Database servers
- Two or more AD servers
Specifying an availability set in these situations gives you multiple advantages.
Highly Available Hardware
Having two or more VMs in availability sets guarantees that that VMs are spread across multiple racks in the Windows Azure Data Centers. This means redundant power supply, switches and servers.
Rolling Host Updates
Grouping VMs in availability sets also gives the Windows Azure Fabric Controller the information it needs to intelligently update the host OSs that your guest VMs are running on. Without availability sets the FC would have no idea that two machines were serving the same purpose and could reasonable take them both down for host OS updates.
If you want to ensure the 99.95% SLA guaranteed by Windows Azure for uptime. Availability sets is the way to go.