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.
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 amount 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 andsoforth. 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. The current limit in Citrix Studio is 240 machines per Azure resource group, so this means that you need at least three resource groups to host these 500 machines (Citrix Studio will create these automatically for you if you so choose).
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.
Now, the number of resource groups we need (three in our case) will not be a problem, since the limit per subscription is set to 980. Bye the way, this is a hard limit and cannot be changed.
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. Bye the way, this is how such an error is presented.
The error message starts out a bit cryptic, but in the details you find more information.
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 implemention. It will save you a lot of potential headaches! I hope this article was of some help to you.