We are thrilled to announce the General Availability (GA) of Virtual Machines Scale Sets – Flexible Orchestration mode (in the document below referred as VM Scale Sets). VM Scale Sets now lets you deploy highly available large-scale cloud infrastructure quickly, reliably, and easily.
VM Scale Sets can meet the scalability and availability requirements of a broad number of business-critical workloads, for example:
- Quorum-based workloads
- Open-source databases
- Stateful or stateless applications
- Services which require a mix of different virtual machine types, or that can leverage Spot and on-demand VMs together to optimize costs.
- Existing applications running in Azure that use Availability Sets
- Applications that need to scale out/in based on demand or performance requirements (e.g. CPU utilization metrics to reduce costs)
VM Scale Sets is adding several new and important features beyond what the current VMSS - which is termed as Virtual Machine Scale Sets Uniform Orchestration mode (referred as VM Scale Sets – Uniform) - has provided thus far. VM Scale Sets - Uniform provides a quick, and easy way to deploy homogeneous VMs for stateless or batch type workloads. Azure customers have also used Availability Sets to increase the availability of their applications since they offer isolation using Fault Domains. However, with Availability Sets you can deploy to a region and is capped at 200 instances. VM Scale Sets acts as a super-set of functionalities that VM Scale Sets - Uniform and Availability Sets provide, giving you a single product with variety of options to deploy workloads with unique requirements.
Ease of management
VM Scale Sets provides an easy way to manage group of VMs. You will notice that VMs that are created with VM Scale Sets are full ARM VMs i.e. you have same features, functionality and artifacts available to VMs that are created with VM Scale Sets. This helps simplify your infrastructure management as now you only have to understand 2 concepts
- Virtual Machines
- Grouping construct (VM Scale Sets) of these Virtual Machines
Since VMs created with VM Scale Sets work the same way as VMs created individually, you can bring your work forward without any additional learnings.
VM Scale Sets offer a heterogeneous environment, which enables variety of scenarios for saving costs and performance. You can easily mix Spot and Pay as you Go VMs in the same scale set, you can use different VM SKUs in the same scale sets to get a better price performance. Additionally, you can also attach a VM to an existing VM Scale Sets at create time giving far more flexibility for you to manage infrastructure.
VM Scale Sets offers high elasticity and scale for workloads and can deploy VMs 2-3 times faster than VM Scale Sets - Uniform and Availability Sets. This is a great advancement for workloads that need to rapidly deploy VMs. When it comes to scale, VM Scale Sets offer up to a 1000 VMs that can be spread across Availability Zones or Fault Domain providing high availability at scale.
VM Scale Sets are also integrated with AutoScale and can use metrics to scale out/in based on metrics. This allows you to provision VMs when you need them and save cost by automatically scaling in when the demand is low with no manual intervention. This is great for dynamic workloads to provide a great customer experience and to save cost.
VM Scale Sets provides different availability options for workloads. Customers can easily and automatically spread their VMs across fault isolation units like
- Availability Zones
- Fault Domains
VM Scale Sets will automatically balance the VMs across Availability zones or Fault Domains as VMs are provisioned and with scale out/in. This gives a simple yet powerful way to maintain high resiliency.
One of the big asks from Availability Sets customers was the ability to assign VMs to a specific Fault Domain, with VM Scale Sets you can now specify the fault domain as you deploy and attach the VM to VMSS.
Azure Backup and Azure Site Recovery are also available with VM Scale Sets giving you rich support for BCDR.
Most workloads use homogenous VMs but there are cases where you want to customize a VM to either perform a special task or run a A/B test or to test a unique configuration. VM Scale Sets presents a heterogeneous model for these scenarios where you can achieve these easily, because VMs created using VM Scale Sets are fully ARM registered VMs, so you can go an individual VMs and customize them e.g. NIC, IP, Disks or any other aspect of the VM as these resources are also ARM resources.
You can also attach a different VM size as compared to the model defined with the VM, which gives you a simple way to test changes safely. You can also easily change the VM profile on VM Scale Sets to scale out new SKUs or configuration.
Security is a paramount for customers as they transition to Cloud. VM Scale Sets offers variety of security options.
- In-Guest Patching – This enables you to quickly patch your VMs with critical and Security related updates for both Windows and Linux distros. In-Guest patching is performed in batched and zone aware fashion providing high availability. In addition, if a patch fails, the services retry the update reducing operational overhead
- Automatic extension updates – Now your extensions can be easily and seamless be updated with new versions. This makes your environment safe and secure by updating the extension to the latest version.
Example: N-Tier Application with VMSS Flexible Orchestration
Let’s look at a how you can use VMSS Flexible Orchestration mode to simplify a traditional N-Tier Application virtual machine architecture.
Adapted from Azure Architecture Center: N-Tier application with Apache Cassandra
Traditionally this application architecture requires that you managed each of the 14 VMs individually; you are responsible for monitoring each instance, performing all security patching and ensuring application update. Furthermore, if demand for your application grows or shrinks, you would have to manually create additional instances at the web and/or business tier to handle additional traffic.
You can simplify deployment and management of this architecture by using a VMSS with Flexible Orchestration at each application tier, and rely on VMSS platform features to assist with monitoring and management tasks.
Data-tier – As this database workload tends to be stateful and requiring that instances are spread across multiple racks or partitions, you can specify a VMSS Flexible Orchestration to spread virtual machines across fault domains
Business-tier – Middle tier of the application is often stateless, so you may be able to specify VMSS Flexible with maximum spreading (allow Azure to manage spreading…no particular quorum requirement). You could take advantage of Automatic Instance Repair to monitor if application instances are reporting healthy, and automatically replacing unhealthy instances with new, healthy instances.
Web tier – This also tends to be a stateless tier, and is most susceptible to dynamic changes in traffic. You can specify autoscaling rules to automatically increase or decrease the number of instances based on a schedule, or metrics based rules. You can help optimize costs by mixing demand types; adding 2-3 instance at full, on-demand pricing, and specifying auto scale rules to scale out with less-expensive Spot instances.
Sample templates: vm-scale-sets/vmss-flex-n-tier-demo at master · Azure/vm-scale-sets (github.com)
Resources to get you started
Virtual Machine Scale Sets
Learn how to deploy and manage VMSS Flex