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.
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.
I sometimes tend to use different wording that basically comes down to the same thing. The following terms all mean the same in this article and are therefore interchangeable:
In Azure, there are many services that have dependencies to 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 own 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:
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.
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.
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.
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.
In the menu on the left, select Usage + quotas.
We need to select a provider for which quotas will be displayed. Click on Select a Provider and choose Select all.
Now you will see all applicable quotas on the current subscription. Make sure to check all quotas that are relevant in your environment. In this example we focus on the maximum number of vCPUs, so pay special attention to the value Total Regional vCPUs.
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.
The error message starts out a bit cryptic, but you find more information in the details.
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.
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.
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.
Select the regions and the virtual machine series for which you require the quota increase (you can select multiple regions and multiple machines 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.
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.
Review your request and than click Create.
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:
- Azure subscription and service limits, quotas, and constraints
- Citrix Virtual Apps and Desktops Service Limits
Also, be aware that these limitations change constantly, so make sure to check up on the latest facts and figures on a regular basis. It will save you a lot of potential headaches! I hope this article was of some help to you.