O Azure Application Gateway é um web traffic load balancer que permite gerenciar o tráfego para seus aplicativos Web. Os balanceadores de carga tradicionais operam na camada de transporte (camada OSI 4 – TCP e UDP) e direcionam o tráfego com base no endereço IP e na porta de origem, para um endereço IP e uma porta de destino.
01. Vamos criar um grupo de recursos
O comando abaixo cria um grupo de recursos
# Create Resource Group
New-AzResourceGroup -Name ‘RG-ApplicatioGateway’ -Location ‘EastUS’
Observe na imagem abaixo que nosso grupo de recursos foi criado
02. Vamos criar uma virtual network e duas subnet, uma subnet para os web server e a outra subnet será utilizada para o Application Gateway.
O script abaixo cria uma virtual network e duas subnets:
# Variáveis
$Resourcegroup = “RG-ApplicatioGateway”
$Location = “EastUS”
$Vnet = “Vnet-ApplicationGateway”
$Sub1 = “subnet-Backend”
$Sub2 = “Subnet-AG”
# Criar virtual network
$virtualNetwork = New-AzVirtualNetwork -ResourceGroupName $Resourcegroup -Location $Location -Name $Vnet -AddressPrefix 10.0.0.0/16
# Adicionar uma subnet
$subnetConfig = Add-AzVirtualNetworkSubnetConfig -Name $Sub1 -AddressPrefix 10.0.1.0/24 -VirtualNetwork $virtualNetwork
#Adicionar uma segunda subnet
$subnetConfig2 = Add-AzVirtualNetworkSubnetConfig -Name $Sub2 -AddressPrefix 10.0.100.0/27 -VirtualNetwork $virtualNetwork
# Associar subnets à virtual network
$virtualNetwork | Set-AzVirtualNetwork
Observe na imagem abaixo que nossa virtual network e subnets foram criadas com sucesso.
03. Agora vamos criar um IP Publico para o application gateway.
O script abaixo cria um public IP Dynamic:
# Definindo as variáveis
$publicIpName = “PI-ApplicationGateway”
$rgName = “RG-ApplicatioGateway”
$location = “EastUS”
# Criar endereço IP público
$publicIp = New-AzureRmPublicIpAddress -Name $publicIpName -ResourceGroupName $rgName -AllocationMethod Dynamic -DomainNameLabel $dnsPrefix -Location $location
Observe na imagem abaixo que nosso IP publico foi criado.
04 – Agora vamos criar a máquina virtual VM-IIS-01.
O Script abaixo cria uma máquina virtual chamada VM-IIS-01
# Definindo as variáveis de rede
$ResourceGroup = “RG-ApplicatioGateway”
$Location = “EastUS”
$vNetName = “Vnet-ApplicationGateway”
$SubnetName = “subnet-Backend”
$nsgName = “nsg-WebServer”
# Criando o Network Security Group
$nsgRuleVMAccess = New-AzNetworkSecurityRuleConfig -Name ‘allow-vm-access’ -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389,443,80 -Access Allow
New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Location $location -Name $nsgName -SecurityRules $nsgRuleVMAccess
# Definindo as variáveis da máquina virtual
$vNet = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroup -Name $vNetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vNet
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NsgName
$vmName = “VM-IIS-01”
$pubName = “MicrosoftWindowsServer”
$offerName = “WindowsServer”
$skuName = “2016-Datacenter”
$vmSize = “Standard_DS2_v2”
$pipName = “$vmName-pip”
$nicName = “$vmName-nic”
$osDiskName = “$vmName-OsDisk”
$osDiskType = “Standard_LRS”
# Definindo as credenciais de administrador
$adminUsername = ‘jadson.alves’
$adminPassword = ‘Pa$$w0rd.qwe1234’
$adminCreds = New-Object PSCredential $adminUsername, ($adminPassword | ConvertTo-SecureString -AsPlainText -Force)
# Criando IP público e interface de rede NIC
$pip = New-AzPublicIpAddress -Name $pipName -ResourceGroupName $ResourceGroup -Location $location -AllocationMethod Static
$nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $ResourceGroup -Location $location -SubnetId $Subnet.Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
# Adicionando as configurações da máquina virtual
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize
Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id
# Setando os parâmetros do sistema operacional
Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $adminCreds
# Setando a imagem utilizada na máquina virtual
Set-AzVMSourceImage -VM $vmConfig -PublisherName $pubName -Offer $offerName -Skus $skuName -Version ‘latest’
# Setando as configurações de disco
Set-AzVMOSDisk -VM $vmConfig -Name $osDiskName -StorageAccountType $osDiskType -CreateOption fromImage
# Desabilitando o diagnóstico de boot
Set-AzVMBootDiagnostic -VM $vmConfig -Disable
# Criando a máquina virtual
New-AzVM -ResourceGroupName $ResourceGroup -Location $location -VM $vmConfig
Podemos observar na imagem abaixo que nossa máquina virtual foi criada.
Vamos instalar o IIS no servidor VM-IIS-001
05. Clique no resource group RG-ApplicationGateway e selecione a VM-IIS-01 na opção Operations clique em Run command.
06. Cole o script abaixo e clique em Run
O script abaixo instala o IIS e altera a página inicial para Hello World from e adiciona o hostname da máquina na página.
# Install IIS
Install-WindowsFeature -name Web-Server -IncludeManagementTools
# Remove default htm file
remove-item C:\inetpub\wwwroot\iisstart.htm
#Add custom htm file
Add-Content -Path “C:\inetpub\wwwroot\iisstart.htm” -Value $(“Hello World from host ” + $env:computername)
07. Vamos verificar se o IIS está instalado, para isso vamos colar o IP Pulico da máquina virtual VM-IIS-01 no navegador.
08. Observe que nosso servidor Web está executando com as configurações que foram definidas no script.
09. Agora vamos criar a máquina virtual VM-IIS-02
# Definindo as variáveis de rede
$ResourceGroup = “RG-ApplicatioGateway”
$Location = “EastUS”
$vNetName = “Vnet-ApplicationGateway”
$SubnetName = “subnet-Backend”
$nsgName = “nsg-WebServer”
# Criando o Network Security Group
$nsgRuleVMAccess = New-AzNetworkSecurityRuleConfig -Name ‘allow-vm-access’ -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389,443,80 -Access Allow
New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Location $location -Name $nsgName -SecurityRules $nsgRuleVMAccess
# Definindo as variáveis da máquina virtual
$vNet = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroup -Name $vNetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vNet
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NsgName
$vmName = “VM-IIS-02”
$pubName = “MicrosoftWindowsServer”
$offerName = “WindowsServer”
$skuName = “2016-Datacenter”
$vmSize = “Standard_DS2_v2”
$pipName = “$vmName-pip”
$nicName = “$vmName-nic”
$osDiskName = “$vmName-OsDisk”
$osDiskType = “Standard_LRS”
# Definindo as credenciais de administrador
$adminUsername = ‘jadson.alves’
$adminPassword = ‘Pa$$w0rd.qwe1234’
$adminCreds = New-Object PSCredential $adminUsername, ($adminPassword | ConvertTo-SecureString -AsPlainText -Force)
# Criando IP público e interface de rede NIC
$pip = New-AzPublicIpAddress -Name $pipName -ResourceGroupName $ResourceGroup -Location $location -AllocationMethod Static
$nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $ResourceGroup -Location $location -SubnetId $Subnet.Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
# Adicionando as configurações da máquina virtual
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize
Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id
# Setando os parâmetros do sistema operacional
Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $adminCreds
# Setando a imagem utilizada na máquina virtual
Set-AzVMSourceImage -VM $vmConfig -PublisherName $pubName -Offer $offerName -Skus $skuName -Version ‘latest’
# Setando as configurações de disco
Set-AzVMOSDisk -VM $vmConfig -Name $osDiskName -StorageAccountType $osDiskType -CreateOption fromImage
# Desabilitando o diagnóstico de boot
Set-AzVMBootDiagnostic -VM $vmConfig -Disable
# Criando a máquina virtual
New-AzVM -ResourceGroupName $ResourceGroup -Location $location -VM $vmConfig
Podemos observar na imagem abaixo que nossa máquina virtual foi criada.
09. Clique no resource group RG-ApplicationGateway e selecione a VM-IIS-02 na opção Operations clique em Run command.
10. Cole o script abaixo e clique em Run
O script abaixo instala o IIS e altera a página inicial para Hello World from e adiciona o hostname da máquina na página.
# Install IIS
Install-WindowsFeature -name Web-Server -IncludeManagementTools
# Remove default htm file
remove-item C:\inetpub\wwwroot\iisstart.htm
#Add custom htm file
Add-Content -Path “C:\inetpub\wwwroot\iisstart.htm” -Value $(“Hello World from host ” + $env:computername)
11. Vamos verificar se o IIS está instalado, para isso vamos colar o IP Pulico da máquina virtual VM-IIS-02 no navegador.
12. Observe que nosso servidor Web está executando com as configurações que foram definidas no script.
O próximo passo será configurar o Application gateways.
13. No portal do azure pesquise por Application gateways.
14. Na tela Application gateways clique em Create application gateway
15. Na tela create application gateway, selecione o resource group RG-ApplicationGateway, em Application gateway name selecione um nome para o recurso, em nosso exemplo vamos utilizar AppGateway-01, selecione a virtual network e vamos utilizar a Vnet-ApplicationGateway e a Subnet-AG, altere as demais configurações de acordo com a sua necessidade e clique em Next:Frontends.
16. Na tela frontends selecione o ip publico PI-ApplicationGateway e clique em Next: Backends.
Você pode configurar o IP do Frontend como Público ou Privado, conforme o seu caso de uso. Neste exemplo, você escolherá um IP de front-end público.
Vamos criar o backend pool e adicionar os servidoresVM-IIS-01 e VM-IIS-02
O pool de backend é usado para rotear solicitações para os servidores de backend que atendem à solicitação. Os pools de backend podem ser compostos por NICs, conjuntos de dimensionamento de máquinas virtuais, IPs públicos, IPs internos, nomes de domínio totalmente qualificados (FQDN) e backend com vários locatários, como o Serviço de Aplicativo do Azure.
17. Clique em Add a backend pool, selecione um nome, em Target type selecione virtual machine e selecione a VM-IIS-01, vamos adicionar a VM-IIS-02, clique em Virtual Machine e adicione a VM-IIS-02 e clique em Add.
18. Confira a configuração do backend pool e clique em Next: Configuration.
Na tela Configuration, você conectará o pool de frontend e backend criado usando uma regra de roteamento.
19. Clique em Add routing rule
20. Na tela Add a rounting rule, digite um nome para regra, em Fronted IP selecione Public, deixe o protoco HTTP e porta 80 selecionados, deixe as demais configurações como padrão e clique Backends targets.
21. Para o Backend targets, deixe a opção backend pool selecionada, em backend target selecione backend-VMs-IIS. Para a configuração HTTP settings clique em Add new para criar uma nova configuração HTTP. A configuração HTTP determinará o comportamento da regra de roteamento.
22. Na tela a HTTP settings, digite HTTPSetting-VMs para o nome da configuração HTTP e 80 para a backend port, deixe os demais valores como padrão e clique em Add, após realizar a configuração HTTP você retornará para a tela Add a routing rule.
23. Agora que o Listeber e Backend targets foram configurados clique em Add.
24. A configuração foi realizada, clique em Next:tags.
25. Não vamos utilizar tags, clique em Next: Review + create.
26. Na tela Review + create, verifique se todas as configurações estão corretas e clique em Create.
Pode levar alguns minutos para o Azure criar o Applicate gateway.
27. Observe que o recurso foi criado com sucesso.
Vamos verificar as configurações realizadas no Application gateway.
28. Clique em RG-ApplicationGateway e selecione o application gateway AppGateway-01
29. Em AppGateway-01 clique em Backend pools e verifique se os servidores VM-IIS-01 e VM-IIS-02 estão no Backend pools .
30. Clique em HTTP settings e observe que nossa regra HTTPSettings-VMs está configurada.
31. Clique em Frontend IP configurations e observe que nosso IP publico está configurado.
32. Clique em Listeners e observe nossa regra está criada.
Agora vamos testar o Application Gateway
Vamos copiar o Frontend public IP Address e colocar em nosso navegador em modo anonimo.
33. Clique em AppGateway-01, Overview e copie o frontend public IP address.
34. Copie o endereço IP público e cole na barra de endereços do seu navegador
35. Atualize o navegador várias vezes e você verá conexões com o VM-IIS-01 e o VM-IIS-02.
Espero que este conteúdo tenha contribuído com o enriquecimento do conhecimento de vocês em Azure e Office 365.
Tem alguma sugestão ou observação, comente.
Forte abraço, obrigado e até o próximo post. 🙂

Carreira desenvolvida na área de tecnologia da informação, com ampla experiência em Cloud Computing, com foco em Microsoft Azure.
Fui nomeado Microsoft MVP na categoria Microsoft Azure.
Faço parte da Ong MTAC, sou MCT Microsoft, tenho algumas certificações como AZ-303 Microsoft Azure Architect Technologies, AZ-104 Azure Administrator, MCSE Core Infrastructure e MCSA Windows Server 2012.
Também participo como palestrante em eventos online da comunidade de TI, sou administrador e escritor no blog https://jadsonalves.com.br cujo principal objetivo é compartilhar conhecimento com a comunidade de TI e também escrevo artigos técnicos no portal https://cooperati.com.br