Managing Azure limits and quotas for Citrix workloads

Before you start provisioning machines in Citrix Studio you have to concern yourself with managing Azure limits and quotas for Citrix workloads. Some quotas can be adjusted (the so-called soft limits) and some cannot be changed (these are called hard limits). You have to take both of these into consideration in your planning.

Change Log
13.01.2021: removed statement that the maximum number of VMs per resource group is limited to 240. This limit has been removed in October 2020.

Provisioning workloads in Azure requires careful planning, especially if you expect to provision many hundreds of Citrix workers. The better your architectural design is the better you can calculate the number of services or resources you will need. These include the number of subscriptions, the number of resource groups, the number of virtual machines, the number of vCPUs for these virtual machines, the size of your virtual network, the amount of required storage, and more.

 

 

Note:
I sometimes tend to use different wording that comes down to the same thing. The following terms all mean the same in this article and are therefore interchangeable:

  • Virtual machine
  • Workload
  • Citrix worker
  • VDA

In Azure, many services have dependencies on other services and form a sort of hierarchy. For example, a tenant can have multiple subscriptions. A single subscription can contain multiple resource groups. One resource group can contain multiple virtual machines and so forth. Each of these services or resources has its limits.

These limits are sometimes fixed due to technical constraints and some depend on the kind of subscription model you are using (e.g. Free Trial, Azure Pass, Pay-As-You-Go, Enterprise Agreement). Each subscription model has its limits. Additionally, some limits within a particular subscription model are not set to the maximum possible value and can be adjusted by initiating a service request. I deal with this later in this article.

For a complete overview of all limits, quotas, and constraints see the following Microsoft article:

https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits

Let’s continue using an example. Let’s say that you want to create a machine catalog in the Virtual Apps and Desktops Service (CVADS) that will host Windows 10 multi-session workloads. We have one subscription within Azure that will be used to host all required resource groups, virtual network(s), and virtual machines.

managing azure limits - CVADS new catalog

The host connection to Azure in Citrix Studio has been prepared and you are ready to provision the required number of virtual machines. Let’s assume that you want to create a total of 500 W10 multi-session machines.

Since October 2020, the maximum limit of 240 virtual machines per resource group has been removed. Therefore, all of our 500 virtual machines can be hosted within one Azure resource group.

Note:
Although there is no limit on the number of virtual machines within a resource group, there is a limit on the API calls that can be made within one subscription. CVADS does a significant amount of interaction with Azure Resource Manager, including reading the power state of machines, starting machines, de-allocating machines, and creating and deleting disks. Each of these tasks requires many API calls into Azure. The current recommended maximum number of VDAs within one subscription is 1200. If your environment requires more VDAs then you should plan for more subscriptions within your tenant.For more information see the following articles:

The virtual machine type we select is the model D4ds_v4 with 4 vCPUs and 16 GB RAM.

CVADS new catalog select machine size

Since we plan to provision 500 virtual machines, the total number of required vCPUs is therefore 500 x 4 = 2000.

However, we may not be able to provision the required 2000 vCPUs because of a quota on vCPUs within the subscription. But how can we be sure whether we may or may not have a problem? This is where the Usage and quotas section in Azure comes into play. Here we can check all limits currently set on our subscription.

 

 

Within Azure go to Subscriptions. Open the subscription that you want to use for your W10 multi-session workloads.

Select Azure subscription

In the menu on the left, select Usage + quotas.

managing azure limits - Usage and quotas

We need to select a provider for which quotas will be displayed. Click on Select a Provider and choose Select all.

Check quotas select provider

Now you will see all applicable quotas on the current subscription. Make sure to check all quotas that are relevant to your environment. In this example we focus on the maximum number of vCPUs, so pay special attention to the value Total Regional vCPUs.

Check Azure limits and quotas

In the screenshot above you can see that in my subscription I am only allowed to use a maximum of 10 vCPUs. So at this moment, it would be impossible for me to create the 500 virtual machines due to this (soft) limitation. Citrix Studio will throw an error if you try to create more virtual machines than your vCPU limit allows. By the way, this is how such an error is presented.

Citrix Studio provisioning error due to quota limit 1

The error message starts a bit cryptic, but you find more information in the details.

Citrix Studio provisioning error due to quota limit

The internal error message NotEnoughCoresInRegionNoCoresInfo tells us that there is an issue with the number of available cores for the subscription in this particular region.

So what to do now? The answer is that you have to create a request to increase the soft quota. On the Usage + quotas page, click the button Request Increase to start the wizard.

Increase quota start request

On the Basics tab, you have to fill out some information such as the issue type, the subscription in which you want to increase one or more quotas, and the type of quota (select the appropriate one from the dropdown list). Because I want to increase the number of vCPUs I selected Computer-VM (cores-vCPUs). Click the button Next:Solutions to go to the next tab.

managing azure limits - Increase quota step 1

 

 

For most quota types the Solutions tab will be skipped and you will go straight to the Details tab. Click on Enter details which launches a window pane on the right.

Increase quota step 2

Select the regions and the virtual machine series for which you require the quota increase (you can select multiple regions and multiple machine series). Enter the new vCPU limit that you require. In this example, I want to increase the limit from 10 to 2000 vCPUs in the region West Europe. When you are ready click Save and continue at the bottom.

Increase vCPU quota to 2000

Now you are back on the Details page. You will have to fill out some additional information, including your contact info. This is all pretty self-explanatory. When you are finished click Next: Review + create at the bottom of the page.

Increase quota step 4

Review your request and then click Create.

Increase quota 5

You will receive a confirmation e-mail from Microsoft that the request has been received. Within two hours I received another e-mail that informed me that the quota increase had been approved. Now I can use 2000 instead of 10 vCPUs.

Managing Azure limits and quotas for Citrix workloads is highly recommended before starting with any kind of implementation. Make sure to understand both the Citrix Cloud and Microsoft Azure limitations:

Also, be aware that these limitations change constantly, so make sure to check up on the latest facts and figures regularly. It will save you a lot of potential headaches! I hope this article was of some help to you.

One thought on “Managing Azure limits and quotas for Citrix workloads

  1. Pingback: Managing Azure limits and quotas for Citrix workloads – WindowsVirtualDesktop.blog

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.