Virtual Machines Scale Sets
Virtual Machines Scale Sets

This course offers an in-depth look at VM scale sets, VM configuration management, VM storage options, and VM monitoring within Azure. We kick things off by looking at VM scale sets, vertical scaling, and horizontal scaling.

After that, you'll learn about the tools used for configuration management, as well as how to deploy software using VM extensions and how to deploy an Azure PowerShell DSC Configuration.

The course will then cover the wide range of VM storage options available in Microsoft Azure and show you how to use them. Finally, you'll learn about Azure Monitor, a service that allows you to monitor the performance and health of your VMs and VM scale sets.

This course is packed full of step-by-step demonstrations that you can follow along with, allowing you to see all of the above topics put into practice in real-life Azure environments.

For any feedback relating to this course, please feel free to contact us at

Learning Objectives

  • Scale VMs using scale sets and understand the difference between vertical and horizontal scaling
  • Learn about the tools used for managing VM configurations
  • Deploy software using VM extensions and PowerShell DSC
  • Understand the various VM storage options available in Azure
  • Learn about Azure Monitor and its uses

Intended Audience

  • Anyone interested in learning about scale sets, configuration management, storage, and monitoring for Azure VMs


To get the most from this course you should have a basic understanding of Microsoft Azure and of the Azure portal.


Hello and welcome to "Virtual Machine Scale Sets." In this lecture, I'm going to introduce you to the concept of virtual machine scale sets and why you should use them. We will also take look at the differences between virtual machines and virtual machine scale sets, and how to monitor scale sets.

An Azure virtual machine scale set is essentially a group of identical, load-balanced VMs. You can configure an Azure VM scale set to automatically increase the number of VM instances or decrease the number of VM instances based on demand or on a predefined schedule. Organizations use scale sets to ensure high availability for their applications and so they can centrally manage, configure, and update all VMs within the scale set. VM scale sets are often used to build large-scale compute solutions, to service big data solutions, and to host large container workloads.

Because applications that run on a virtual machine scale set are distributed across several instances within the scale set, such applications benefit from redundancy and increased performance. An application that's hosted on a virtual machine scale set is usually accessed through a load balancer. The load balancer serves as a single point of access and then distributes application requests to any one of the numerous instances within the scale set itself.

A VM scale set allows you to perform maintenance and even updates on an application instance, without the need for any downtime. This is because requests are automatically distributed to other available instances within the scale set while you are performing your maintenance.

Virtual machine scale sets allow you to easily create and manage multiple VMs that have the same configuration, because, in a scale set, all underlying VM instances are created from the same base OS image and configuration. That being the case, it becomes fairly easy to manage dozens or even hundreds of virtual machines without needing to worry about performing configuration tasks or even about network management.

VM scale sets can be used with Azure load balancers for basic layer four traffic distribution, or if you need more advanced layer seven distribution or SSL termination, you can use a scale set with Azure Application Gateway. Because scale sets sit behind load balancers, they provide high-availability and application resiliency. You can even use availability zones with scale sets to ensure that your VM instances within the scale sets are spread out within a single Azure data center or even across multiple Azure data centers.

The key benefit of a VM scale set is its ability to automatically scale as resource demand dictates. As demand for an application increases, a VM scale set can automatically increase the number of VM instances to support the application load. The VM scale set can also automatically reduce the number of VM instances as demand for the application decreases. This is known as autoscaling. This autoscaling feature helps control costs because it minimizes the number of VM instances that are running.

VM scale sets can support as many as 1000 virtual machine instances if you use Azure-supplied VM images. If you choose to use your own custom VM images, the limit is 600 VM instances. The table on your screen highlights the key differences between virtual machines and scale sets.

As you can see, if you host an application on a manual group of virtual machines instead of a VM scale set, the process for adding additional instances to support the application becomes a manual process. While a VM scale set can automatically create new instances from a central config, using a manual group of VMs requires you to create, configure, and then ensure compliance of all of the additional VM instances that you manually spin up.

Load-balancing a group of VMs is also a manual process, whereas a VM scale set handles the load-balancing for you automatically.

VM scale sets, as you can see here in the third row of the table, automate the distribution of VM instances across availability sets or availability zones. Doing things the hard way with a manual group of VMs requires you to manually perform these tasks.

Lastly, do you really want to manually monitor your VMs if you need to scale? Because that's what you need to do if you decide to host an application on a manual group of VMs, rather than on a scale set. VM scale sets, as you can see in this last row, allow you to autoscale based on host metrics, in-guest metrics, application insights, or on a schedule.

Deploying a scale set incurs no additional costs outside of the underlying VM instance costs, load balancer costs, and any managed disk storage costs. There are also no costs associated with the cloud management and autoscaling features, outside of the charges for the VMs that are spun up.

To monitor a VM scale set, you should use Azure Monitor for VMs. Azure Monitor for VMs automates the collection of CPU, memory, disk, and network performance counters from all the VMs within a scale set. You can also monitor an application running on a VM scale set using application insights. Application Insights collects information about applications that you can use to keep tabs on application performance.

About the Author
Learning Paths

Tom is a 25+ year veteran of the IT industry, having worked in environments as large as 40k seats and as small as 50 seats. Throughout the course of a long an interesting career, he has built an in-depth skillset that spans numerous IT disciplines. Tom has designed and architected small, large, and global IT solutions.

In addition to the Cloud Platform and Infrastructure MCSE certification, Tom also carries several other Microsoft certifications. His ability to see things from a strategic perspective allows Tom to architect solutions that closely align with business needs.

In his spare time, Tom enjoys camping, fishing, and playing poker.