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 e Cloud Security.
Forte atuação em projetos de Cloud Security no Microsoft Azure e com tecnologias de
segurança do Microsoft 365.
Tenho Experiência em Microsoft Azure, Microsoft 365, AWS e Windows Server.
Sou Microsoft MVP na categoria Microsoft Azure, AWS Communit Builder Security & Identity e
MCT.