Session Hosts High Availability
Start course

In this course, you will learn about host pools and session hosts in Azure Virtual Desktop.

Learning Objectives

  • Deploy and configure host pools and session hosts
  • Set up autoscaling for Azure Virtual Desktop
  • Understand Azure Virtual Desktop limits
  • Set high availability options for Azure Virtual Desktop
  • Use Azure Virtual Desktop session host join options
  • Automate Azure Virtual Desktop

Intended Audience

This course is for anyone planning to take the Azure Virtual Desktop Specialty exam and anyone interested in learning how to deploy an AVD environment.


To get the most out of this course, you should have an administrator-level understanding of Azure Virtual Machines, Azure high availability solutions, Windows management join options, ARM templates, PowerShell, and the Azure CLI.


There is no best practice or recommendation for how to deploy with or without high availability, but there are a lot of things to consider. When we talk about high availability in Azure VMs, we're talking about availability zones or availability sets. Availability zones are groups of Azure data centers within a particular region where availability sets are scoped at the rack of servers within a data center. And availability sets break down into two parts, fault domains, and update domains. The fault domain is the rack of equipment. Then the update domains are groups of VMs spread across multiple racks for a single workload. Now, when it comes to your personal host pools, you have one user for each session host virtual machine. 

So, from the user's perspective, there really is no high availability regardless of if you choose availability zones or sets because if their VM is down, they're unable to work. However, it is still a best practice to use an availability zone or set so that the personal host pool solution as a whole can remain more highly available in case there are any hardware issues in the Azure data centers. In a pooled host pool, however, we have the opposite case. If any singular VM is unavailable, your users could simply log onto a different VM in the pool. So, definitely using an availability set or a zone will give you more high availability for this solution as a whole as well as the individual user. 

Not all Azure services work directly with availability zones and any traffic that goes between zones is considered interzonal traffic, which does have an egress charge. One last thing to consider, however, are deployments. Availability sets also have a maximum of 200 VMs per set and that is a limitation at a AVD scale solution. So, if your AVD deployment is larger than 200 session hosts in a single region, you'll need to consider how much you really need an availability set, since this will potentially limit the number of VMs that you can deploy at once. Without an availability set, you can deploy up to 400 VMs at a time. Now you might be willing to sacrifice on the deployment side to get some extra high availability, but you also need to consider your monthly service updates. If your update plan is to provision new VMs and throw away the old ones, you'll be doing large numbers of deployments every month. And at scale, having the availability set is going to double your deployment time every month.


About the Author

Dean Cefola is a Principal Azure Engineer at Microsoft and has worked in the IT industry for over 20 years. Dean has been supporting Azure Virtual Desktop from the beginning and is the Microsoft FastTrack Global Leader for AVD.