Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para executar aplicações nas instâncias de máquina virtual (VM) de um conjunto de dimensionamento, primeiro é necessário instalar os componentes da aplicação e os arquivos necessários. Em um tutorial anterior, você aprendeu a criar e usar uma imagem de VM personalizada para implantar suas instâncias de VM. Essa imagem personalizada incluía instalações manuais de aplicativos e configurações. Você também pode automatizar a instalação de aplicativos para um conjunto de dimensionamento após a implantação de cada instância de VM ou atualizar um aplicativo que já é executado em um conjunto de dimensionamento. Neste tutorial, você aprenderá a:
- Instalar automaticamente aplicações em seu conjunto de dimensionamento
- Use a Extensão de Script Personalizado do Azure
- Atualizar um aplicativo em execução em um conjunto de escala
Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Azure Cloud Shell
O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador. É possível usar o bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada no seu ambiente local.
Para iniciar o Azure Cloud Shell:
| Opção | Exemplo/Link |
|---|---|
| Selecione Experimentar no canto superior direito de um bloco de código ou de comando. Selecionar Experimentar não copia automaticamente o código nem o comando para o Cloud Shell. |
|
| Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador. |
|
| Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure. |
|
Para usar o Azure Cloud Shell:
Inicie o Cloud Shell.
Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou o comando.
Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e no Linux, ou selecionando Cmd+Shift+V no macOS.
Pressione Enter para executar o código ou o comando.
O que é a Extensão de Script Personalizado do Azure?
A extensão de script personalizado baixa e executa scripts em VMs do Azure. Essa extensão é útil para configuração pós-implantação, instalação de software ou qualquer outra tarefa de configuração ou gerenciamento. Os scripts podem ser baixados do armazenamento do Azure ou do GitHub, ou fornecidos ao Portal do Azure no tempo de execução da extensão.
A extensão de Script Personalizado se integra com os modelos do Azure Resource Manager. Ele também pode ser usado com a CLI do Azure, o Azure PowerShell, o portal do Azure ou com a API REST. Para obter mais informações, consulte a Visão geral da Extensão de Script Personalizado.
Para ver a Extensão de Script Personalizada em ação, crie um conjunto de dimensionamento que instale o servidor Web do IIS e exiba o nome do host da instância de VM no conjunto de dimensionamento. A definição de Extensão de Script Personalizado baixa um script de exemplo do GitHub, instala os pacotes necessários e grava o nome de host da instância de VM em uma página HTML básica.
Criar um conjunto de escala
Crie um grupo de recursos com New-AzResourceGroup. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup na localização Leste dos EUA:
New-AzResourceGroup -Name myResourceGroup -Location "East US"
Agora crie um conjunto de dimensionamento de máquinas virtuais com New-AzVmss. Para distribuir o tráfego para as instâncias de VM individuais, um balanceador de carga também é criado. O balanceador de carga inclui regras para distribuir o tráfego na porta TCP 80. Também permite o tráfego de Área de Trabalho Remota na porta TCP 3389 e o acesso remoto via PowerShell na porta TCP 5985. Quando solicitado, você poderá definir suas próprias credenciais administrativas para as instâncias de VM no conjunto de dimensionamento:
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet" `
-OrchestrationMode "Flexible" `
-Location "EastUS" `
-UpgradePolicyMode "Manual" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-PublicIpAddressName "myPublicIPAddress" `
-LoadBalancerName "myLoadBalancer"
Leva alguns minutos para criar e configurar todos os recursos e as VMs do conjunto de dimensionamento.
Criar definição de Extensão de Script Personalizado
O Azure PowerShell usa uma tabela de hash para armazenar o arquivo a baixar e o comando a executar. No exemplo a seguir, é usado um script de exemplo do GitHub. Primeiro, crie esse objeto de configuração da seguinte maneira:
$customConfig = @{
"fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis.ps1"
}
Agora, aplique a extensão Custom Script com Add-AzVmssExtension. O objeto de configuração definido anteriormente é passado para a extensão. Atualize a extensão nas instâncias de perfil do conjunto de dimensionamento com Update-AzVmss.
# Get information about the scale set
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
# Add the Custom Script Extension to install IIS and configure basic website
$vmss = Add-AzVmssExtension `
-VirtualMachineScaleSet $vmss `
-Name "customScript" `
-Publisher "Microsoft.Compute" `
-Type "CustomScriptExtension" `
-TypeHandlerVersion 1.9 `
-Setting $customConfig
# Update the scale set
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
Adicionar a extensão às instâncias existentes do conjunto de dimensionamento
Execute uma atualização manual para aplicar a extensão atualizada a todas as instâncias existentes do conjunto de dimensionamento. A atualização pode levar alguns minutos para ser concluída.
Update-AzVmssInstance -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "*"
Cada instância de VM no conjunto de dimensionamento baixa e executa o script do GitHub. Em um exemplo mais complexo, vários componentes de aplicativos e arquivos poderiam ser instalados. Se o conjunto de dimensionamento for expandido, as novas instâncias de VM aplicarão automaticamente a mesma definição da Extensão de Script Personalizado e instalarão o aplicativo necessário.
Permitir o tráfego para o aplicativo
Para permitir o acesso ao aplicativo Web básico, crie um grupo de segurança de rede com New-AzNetworkSecurityRuleConfig e New-AzNetworkSecurityGroup. Para saber mais, confira Rede para os Conjuntos de Dimensionamento de Máquinas Virtuais do Azure.
#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
Teste seu conjunto de escalabilidade
Para ver seu servidor Web em ação, obtenha o endereço IP público do 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
Insira o endereço IP público do balanceador de carga em um navegador da Web. O balanceador de carga distribui o tráfego para uma de suas instâncias de VM, conforme mostrado no exemplo a seguir:
Deixe o navegador da Web aberto para que você possa ver uma versão atualizada na próxima etapa.
Alterar a política de atualização
Na seção anterior, para aplicar a aplicação atualizada a todas as instâncias do conjunto de dimensionamento, foi necessário fazer uma atualização manual. Para permitir que as atualizações sejam aplicadas automaticamente a todas as instâncias existentes do conjunto de dimensionamento, atualize a política de atualização de manual para automática. Para obter mais informações sobre as políticas de atualização, consulte Políticas de atualização para Conjuntos de Dimensionamento de Máquinas Virtuais.
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
Update-Azvmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-UpgradePolicyMode "Automatic" `
-VirtualMachineScaleSet $vmss
Atualizar a implantação do aplicativo
Ao longo do ciclo de vida de um conjunto de escala, talvez seja necessário implantar uma versão atualizada de seu aplicativo. Com a Extensão de Script Personalizado, você pode fazer referência a um script de implantação atualizado e, em seguida, aplicar novamente a extensão ao seu conjunto de dimensionamento.
Crie uma nova definição de configuração denominada customConfigv2. Essa definição executa uma versão v2 atualizada do script de instalação do aplicativo:
$customConfigv2 = @{
"fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis-v2.ps1");
"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis-v2.ps1"
}
Atualize a configuração da extensão de script personalizado nas instâncias de VM do conjunto de dimensionamento. A definição customConfigv2.json é usada para aplicar a versão atualizada do aplicativo ao conjunto de dimensionamento:
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
$vmss.VirtualMachineProfile.ExtensionProfile[0].Extensions[0].Settings = $customConfigv2
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
Como agora o conjunto de dimensionamento está usando uma política de atualização automática, o aplicativo atualizado será aplicado automaticamente às instâncias do conjunto de dimensionamento existentes. Atualize o navegador da Web para exibir o aplicativo atualizado. Para ver a versão atualizada, atualize o site em seu navegador:
Limpar os recursos
Para remover o conjunto de dimensionamento e os recursos adicionais, exclua o grupo de recursos e todos os seus recursos com Remove-AzResourceGroup. O parâmetro -Force confirma que você deseja excluir os recursos sem um prompt adicional para fazer isso. O parâmetro -AsJob retorna o controle ao prompt sem aguardar a conclusão da operação.
Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob
Próximas etapas
Neste tutorial, você aprendeu a instalar e atualizar aplicativos automaticamente no seu conjunto de dimensionamento com o Azure PowerShell:
- Instalar automaticamente aplicações em seu conjunto de dimensionamento
- Use a Extensão de Script Personalizado do Azure
- Atualizar um aplicativo em execução em um conjunto de escala
Prossiga para o próximo tutorial para aprender a escalar automaticamente seu conjunto de escala.