Guia de início rápido: criar um conjunto de dimensionamento de máquina virtual com o Azure PowerShell

Aplica-se a: ✔️ Linux VMs ✔️ Windows VMs ✔️ Conjuntos de escala uniforme

Nota

O artigo a seguir é para conjuntos de escala de máquina virtual uniforme. Recomendamos o uso de Conjuntos de Dimensionamento de Máquina Virtual Flexível para novas cargas de trabalho. Saiba mais sobre esse novo modo de orquestração em nossa visão geral dos Conjuntos de Escala de Máquina Virtual Flexível.

Um Conjunto de Dimensionamento de Máquina Virtual permite implantar e gerenciar um conjunto de máquinas virtuais de dimensionamento automático. Pode dimensionar o número de VMs no conjunto de dimensionamento manualmente ou definir regras para dimensionar automaticamente com base na utilização de recursos como CPU, exigência de memória ou tráfego de rede. Em seguida, um balanceador de carga do Azure distribui o tráfego pelas instâncias de VM no conjunto de dimensionamento. Neste início rápido, você cria um Conjunto de Dimensionamento de Máquina Virtual e implanta um aplicativo de exemplo com o Azure PowerShell.

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Azure Cloud Shell

O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.

Para iniciar o Azure Cloud Shell:

Opção Exemplo/Ligação
Selecione Experimentar no canto superior direito de um código ou bloco de comandos. Selecionar Experimentar não copia automaticamente o código ou comando para o Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser. Button to launch Azure Cloud Shell.
Selecione o botão Cloud Shell na barra de menus, na parte direita do portal do Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Para usar o Azure Cloud Shell:

  1. Inicie o Cloud Shell.

  2. Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou comando.

  3. Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e Linux ou selecionando Cmd+Shift+V no macOS.

  4. Selecione Enter para executar o código ou comando.

Criar um conjunto de dimensionamento

Antes de criar um conjunto de escalas, crie um grupo de recursos com New-AzResourceGroup. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus:

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "EastUS"

Agora crie um conjunto de escala de máquina virtual com New-AzVmss. O exemplo seguinte cria um conjunto de dimensionamento com o nome myScaleSet que utiliza a imagem de plataforma do Windows Server 2016 Datacenter. Os recursos de rede do Azure para a rede virtual, o endereço IP público e o balanceador de carga são criados automaticamente. Quando solicitado, você pode definir suas próprias credenciais administrativas para as instâncias de VM no conjunto de escala:

Importante

A partir de novembro de 2023, os conjuntos de dimensionamento de VM criados usando o PowerShell e a CLI do Azure assumirão como padrão o Modo de Orquestração Flexível se nenhum modo de orquestração for especificado. Para obter mais informações sobre essa alteração e quais ações você deve tomar, vá para Breaking Change for VMSS PowerShell/CLI Customers - Microsoft Community Hub

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS" `
  -VMScaleSetName "myScaleSet" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -OrchestrationMode 'Uniform' `
  -UpgradePolicyMode "Automatic"

A criação e configuração de todas as VMs e recursos do conjunto de dimensionamento demora alguns minutos.

Implementar aplicação de exemplo

Para testar o conjunto de dimensionamento, instale uma aplicação Web básica. A Extensão de Script Personalizado do Azure serve para transferir e executar um script que instala o IIS nas instâncias de VM. Esta extensão é útil para a configuração pós-implementação, instalação de software ou qualquer outra tarefa de gestão/configuração. Para obter mais informações, veja a Descrição geral da Extensão de Script Personalizado.

Utilize a Extensão de Script Personalizado para instalar um servidor Web do IIS básico. Aplique a Extensão de Script Personalizado que instala o IIS da seguinte forma:

# Define the script for your Custom Script Extension to run
$publicSettings = @{
    "fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis.ps1");
    "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis.ps1"
}

# Get information about the scale set
$vmss = Get-AzVmss `
            -ResourceGroupName "myResourceGroup" `
            -VMScaleSetName "myScaleSet"

# Use Custom Script Extension to install IIS and configure basic website
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
    -Name "customScript" `
    -Publisher "Microsoft.Compute" `
    -Type "CustomScriptExtension" `
    -TypeHandlerVersion 1.8 `
    -Setting $publicSettings

# Update the scale set and apply the Custom Script Extension to the VM instances
Update-AzVmss `
    -ResourceGroupName "myResourceGroup" `
    -Name "myScaleSet" `
    -VirtualMachineScaleSet $vmss

Permitir o tráfego para a aplicação

Para permitir o acesso ao aplicativo Web básico, crie um grupo de segurança de rede com New-AzNetworkSecurityRuleConfig e New-AzNetworkSecurityGroup. Para obter mais informações, consulte Rede para conjuntos de escala de máquina virtual do Azure.

# Get information about the scale set
$vmss = Get-AzVmss `
            -ResourceGroupName "myResourceGroup" `
            -VMScaleSetName "myScaleSet"

#Create a rule to allow traffic over port 80
$nsgFrontendRule = New-AzNetworkSecurityRuleConfig `
  -Name myFrontendNSGRule `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 200 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80 `
  -Access Allow

#Create a network security group and associate it with the rule
$nsgFrontend = New-AzNetworkSecurityGroup `
  -ResourceGroupName  "myResourceGroup" `
  -Location EastUS `
  -Name myFrontendNSG `
  -SecurityRules $nsgFrontendRule

$vnet = Get-AzVirtualNetwork `
  -ResourceGroupName  "myResourceGroup" `
  -Name myVnet

$frontendSubnet = $vnet.Subnets[0]

$frontendSubnetConfig = Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $vnet `
  -Name mySubnet `
  -AddressPrefix $frontendSubnet.AddressPrefix `
  -NetworkSecurityGroup $nsgFrontend

Set-AzVirtualNetwork -VirtualNetwork $vnet

# Update the scale set and apply the Custom Script Extension to the VM instances
Update-AzVmss `
    -ResourceGroupName "myResourceGroup" `
    -Name "myScaleSet" `
    -VirtualMachineScaleSet $vmss

Testar o seu conjunto de dimensionamento

Para ver o conjunto de dimensionamento em ação, aceda à aplicação Web de exemplo num browser. Obtenha o endereço IP público do seu balanceador de carga com Get-AzPublicIpAddress. O exemplo a seguir exibe o endereço IP criado no grupo de recursos myResourceGroup :

Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select IpAddress

Introduza o endereço IP público do balanceador de carga num browser. O balanceador de carga distribui o tráfego para uma das suas instâncias de VM, conforme mostra o exemplo seguinte:

Running IIS site

Clean up resources (Limpar recursos)

Quando não for mais necessário, você poderá usar o Remove-AzResourceGroup para remover o grupo de recursos, o conjunto de dimensionamento e todos os recursos relacionados da seguinte maneira. O parâmetro -Force confirma que pretende eliminar os recursos sem uma linha de comandos adicional para fazê-lo. O parâmetro -AsJob devolve o controlo à linha de comandos, sem aguardar a conclusão da operação.

Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob

Próximos passos

Neste início rápido, criou um conjunto de dimensionamento básico e utilizou a Extensão de Script Personalizado para instalar um servidor Web de IIS básico nas instâncias de VM. Para saber mais, continue no tutorial sobre como criar e gerenciar Conjuntos de Escala de Máquina Virtual do Azure.