Prerequisites
An Azure account with an active subscription. Create an account for free.
You need an existing standard sku load balancer in the subscription where the Virtual Machine Scale Set will be deployed.
You need an Azure Virtual Network for the Virtual Machine Scale Set.
Use the Bash environment in Azure Cloud Shell. For more information, see Quickstart for Bash in Azure Cloud Shell.
If you prefer to run CLI reference commands locally, install the Azure CLI. If you're running on Windows or macOS, consider running Azure CLI in a Docker container. For more information, see How to run the Azure CLI in a Docker container.
If you're using a local installation, sign in to the Azure CLI by using the az login command. To finish the authentication process, follow the steps displayed in your terminal. For other sign-in options, see Sign in with the Azure CLI.
When you're prompted, install the Azure CLI extension on first use. For more information about extensions, see Use extensions with the Azure CLI.
Run az version to find the version and dependent libraries that are installed. To upgrade to the latest version, run az upgrade.
- This article requires version 2.0.28 or later of the Azure CLI. If using Azure Cloud Shell, the latest version is already installed.
Deploy a Virtual Machine Scale Set with existing load balancer
Deploy a Virtual Machine Scale Set with az vmss create
.
Replace the values in brackets with the names of the resources in your configuration.
az vmss create \
--resource-group <resource-group> \
--name <vmss-name>\
--image <your-image> \
--admin-username <admin-username> \
--generate-ssh-keys \
--upgrade-policy-mode Automatic \
--instance-count 3 \
--vnet-name <virtual-network-name> \
--subnet <subnet-name> \
--lb <load-balancer-name> \
--backend-pool-name <backend-pool-name>
The below example deploys a Virtual Machine Scale Set with:
- Virtual Machine Scale Set named myVMSS
- Azure Load Balancer named myLoadBalancer
- Load balancer backend pool named myBackendPool
- Azure Virtual Network named myVnet
- Subnet named mySubnet
- Resource group named myResourceGroup
- Ubuntu Server image for the Virtual Machine Scale Set
az vmss create \
--resource-group myResourceGroup \
--name myVMSS \
--image Canonical:UbuntuServer:18.04-LTS:latest \
--admin-username adminuser \
--generate-ssh-keys \
--upgrade-policy-mode Automatic \
--instance-count 3 \
--vnet-name myVnet\
--subnet mySubnet \
--lb myLoadBalancer \
--backend-pool-name myBackendPool
Note
After the scale set has been created, the backend port cannot be modified for a load balancing rule used by a health probe of the load balancer. To change the port, you can remove the health probe by updating the Azure virtual machine scale set, update the port and then configure the health probe again.
Prerequisites
- An Azure account with an active subscription. Create an account for free.
- An existing resource group for all resources.
- An existing standard sku load balancer in the subscription where the Virtual Machine Scale Set will be deployed.
- An Azure Virtual Network for the Virtual Machine Scale Set.
Azure Cloud Shell
Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. You can use either Bash or PowerShell with Cloud Shell to work with Azure services. You can use the Cloud Shell preinstalled commands to run the code in this article, without having to install anything on your local environment.
To start Azure Cloud Shell:
Option |
Example/Link |
Select Try It in the upper-right corner of a code or command block. Selecting Try It doesn't automatically copy the code or command to Cloud Shell. |
|
Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. |
|
Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. |
|
To use Azure Cloud Shell:
Start Cloud Shell.
Select the Copy button on a code block (or command block) to copy the code or command.
Paste the code or command into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux, or by selecting Cmd+Shift+V on macOS.
Select Enter to run the code or command.
Sign in to Azure CLI
Sign into Azure with Connect-AzAccount
Connect-AzAccount
Deploy a Virtual Machine Scale Set with existing load balancer
Deploy a Virtual Machine Scale Set with New-AzVMss
. Replace the values in brackets with the names of the resources in your configuration.
$rsg = <resource-group>
$loc = <location>
$vms = <vm-scale-set-name>
$vnt = <virtual-network>
$sub = <subnet-name>
$lbn = <load-balancer-name>
$pol = <upgrade-policy-mode>
$img = <image-name>
$bep = <backend-pool-name>
$lb = Get-AzLoadBalancer -ResourceGroupName $rsg -Name $lbn
New-AzVmss -ResourceGroupName $rsg -Location $loc -VMScaleSetName $vms -VirtualNetworkName $vnt -SubnetName $sub -LoadBalancerName $lb -UpgradePolicyMode $pol
The below example deploys a Virtual Machine Scale Set with the following values:
- Virtual Machine Scale Set named myVMSS
- Azure Load Balancer named myLoadBalancer
- Load balancer backend pool named myBackendPool
- Azure Virtual Network named myVnet
- Subnet named mySubnet
- Resource group named myResourceGroup
$rsg = "myResourceGroup"
$loc = "East US 2"
$vms = "myVMSS"
$vnt = "myVnet"
$sub = "mySubnet"
$pol = "Automatic"
$lbn = "myLoadBalancer"
$bep = "myBackendPool"
$lb = Get-AzLoadBalancer -ResourceGroupName $rsg -Name $lbn
New-AzVmss -ResourceGroupName $rsg -Location $loc -VMScaleSetName $vms -VirtualNetworkName $vnt -SubnetName $sub -LoadBalancerName $lb -UpgradePolicyMode $pol -BackendPoolName $bep
Note
After the scale set has been created, the backend port cannot be modified for a load balancing rule used by a health probe of the load balancer. To change the port, you can remove the health probe by updating the Azure virtual machine scale set, update the port and then configure the health probe again.
Next steps
In this article, you deployed a Virtual Machine Scale Set with an existing Azure Load Balancer. To learn more about Virtual Machine Scale Sets and load balancer, see: