Adicionando multiplos VIPs para o mesmo cloud service

Em meu último post falei sobre a possibilidade de reservar um VIP (Virtual IP) para um cloud service em execução, até então, só poderíamos ter apenas um VIP por serviço. Essa limitação não é mais verdadeira desde o final do mês passado e isso abre a possibilidade de alguns cenários como a de múltiplos listeners no SQL Always On ou de diferentes servidores web no mesmo cloud service utilizando a mesma porta de entrada.

A figura abaixo exemplifica este cenário para as portas SSL de um web server:

Multi VIP SSL scenario

Vale ressaltar que estes novos VIPs não serão gratuitos. Quando criamos uma virtual machine ou cloud service, recebemos gratuitamente um VIP público, mas ao atribuir VIPs adicionais vamos pagar por este serviço. O valor é o mesmo de quando atribuímos VIP a nível de instância e custa $0.004/hora, ou seja, cerca de $3/mês baseado em 744 horas de utilização. Além disso, também teremos as seguintes limitações:

  • Só podemos ter 5 ips adicionais.
  • Não é possível atribuir múltiplos VIPs em cenários PaaS, só IaaS.
  • Por enquanto só podemos atribuir novos VIPs através do powershell.
  • Não há suporte ao ARM (Azure Resource Manager) ainda.

Adicionando VIP ao Cloud Service

Até o momento, para adicionar um VIP a um cloud service, teremos que recorrer ao powershell. Primeiros criamos nosso VIP:

Add-AzureVirtualIP -VirtualIPName Vip2 -ServiceName bnlf-demo

Veja o status do nosso cloud service agora:

PS C:\> $deployment = Get-AzureDeployment -ServiceName bnlf-demo
PS C:\> $deployment.VirtualIPs

Address      IsDnsProgrammed Name                      ExtensionData
-------      --------------- ----                      -------------
23.96.17.119 True            bnlf-demoContractContract
                             Vip2

Repare que temos 2 VIPs, o primeiro que já vem por padrão, que no meu caso é 191.237.92.240 e temos um segundo que está vazio no campo de endereço. O segundo foi justamente o que criamos e só será atribuído um endereço IP quando adicionarmos um endpoint para ele, além disso, não será feito nenhuma cobrança enquanto este VIP não for efetivamente ativado através da criação deste endpoint. Para isso, executamos o seguinte procedimento:

Get-AzureVM -ServiceName bnlf-demo -Name bnlf-demo | Add-AzureEndpoint -Name myEndpoint -Protocol tcp -LocalPort 8080 -PublicPort 80 -VirtualIPName Vip2 | Update-AzureVM

Vamos ver agora o status do nosso cloud service:

PS C:\> $deployment = Get-AzureDeployment -ServiceName bnlf-demo
PS C:\> $deployment.VirtualIPs
Address      IsDnsProgrammed Name                      ExtensionData
-------      --------------- ----                      -------------
23.96.17.119 True            bnlf-demoContractContract
23.96.19.100                 Vip2

Pronto. Agora temos o VIP adicional 23.96.19.100 em nosso cloud service.

Balanceamento de carga com múltiplos VIP

Além do endpoint autônomo (stand-alone), também podemos criar um endpoint de um conjunto de balanceamento de carga, ou seja, um VIP que está associado a um conjunto de VMs em balanceamento. Por exemplo, suponha que temos um cloud service chamado “bnlf-demo”, duas máquinas “demoVM1” e “demoVM2” e um segundo VIP criado conforme o passo anterior. Agora suponha que queremos que todo o tráfego externo da porta 81 provindos do VIP2 sejam encaminhados para a “demoVM1” e “demoVM2” pela porta interna 8181.

Para a demoVM1:

Get-AzureVM -ServiceName bnlf-demo -Name demoVM1 | Add-AzureEndpoint -Name myEndpoint -LoadBalancedEndpointSetName myLBSet -Protocol tcp -LocalPort 8181 -PublicPort 81 -VirtualIPName Vip2 -DefaultProbe | Update-AzureVM

Para a demoVM2:

Get-AzureVM -ServiceName bnlf-demo -Name demoVM2 | Add-AzureEndpoint -Name myEndpoint -LoadBalancedEndpointSetName myLBSet -Protocol tcp -LocalPort 8181 -PublicPort 81 -VirtualIPName Vip2 -DefaultProbe | Update-AzureVM

Finalmente, também é possível atualizar um endpoint de balanceamento de carga existente para usar outro VIP através do cmdlet abaixo:

Set-AzureLoadBalancedEndpoint -ServiceName myService -LBSetName myLBSet -VirtualIPName Vip1

Referências

[1] Multiple VIPs per cloud service. https://azure.microsoft.com/en-us/documentation/articles/load-balancer-multivip/

[2] Reserved IP Overview. https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-reserved-public-ip/

[3] Preços de endereço IP. http://azure.microsoft.com/pt-br/pricing/details/ip-addresses/

Leave a Reply

Your email address will not be published. Required fields are marked *