- Allows a virtual machine to deploy up to 1000 times in the same subnet.
- Allow accurate auto-scaling
- Provides high degree of control like IaaS, but manages networking/storage/compute/load balancing like PaaS.
- Requires no pre-provisioning, automatically configures and manages:
- Network
- Load balancer
- Network Address Translation (NAT)
- Handles resource creations, dependencies and configurations.
Functionality | Scale set | VM |
---|---|---|
Azure Autocale | 👍 | 👎 |
Availability zones | 👍 | 👍 |
Reimaging | 👍 | 👎 |
Overprovisioning | 👍 Automatically increase reliability and faster deployment | 👎 Custom code is required |
Upgrade policy | 👍 Can upgrade all VMs in scale | 👎 Must be orchestrated |
Attach data disks | 👍 Applies to all instances in data sets | 👍 |
Attach non-empty data disks | 👎 | 👍 |
Snapshot | 👎 | 👍 |
Capture image | 👎 | 👍 |
Migrate to use managed disks | 👎 | 👍 |
Assign public IP addresses | 👎 Requires load balancer | 👍 Possible on NIC |
- Done by accessing Load balancer inbound NAT rules and using the correct IP address and custom port.
- You can see & set it in Load Balancer -> Inbound NAT Rules.
- By default, the pipeline builds code, and updates VM scale set with the latest version of your application.
- Can be done by two ways:
- Immutable Deployment
- Create a custom image that already contains the OS and application in a single VHD.
- Advantages
- Predictability
- Any new versions of the application can be tested on a similar VM Scale set and then deployed directly into the production instances without any downtime.
- Easy to scale
- Easy to roll-back
- Faster to scale (no code to install on each VM as it is deployed)
- Can use toolset from Visual Studio Team Services
- Predictability
- Use of VM extensions to install software to each instance at deployment time.
- Customs script VM extension to install/update your application on VM scale set
- Immutable Deployment
- ❗ Scale sets created from Azure Marketplace images can scale up to 1,000 VMs.
- ❗ Scale sets created from custom images can scale up to 300 VMs.
- Layer-7 load balancing with the Azure Application Gateway is supported for all scale sets.
- Scale sets are defined with a single subnet:
- 💡 Ensure subnet is large enough to handle all potential VM instances.
- Requires
singlePlacementGroup = false
property setting.- Layer-4 load balancing with scale sets composed of multiple placement groups requires Azure Load Balancer Standard SKU.
- Fault Domains and Update Domains relate to a single placement group, to maintain high availability ensure there are at least two VM instances in each Fault Domain and Update Domain.
- ❗Large scale sets require Azure Managed Disks.
- Ensure your compute limits are high enough, the requirement for compute cores will prevent a successful deployment if not.