Como configurar o Azure Application Gateway

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. 🙂

Deixe um comentário

O seu endereço de e-mail não será publicado.