In this article we’re going to talk about Microsoft Azure again, and specifically, about what Azure VM Scale Sets are.

Azure VM Scale Sets is an Azure service that allows us to scale up and scale out. What does scale up and scale out mean? What is the difference between the two? I am glad you asked!

VM Scale Up is when you increase the resources (Memory and CPU) of an individual VM when usage peaks. VM Scale Out is when you increase the number of VMs based on current usage.

Microsoft Azure Scale Sets

Now there are some dependencies on scaling up and out and some rules to it, so let’s go through each and see what’s what.

When we are using the Azure Infrastructure to host our VMs, we have access to a near limitless number of resources. Now how do we take advantage of infinite expansion space? We use scale sets.

We can either increase the VM size of an independent VM (scale-up) manually or automatically or increase the number of VMs that host an application (scale-out). Now, scaling up basically means you will change the VM size, from D2 to D3, for example, but that in turn will cause a small downtime since the instance will need to be restarted.

It’s also best to use Azure availability sets when configuring auto-scaling for scale-up scenarios, since the VM is restarted when its instance is upgraded, which will lead to a loss of service. Having an availability set in place will help you mitigate that loss of service caused by the VM restart.

Azure Scale Out

Now let us talk about scaling-out. Scaling-out is when you dynamically or manually create multiple on-demand instances of an original VM image, to consolidate or cluster together for usage peaks.

However, you might be wondering how Azure knows how to configure the application?

Well, it does not. When you create the master image of your VM to scale out from, you also need to make sure you create the JSON template to join the machine to the domain, set the administrator password, and so forth. Again, IaaS is a complete scenario in regards to hosting your VMs. It is not a PaaS or SaaS, where Azure manages the application side.

Let us take, for example, a scenario where you have a hosted Remote Desktop Services environment and you would like to scale out your Session Hosts.

You would need to create one session host, configure it with all your installed software and then create a golden image of it. That image will be used to create multiple VMs based on usage.

Now the issue you are facing is that you cannot just join that image to the domain and give it a name and so forth, manually, since it is supposed to be automatic. Instead, what you do is create a JSON template (which will be covered in another article) where you put all your variables in, and Azure will know what to do and when to do it.

Above is a visual example of the solution. I hope you found this article useful at understanding what Azure scale sets are, and I hope you stick around for more to come. Enjoy!