Scalable VM
OS Image Diff
Base
OS Image
Scalable VM
OS Image Diff
Scalable VM
OS Image Diff
Scalable VM
OS Image Diff
Scalable Virtual
Machine
OS Image Diff
Disk


Microsoft.Compute/virtualMachineScaleSets



 platform independent
Virtual Machines
Azure Public CloudAzure Stack
VM Scale Sets
ACS
Mesos, Swarm
Service
Fabric
Batch
App ServiceMedia
Web
Apps
Mobile
Apps
CloudFoundry
Infrastructure
IaaS and
IaaS+
Cluster
Orchestration
PaaS Layers
Cluster Orchestration
Vertical PaaS
Pivotal Cloud Foundry

https://www.flickr.com/photos/vijairaj/278290052/
https://creativecommons.org/licenses/by-sa/2.0/
http://survivorsdogs.wikia.com/wiki/Wolf_(animal)?file=Wolfpack.jpg
http://creativecommons.org/licenses/by-sa/3.0/
http://www.torange-fr.com/animals/birds/Un-troupeau-de-pigeons-et-tourterelles-15497.html
http://creativecommons.org/licenses/by/4.0/
Resource Group
Subnet
Storage
VM
VNET
Public IP
Azure Resource Manager: Building a Virtual Machine
NIC storageAccount
- accountType
publicIPAddress
- allocationMethod
- domainNameLabel
virtualNetwork
- addressSpace
- Subnet
- addressPrefix
networkInterface
- privateIPAllocati
onMethod
virtualMachine
- hardwareProfile
- osProfile
- storageProfile
- networkProfile
https://github.com/Azure/azure-quickstart-templates/ See also Cloud Cover #189
Resource Group
Subnet
Storage
VM
VNET
Public IP
Resource Loops: Declare multiple resources
NIC
https://github.com/Azure/azure-quickstart-templates/blob/master/resource-loop-vms-vnet/azuredeploy.json
VM
Public IP
NIC
VM
Public IP
NIC
…
Subnet
Storage














Resource Group
Subnet
Scalable Storage
V
M
VNET
Scalable NIC
…
V
M
V
M
V
M
Scale Set
Extensions
Manage groups of identical VMs
https://github.com/Azure/azure-quickstart-templates - *vmss*
Specify a target instance count
Specify a prefix for computer name
1
2
"capacity": "[parameters('instanceCount')]"
"computerNamePrefix": "[parameters('vmSSName')]",
Unique to VMSS
Built in deployment at scale
Autoscale
Load balancer/autoscale
integration
Simple manual scale/in out with
HA
Deployment reliability
(overprovisioning)
Manual OS image patching
Integrated network properties
Integrated extension properties
>500 VMs/RG
Name Limit
VMs per Scale
Set
100
Storage a/c’s per
subscription
100
FDs/UDs 5/5
Custom
images/scale set
40 VMs (1
Storage a/c)
Unique to VMs
Public IP per VM
Attached data disks
Unique extension startup
params
Permanent machine
name/IP addr links
Specific machine names
Subnet
V
M
VNET
V
M
V
M
Scale Set
https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-linux-jumpbox
Subnet
V
M
VNET
V
M
V
M
Scale Set
https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-linux-nat
Subnet
V
M
VNET
V
M
V
M
Scale Set
https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-windows-autoscale








AppGw
Fabrikam Servers
Contoso Servers
contoso.com/images* Contoso Image Servers
Contoso Video Servers
VIP1:80
AutoScale service
(background job)
ARM/CSMPortal
Insights SDK,
PowerShell
Monitoring
Service
(Insights)
Insights
Storage
1 2
3
4
5
6
Scale action
Scale action (ask the Resource Provider to scale, via ARM)
Resource validations/checks
Create/update AutoScale setting
Schedule AutoScale job (runs every 5 minutes)
Insights REST API calls
Log AutoScale
trigger events
V
M
V
M
V
M
Scale Set
Job collects metrics for AutoScale rules
WAD metrics
https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-diagnostics-performance-counters/
https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-windows-autoscale
Data is stored.. Pros Cons
OS Drive Self-contained, backed by data
service
Poor design in many
scenarios.
Storage limited,
Temp drive Local, ephemeral, good for stateless
scenarios.
Not backed by storage RP.
Storage limited.
Azure Files Storage can be shared across
clients. Perf/scale work ongoing.
Limited scale and
performance.
Azure Blobs Data is a reliable service backed by
storage.
Existing apps need
redesign. IOPS limits
Azure Tables Data is a reliable service backed by
storage.
Simple data structure.
App redesign.
Remote source (e.g.
DB)
Data is a service separate from app
infrastructure.
Only suitable for a subset of
apps.
3rd party shared
storage e.g. Lustre
Storage shared across clients.
Scalable performance.
Lustre is Linux only.
http://blogs.msdn.com/b/arsen/archive/2015/12/30/linux-azure-vm-scale-sets-with-shared-storage-using-lustre.aspx
• Parallel filesystem
• Aggregates many servers into one
filesystem
• Scales I/O throughput and capacity
• Clients see a single synchronized
namespace
• Shared POSIX filesystem
• Open source
• Linux only
# Create a scale set from a template
New-AzureRmResourceGroupDeployment -name dep1 -vmSSName myvmss -instanceCount 2 -ResourceGroupName
myrg -TemplateUri https://raw.githubusercontent.com/gbowerman/azure-myriad/master/vmss-ubuntu-vnet-
storage.json
# Get scale set details
Get-AzureRmResource -name myvmss -ResourceGroupName myrg -ResourceType
Microsoft.Compute/virtualMachineScaleSets -ApiVersion 2015-06-15
# or for more detail pipe it through | ConvertTo-Json -Depth 10
# or for even more detail add –debug to your command.
# Scaling out or scaling in
New-AzureRmResourceGroupDeployment -name dep2 -vmSSName myvmss -instanceCount 2 -ResourceGroupName myrg
–TemplateUri https://raw.githubusercontent.com/gbowerman/azure-myriad/master/vmss-scale-in-or-out.json
# Remove a scale set:
# Easy: Remove the resource group:
Remove-AzureRmResourceGroup -Name myrg
#Precise: Remove a resource:
Remove-AzureRmResource -Name myvmss -ResourceGroupName myrg -ApiVersion 2015-06-15 -ResourceType
Microsoft.Compute/virtualMachineScaleSets



https://github.com/AzureRT/azure-powershell/releases
# create a resource group
azure group create myrg "Southeast Asia"
# create a scale set
azure group deployment create -g myrg -n dep2 --template-uri
https://raw.githubusercontent.com/gbowerman/azure-myriad/master/vmss-
ubuntu-vnet-storage.json
# this should ask for parameters dynamically, or you could specify them
as arguments
# get scale set details
azure resource show -n vmssname -r
Microsoft.Compute/virtualMachineScaleSets -o 2015-06-15 -g myrg
# or for more details:
azure resource show –n vmssname –r
Microsoft.Compute/virtualMachineScaleSets –o 2015-06-15 –g myrg –json –
vv
# Creation of a Scale Set with or without a Template.
azure vmss parameters generate create-or-update --parameter-file
%filename%
...
azure vmss create-or-update --resource-group-name %rgname% --parameter-
file %filename%
# GetInstanceView on the Scale Set
azure vmss get-instance-view --resource-group-name %rgname% --vm-scale-
set-name test3
# Scale Up/Down with only updating instance count.
azure vmss parameters set sku --parameter-file %filename% --capacity 2
azure vmss parameters set sku --parameter-file %filename% --capacity 3
azure vmss create-or-update --resource-group-name %rgname% --parameter-
file %filename%
# Manual Upgrade actions on certain instances
azure vmss update-instances --resource-group-name %rgname% --vm-scale-set-
name test3 --vm-instance-ids ...
V
M
V
M
V
M
VMSS can be configured
https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-automation-dsc
https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-vmss-vstemplates/



 https://github.com/Azure/azure-sdk-for-net
 https://github.com/Azure/azure-sdk-for-java/
 https://github.com/Azure/azure-sdk-for-python
 https://github.com/Azure/azure-sdk-for-go
 https://github.com/Azure/azure-sdk-for-ruby
 https://github.com/Azure/azure-sdk-for-node
Authenticating a service principal with Azure Resource Manager -
https://azure.microsoft.com/en-us/documentation/articles/resource-group-authenticate-service-principal/
https://azure.microsoft.com/en-us/blog/azure-resource-manager-preview-sdks/
http://www.dushyantgill.com/blog/2015/05/23/developers-guide-to-auth-with-azure-resource-manager-api/

https://msdn.microsoft.com/en-us/library/azure/mt589023.aspx

https://github.com/gbowerman/vmssdashboard
 https://resources.azure.com/

 http://spinnaker.io




Network Security
Group
LoadBalancer
Scale Set
LoadBalancer
Scale Set
LoadBalancer
Scale Set
Network Security
Group
PIP PIP PIP
Storage AC
VNET
Scale Set
Storage AC
VNET
Scale Set
Storage AC
VNET
Scale Set
Batch pool:
a logical abstraction over
VM scale sets tailored to
batch computing
scenarios
Larger units than a single
VM make for more
manageable coordination
pieces
PaaS Options with ARM Stack


Scenario Solution
Lift and Shift, Front Small-medium Scale, general
purpose compute, autoscale, Linux Support
VM Scale Sets
Containerized microservices and containerized
applications on Linux
Azure Container
Service
External Websites with minimal Guest
Customization
WebApps
Hyper Scale, stateful and stateless microservices Service Fabric
Open source stack, polyglot, migration from
OpenStack / VMWare
Cloud Foundry
Title Link
Azure blog Announcement (MarkRuss) https://azure.microsoft.com/en-us/blog/azure-vm-scale-sets-public-preview/
Linux VMSS with shared storage using Lustre http://blogs.msdn.com/b/arsen/archive/2015/12/30/linux-azure-vm-scale-sets-with-shared-storage-
using-lustre.aspx
VMSS Getting Started Guide https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-vmss-walkthrough/
VMSS Overview https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-vmss-overview/
VMSS REST API https://msdn.microsoft.com/library/mt589023.aspx
Deploying VMSS Templates in Visual Studio https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-vmss-vstemplates/
VMSS example templates https://github.com/Azure/azure-quickstart-templates
https://github.com/gbowerman/azure-myriad
VMSS Intro video (Mark Russ) https://sec.ch9.ms/ch9/5b22/f343f009-b42e-4a6e-8eac-
bf8252de5b22/MarkRussinovichAzureScaleSet_high.mp4
Cloud Cover 191 https://channel9.msdn.com/Shows/Cloud+Cover/Episode-191-Virtual-Machine-Scale-Sets-with-Guy-
Bowerman
Tuesdays with Corey https://regularitguy.com/2015/11/25/tuesdays-with-corey-azure-vm-scale-sets-in-public-preview/
VM Scale Set template dissection https://channel9.msdn.com/Blogs/Windows-Azure/VM-Scale-Set-Template-Dissection/player

UK Azure Users Group

  • 2.
    Scalable VM OS ImageDiff Base OS Image Scalable VM OS Image Diff Scalable VM OS Image Diff Scalable VM OS Image Diff Scalable Virtual Machine OS Image Diff Disk   Microsoft.Compute/virtualMachineScaleSets     platform independent
  • 3.
    Virtual Machines Azure PublicCloudAzure Stack VM Scale Sets ACS Mesos, Swarm Service Fabric Batch App ServiceMedia Web Apps Mobile Apps CloudFoundry Infrastructure IaaS and IaaS+ Cluster Orchestration PaaS Layers Cluster Orchestration Vertical PaaS Pivotal Cloud Foundry
  • 4.
  • 6.
    Resource Group Subnet Storage VM VNET Public IP AzureResource Manager: Building a Virtual Machine NIC storageAccount - accountType publicIPAddress - allocationMethod - domainNameLabel virtualNetwork - addressSpace - Subnet - addressPrefix networkInterface - privateIPAllocati onMethod virtualMachine - hardwareProfile - osProfile - storageProfile - networkProfile https://github.com/Azure/azure-quickstart-templates/ See also Cloud Cover #189
  • 7.
    Resource Group Subnet Storage VM VNET Public IP ResourceLoops: Declare multiple resources NIC https://github.com/Azure/azure-quickstart-templates/blob/master/resource-loop-vms-vnet/azuredeploy.json VM Public IP NIC VM Public IP NIC … Subnet Storage
  • 8.
  • 9.
             Resource Group Subnet Scalable Storage V M VNET ScalableNIC … V M V M V M Scale Set Extensions Manage groups of identical VMs https://github.com/Azure/azure-quickstart-templates - *vmss*
  • 10.
    Specify a targetinstance count Specify a prefix for computer name 1 2 "capacity": "[parameters('instanceCount')]" "computerNamePrefix": "[parameters('vmSSName')]",
  • 11.
    Unique to VMSS Builtin deployment at scale Autoscale Load balancer/autoscale integration Simple manual scale/in out with HA Deployment reliability (overprovisioning) Manual OS image patching Integrated network properties Integrated extension properties >500 VMs/RG Name Limit VMs per Scale Set 100 Storage a/c’s per subscription 100 FDs/UDs 5/5 Custom images/scale set 40 VMs (1 Storage a/c) Unique to VMs Public IP per VM Attached data disks Unique extension startup params Permanent machine name/IP addr links Specific machine names
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
    AutoScale service (background job) ARM/CSMPortal InsightsSDK, PowerShell Monitoring Service (Insights) Insights Storage 1 2 3 4 5 6 Scale action Scale action (ask the Resource Provider to scale, via ARM) Resource validations/checks Create/update AutoScale setting Schedule AutoScale job (runs every 5 minutes) Insights REST API calls Log AutoScale trigger events V M V M V M Scale Set Job collects metrics for AutoScale rules WAD metrics https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-diagnostics-performance-counters/ https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-windows-autoscale
  • 19.
    Data is stored..Pros Cons OS Drive Self-contained, backed by data service Poor design in many scenarios. Storage limited, Temp drive Local, ephemeral, good for stateless scenarios. Not backed by storage RP. Storage limited. Azure Files Storage can be shared across clients. Perf/scale work ongoing. Limited scale and performance. Azure Blobs Data is a reliable service backed by storage. Existing apps need redesign. IOPS limits Azure Tables Data is a reliable service backed by storage. Simple data structure. App redesign. Remote source (e.g. DB) Data is a service separate from app infrastructure. Only suitable for a subset of apps. 3rd party shared storage e.g. Lustre Storage shared across clients. Scalable performance. Lustre is Linux only.
  • 20.
    http://blogs.msdn.com/b/arsen/archive/2015/12/30/linux-azure-vm-scale-sets-with-shared-storage-using-lustre.aspx • Parallel filesystem •Aggregates many servers into one filesystem • Scales I/O throughput and capacity • Clients see a single synchronized namespace • Shared POSIX filesystem • Open source • Linux only
  • 22.
    # Create ascale set from a template New-AzureRmResourceGroupDeployment -name dep1 -vmSSName myvmss -instanceCount 2 -ResourceGroupName myrg -TemplateUri https://raw.githubusercontent.com/gbowerman/azure-myriad/master/vmss-ubuntu-vnet- storage.json # Get scale set details Get-AzureRmResource -name myvmss -ResourceGroupName myrg -ResourceType Microsoft.Compute/virtualMachineScaleSets -ApiVersion 2015-06-15 # or for more detail pipe it through | ConvertTo-Json -Depth 10 # or for even more detail add –debug to your command. # Scaling out or scaling in New-AzureRmResourceGroupDeployment -name dep2 -vmSSName myvmss -instanceCount 2 -ResourceGroupName myrg –TemplateUri https://raw.githubusercontent.com/gbowerman/azure-myriad/master/vmss-scale-in-or-out.json # Remove a scale set: # Easy: Remove the resource group: Remove-AzureRmResourceGroup -Name myrg #Precise: Remove a resource: Remove-AzureRmResource -Name myvmss -ResourceGroupName myrg -ApiVersion 2015-06-15 -ResourceType Microsoft.Compute/virtualMachineScaleSets
  • 23.
  • 24.
    # create aresource group azure group create myrg "Southeast Asia" # create a scale set azure group deployment create -g myrg -n dep2 --template-uri https://raw.githubusercontent.com/gbowerman/azure-myriad/master/vmss- ubuntu-vnet-storage.json # this should ask for parameters dynamically, or you could specify them as arguments # get scale set details azure resource show -n vmssname -r Microsoft.Compute/virtualMachineScaleSets -o 2015-06-15 -g myrg # or for more details: azure resource show –n vmssname –r Microsoft.Compute/virtualMachineScaleSets –o 2015-06-15 –g myrg –json – vv
  • 25.
    # Creation ofa Scale Set with or without a Template. azure vmss parameters generate create-or-update --parameter-file %filename% ... azure vmss create-or-update --resource-group-name %rgname% --parameter- file %filename% # GetInstanceView on the Scale Set azure vmss get-instance-view --resource-group-name %rgname% --vm-scale- set-name test3 # Scale Up/Down with only updating instance count. azure vmss parameters set sku --parameter-file %filename% --capacity 2 azure vmss parameters set sku --parameter-file %filename% --capacity 3 azure vmss create-or-update --resource-group-name %rgname% --parameter- file %filename% # Manual Upgrade actions on certain instances azure vmss update-instances --resource-group-name %rgname% --vm-scale-set- name test3 --vm-instance-ids ...
  • 26.
    V M V M V M VMSS can beconfigured https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-automation-dsc
  • 28.
  • 29.
      https://github.com/Azure/azure-sdk-for-net  https://github.com/Azure/azure-sdk-for-java/ https://github.com/Azure/azure-sdk-for-python  https://github.com/Azure/azure-sdk-for-go  https://github.com/Azure/azure-sdk-for-ruby  https://github.com/Azure/azure-sdk-for-node Authenticating a service principal with Azure Resource Manager - https://azure.microsoft.com/en-us/documentation/articles/resource-group-authenticate-service-principal/ https://azure.microsoft.com/en-us/blog/azure-resource-manager-preview-sdks/ http://www.dushyantgill.com/blog/2015/05/23/developers-guide-to-auth-with-azure-resource-manager-api/
  • 30.
  • 31.
  • 34.
  • 37.
  • 38.
    Network Security Group LoadBalancer Scale Set LoadBalancer ScaleSet LoadBalancer Scale Set Network Security Group PIP PIP PIP
  • 39.
    Storage AC VNET Scale Set StorageAC VNET Scale Set Storage AC VNET Scale Set Batch pool: a logical abstraction over VM scale sets tailored to batch computing scenarios Larger units than a single VM make for more manageable coordination pieces
  • 41.
  • 42.
      Scenario Solution Lift andShift, Front Small-medium Scale, general purpose compute, autoscale, Linux Support VM Scale Sets Containerized microservices and containerized applications on Linux Azure Container Service External Websites with minimal Guest Customization WebApps Hyper Scale, stateful and stateless microservices Service Fabric Open source stack, polyglot, migration from OpenStack / VMWare Cloud Foundry
  • 43.
    Title Link Azure blogAnnouncement (MarkRuss) https://azure.microsoft.com/en-us/blog/azure-vm-scale-sets-public-preview/ Linux VMSS with shared storage using Lustre http://blogs.msdn.com/b/arsen/archive/2015/12/30/linux-azure-vm-scale-sets-with-shared-storage- using-lustre.aspx VMSS Getting Started Guide https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-vmss-walkthrough/ VMSS Overview https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-vmss-overview/ VMSS REST API https://msdn.microsoft.com/library/mt589023.aspx Deploying VMSS Templates in Visual Studio https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-vmss-vstemplates/ VMSS example templates https://github.com/Azure/azure-quickstart-templates https://github.com/gbowerman/azure-myriad VMSS Intro video (Mark Russ) https://sec.ch9.ms/ch9/5b22/f343f009-b42e-4a6e-8eac- bf8252de5b22/MarkRussinovichAzureScaleSet_high.mp4 Cloud Cover 191 https://channel9.msdn.com/Shows/Cloud+Cover/Episode-191-Virtual-Machine-Scale-Sets-with-Guy- Bowerman Tuesdays with Corey https://regularitguy.com/2015/11/25/tuesdays-with-corey-azure-vm-scale-sets-in-public-preview/ VM Scale Set template dissection https://channel9.msdn.com/Blogs/Windows-Azure/VM-Scale-Set-Template-Dissection/player