Q35.How does Fabric controller place and manage role instances of an Application across fault domains?

The diagram shows worker and web roles placed in Rack1 and Rack2.

working of a fabric controller

Several instances of Fabric Controller run across various racks. We are not going into the detail of how many instances run in a specific number of racks. The Fabric Controller manages Windows Azure resources such as applications, VM instances and every bit of hardware across different domains.

For example, if an application requires four web role instances and one of them stops functioning, the Fabric controller will start a new web role instance. The fabric controller will do the same thing, that is start a new instance of the role even if a computer stops functioning. The load balancer will automatically be reset to point to these newly created VMs.

Azure ensures that a minimum of two instances are always running. This is done so that, if one instance fails, the other instance is always available to keep the application running. For this reason, SLA (Service License Agreement) enforces you to specify that a minimum of two instances are running for a web role of an application.

Azure ensures that no application stops running by creating instances and locating these instances in different fault domains. As a developer we do not have direct control over how many fault domains applications use. A fault domain can be thought of a rack (refer Fig:-1.6). The fabric controller is assigned the task of creating the required number of VMs and locating them appropriately.

For example, suppose a developer requests five Web role instances and four Worker role instances for his application. And suppose all of these instances are placed on VMs on the same rack serviced by the same network switch. If either the rack or the switch failed, the entire application would no longer be available.

As Azure assures high availability, this situation is not allowed. The Fabric controller groups the Virtual Machines it is responsible for into a number of domains. As shown in the figure, the application has two Web role instances, and the data center contains two fault domains. When the fabric controller deploys this application, it places one Web role instance in each of the fault domains.

So, if any hardware failure occurs, the entire application does not come to a halt.

Important words:


SLA is an abbreviation for service Level Agreement. A SLA is signed between the customer who is availing azure services and Microsoft which are providing Azure services.


A rack is a unit in a data center which holds many servers.