Blog Post

ITOps Talk Blog
3 MIN READ

VMSS, VMSS Flex, what are they? And what’s the differences?

Pierre_Roman's avatar
Pierre_Roman
Icon for Microsoft rankMicrosoft
Jun 16, 2021

Hello folks,

I’ve been looking at ways to scale regular VM up and down without having to create a full VM template used by the existing VM Scale Set.  And I wanted a way that did not force me to choose between Availability and Scalability. I found my saving grace with Virtual Machine Scale set with flexible orchestration (VMSS Flex for short)

 

The way it’s been so far you almost HAD to choose.  For example.  If I’m doing a database cluster, I need to ensure that I have replicas up, and that some percentage of those VM are always up.  (and yes I know that if I’m looking for resiliency and scalability for a database I’d be better off with a PaaS service)   but for this example I can use Availability set allowing you to spread those VM across fault domains. (Azure Fault domains are defined as group of VMs that share a common power source and network switch.).  I could also use Availability Zones  (unique physical locations within an Azure region).

 

On the other side – the Scalability side -  of that choice we have VM Scale Set in Uniform orchestration mode - essentially allowing me to create a VM template and “stamp” out as many as I need. (VM Scale Set is really built to deploy and manage a set of identical, virtual machines.) but with a scale set you don’t have as much control over each node as you would with a regular VM.  You can only have one set of VM size for your set…

 

 

VMSS Flex is really the cumulation of all the things we learned with all the options listed above.

 

VMSS Flex is like a scale set, where you’re still defining a template, defining capacity and where you want them (fault domains and zones), BUT…  it’s also like an Availability Set where you can put specific instance in this grouping.  For example, I can setup a VM with specific configuration and place it in Fault Domain 1 and another specifically configured VM and place it in fault domain 2. VMSS Flex also support scalability (auto-scale) based on schedule or metrics.  That’s where the flexibility starts but not where it stops.

 

The scaling out is NOT limited to VMs of the same size like we had in the traditional VM scale sets (otherwise known as VM Scale Sets with Uniform orchestration).  You could start with 3 large VM for the standard load but scale out or burst with Spot instances. This enables you to scale out your application while maintaining fault domain isolation that is essential to run quorum-based or stateful workloads, including:

 

  • Quorum-based workloads
  • Open-Source databases
  • Stateful applications
  • Services that require High Availability and large scale
  • Services that want to mix virtual machine types, or leverage Spot and on-demand VMs together
  • Existing Availability Set applications

 

VMSS Flex now gives you FULL control over these VMs.  You have control over the NICs the Disks, you can snapshot them, back them up individually, use Azure Site recovery…   Everything you can do with the existing VM ecosystem.

 

 

This has real potential.  VMSS Flex is still in preview.  If you want to check it out, follow the instructions here.

 

To conclude, As far as I’m concerned, VMSS Flex should be the location for ALL my VMs going forward.  And By the way we are working on a series that will cover:

 

  1. Quick create
  2. Availability at scale
  3. Cost optimization
  4. Types of workloads
    1. Stateful, Open source DBs
    2. Stateless web apps
  5. Load balancing
  6. Managing individual VMs
  7. Manually scale and Metrics based scale
  8. Predictive autoscaling

And more…

 

So subscribe to this blog and don’t miss a thing.

 

Cheers!

 

Pierre

Published Jun 16, 2021
Version 1.0
  • DenisV280's avatar
    DenisV280
    Copper Contributor

    Could you share an example of how to mix multiple types (sizes) of VMs, i.e. not Spot vs On-Demand?

  • ankur-007's avatar
    ankur-007
    Copper Contributor

    Hello,

    I have a situation where I'm planning to use VMSS and attached a managed disk. Could someone help me with below queries:

     

    1. If I'm attaching a managed disk so would it be attached automatically to all the scaling out VM's?

          a. If yes, then hope my data will be persistent on this disk

          b. If No, then will it be attaching new data disks to all the scaling out VM's?

                   (*) If Yes, then in case of VM's scaling in, how will that data be persistent? 

                   (!) If No, then how can I provide a persistent storage of all scaling out VM's

     

    I might be missing some concept so please share your knowledge to bridge the gap. Thanks in advance !

     

     

  • This is very cool and extends the already powerful scaling capabilities 🙂 Good job guys! This ->"scaling out is NOT limited to VMs of the same size", is gold 🙂

     

    Happy Azure Stacking!!!