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:
- Quick create
- Availability at scale
- Cost optimization
- Types of workloads
- Stateful, Open source DBs
- Stateless web apps
- Load balancing
- Managing individual VMs
- Manually scale and Metrics based scale
- Predictive autoscaling
So subscribe to this blog and don’t miss a thing.