Microsoft Azure virtual machines scale sets are a next step in high availability and scalability of virtual machines. Virtual machine high availability can be achieved by availability sets in Microsoft Azure. Microsoft Azure virtual machines scale sets are a group of an identical compute resources deployed in multiple availability sets. It is a true scalable model of auto-scaling that can target large-scale services with big compute, large data and containerized workloads. As these virtual machine scale sets leverage multiple availability sets in the background, therefore scale operations are tacitly balanced across fault and update domains. These scale sets use five fault domains and five update domains in each availability set. Each virtual machine scale sets can host 0-1000 VMs based on platform images, and 0-300 VMs based on custom images.
To define autoscale configuration for consistent application performance, many permutation and combination can be used. Very common rules are compute, memory, and disk I/O utilization. Apart from these common rule of performance metrics, auto scaling of VMs can also depend on application response, or a fixed scheduled.
Note: Virtual Machines scale sets can also be deployed with availability zones.
Now, let me explain you how does this auto scaling works behind the scene. When a new VM added to the scale set, a VM instance Id will be provided to each VM that is unique within a scaleset. When you add or remove a virtual machine from the scale set, the existing Id doesn’t go anywhere. For Example: In a virtual machine scale set you have 10 VMs, if your 2 VMs removed from the scale set based on the configuration and need, and then after some time 5 VMs are added based on the load then new VMs will have Instance id 10, 11, 12, 13, 14 in an incremented manner and these VMs will be balanced across fault and update domains to maintain maximum availability.
Let see how to do it.
Login to the Azure portal and search for “scale” in the azure market place and select the “Virtual machine scale set”.
In the Virtual machine scale set panel, select “Create” to create a new Virtual machine scale set.
In the “create virtual machine scale set” fill the basics information.
Virtual machine scale set name = Enter the scale set name for your virtual machine scale set deployment.
Operating system disk image = Select the operating disk image from drop-down.
Subscription = select your subscription.
Resource group = Create a new resource group or select the existing one.
Location = Select the Azure region from drop-down.
User name = Enter the username that will be used for virtual machines.
Password = Enter the password for the user name.
Confirm password = Re-enter the password to confirm.
Scroll down and fill the required details under “Instances and Load Balancer”.
Instance count = Enter to VMs count between 0 – 100. If you enter any number more than 100 and up to 1000, all the configuration settings will be disabled except instance size. As large-scale sets with more than 100 VMs use managed disk by default and deployment of these large-scale sets take place across multiple placement groups.
Instance size = Select the VM size based on your requirement.
Enable scaling beyond 100 instances = By default “No”, if you select “Yes” then rest of the settings will be disabled as described under instance count.
Use managed disks = By default “Yes”.
Public IP address name = Define name of the public IP address that will be used for load balancer, which will be placed in front of the scale set.
Public IP allocation method = By default dynamic but Static can be selected.
Domain name label = Domain name label for the load balancer in front of the scale set.
Autoscale = By default disabled but if you enable this feature then you need to define the conditions for the auto scaling.
If Autoscale enabled, fill the required details.
Minimum number of VMs = Enter the minimum number of VMs that required in this scale set.
Maximum number of VMs = Enter the maximum number of VMs that required in this scale set.
CPU threshold (%) = Enter the cpu threshold after that VM will be added.
Number of VMs to increase by = Enter the number of VMs that will added when your running VMs reach defined cpu threshold.
CPU threshold (%) = Enter the cpu threshold after that VM will be removed.
Number of VMs to decrease by = Enter the number of VMs that will removed when your running VMs reach defined cpu threshold.
Once filled all the details, click on create to start the deployment process.
As you observed that in the entire process, virtual network and storage account was not asked anywhere because virtual machine scale sets take care of it behind the scene based on the configuration. Therefore, you don’t have to really worry about it.