A common question I hear is, "Should I have one big session host, or several smaller session hosts for my RDS deployment?" This is a great question, so I wanted to share how I think about it and the reasoning behind my answer. Let's dive in!
In Azure, you pay for the resources you use, when you use them. If a resource isn’t being used, it is more cost effective to turn it off, and then turn it on when needed. A large session host is more expensive, but supports more users. Smaller VMs can be started based on actual user demand then taken offline after hours as users log out. It is cheaper to use multiple smaller VMs that are only started as user load increases, then to run a single large VM 24x7 even when all of the resources are not needed.
Azure VM pricing is very linear within a series of VMs. My favorite VM sizes within Azure are the D2_v3 and E2_v3. I really like the v3 series VMs, both the D_v3 and E_v3 series VMs, because they have some of the fastest CPUs within Azure, provide very consistent performance, and they are less expensive than their D_v2 counterparts. In fact, the D_v2 series VMs are also more powerful and less expensive than the original D series VMs.
A D2_v3 VM (2 vCPUs, 8 GB RAM) running in the East US datacenter costs $137.24 per month to run 24/7. A D4_v3 VM, which is twice the CPU and RAM (4 vCPUs, 16 GB RAM) of a D2_v3 is $274.48 per month to run 24/7. That is twice the monthly cost for twice the amount of compute resources. This linear pricing extends to the D16_v3 (16 vCPUs, 64 GB RAM) at $1,097.92 per month all the way to the D64_v3 (64 vCPUs, 256 GB RAM) at $4,391.68 per month. My point here is that there is no “volume discount” on the larger VM sizes. There are other ways to achieve cost savings by using Reserved Instances, or via other purchasing mechanisms, but again, there are no discounts on larger VMs.
I say this because our preference is for you to use the smallest session host VM sizes that can support your user community. MyCloudIT will build your initial deployment with the expectation to put 4 users on each vCPU for a full desktop experience, and 6 users on each vCPU for a RemoteApp experience. It is your responsibility to ensure there is enough compute and memory capacity for your actual users since you have a much better understanding of your user behaviors and expectations.
If 4 users per vCPU is too many users to deliver the expected level of performance, of course, that’s when you should reduce the number of users per vCPU. Even if you reduce your user density to 2 or even 1 user per vCPU, that still means you can put 4 or even 2 users on each D2_v3. So why have more VMs with fewer users on each VM? Auto-scaling!
Auto-scaling is an automation tool we built to only start session host VMs when user demand requires extra VM capacity. Auto-scaling can turn off the unused session host VMs after hours as your user community logs off. This means that you only pay for the compute resources when you need them, and you let our automation take care of automatically starting and stopping your VMs based on user demand.
If you must support 32 users, and you decide that you can support 2 users per vCPU, that means you will need 16 vCPUs to support simultaneous access for your users. That means you need 8 D2_v3 VMs, or one D16_v3 VM. Let’s start with the D16_v3 to see how it will support your users. If your users need 24/7 access to the RDS deployment, that means that you must have the D16_v3 running 24/7. As I mentioned earlier, a D16_v3 costs $1,097.92 to run 24/7 (assuming 730 hours in a month). So, you know that it will cost you $1.097.92 per month for the one session host to support your users. Using the 8 D2_v3 VMs, is where we can start seeing a cost savings. With the D2_v3 VMs, you do not have to have all 8 VMs running to provide 24/7 access. How many users typically work after hours 3 or 4? One D2_v3 will support 4 users, so maybe you only need to keep 2 (or maybe even 1) D2_v3 VMs running 24/7. The other 6 VMs can be taken offline after hours. That means your 24/7 cost for 2 D2_v3 VMs is $274.48 per month. What we have seen is that the other 6 VMs typically run between 8 to 12 hours a day, 5 days a week. Let’s assume on average, the 6 VMs will run 10 hours per day 5 days per week. I included the table below, but it works out that you will save about 50% of your Monthly Azure runtime by using the D2_v3 VMs with auto-scaling compared to using just one large session host server to support all of your users.
We also have a pricing guide that talks more in depth about the overall pricing of your deployment, this example focused on how to manage the sizes of your RDS session hosts.