Adicionando endpoints externos ao Traffic Manager

Para quem já precisou utilizar o serviço de traffic manager no Azure, seja para criar alguma arquitetura de contingência ou performance, já deve ter percebido que no portal não há uma forma de adicionar endpoints que não estejam dentro da sua assinatura. Pois bem, isso não quer dizer que não seja possível adicionar um servidor on-premise, mas teremos que novamente recorrer ao powershell. Neste artigo vou ensinar os comandos básicos de configuração dos endpoints de um traffic manager através do powershell. Caso ainda precise instalar, veja aqui [1].

Criando um novo perfil:

Basicamente há 3 modos de operação do serviço: Performance, Round Robin e FailOver. Para entender cada um dos métodos, acesse este link [2]. Em meu exemplo, vou utilizar FailOver. Também estou assumindo que todos utilizam a porta 80 (HTTP) e que meu TTL (time-to-live) é de 300 segundos, isto é, o tempo que o serviço de DNS vai utilizar o cache local antes de tentar resolver quem responde por este domínio novamente. Quanto menor o TTL, mais rápido seus usuários serão redirecionados para o segundo servidor da lista caso o primeiro pare de responder, em contra partida, um TTL muito baixo aumenta o número de requests DNS consideravelmente e consequentemente o custo de manter o serviço. Tente encontrar o número que seja melhor para o seu cenário. Para criar um novo perfil, utilize o comando abaixo:

PS C:\> New-AzureTrafficManagerProfile -Name "bnlfdemo" -DomainName "bnlfdemo.trafficmanager.net" -LoadBalancingMethod "Failover" -MonitorPort 80 -MonitorProtocol "Http" -MonitorRelativePath "/" -Ttl 300
TimeToLiveInSeconds : 30
MonitorRelativePath : /
MonitorPort : 80
MonitorProtocol : Http
LoadBalancingMethod : Failover
Endpoints : {}
MonitorStatus : Inactive
Name : bnlfdemo
DomainName : bnlfdemo.trafficmanager.net
Status : Enabled

Exibindo informações sobre perfis:

Para exibir uma lista de todos os perfis criados, utilize o comando abaixo:

PS C:\> Get-AzureTrafficManagerProfile

Name DomainName Status
---- ---------- ------
bnlfdemo bnlfdemo.trafficmanager.net Enabled

Exibindo informações de um perfil específico:

Para exibir informações sobre um perfil da lista, basta passar o parâmetro -name no comando. Neste ponto, também é aconselhável atribuir o resultado desta operação para uma variável. Assim ficará mais fácil executar os procedimentos posteriores.

PS C:\> $profile = Get-AzureTrafficManagerProfile -Name bnlfdemo
PS C:\> $profile
TimeToLiveInSeconds : 300
MonitorRelativePath : /
MonitorPort : 80
MonitorProtocol : Http
LoadBalancingMethod : Failover
Endpoints : {}
MonitorStatus : Inactive
Name : bnlfdemo
DomainName : bnlfdemo.trafficmanager.net
Status : Enabled

Adicionando um Endpoint Interno:

Meu blog está rodando no azure, portanto, vou adiciona-lo como endpoint interno. Veja que no parâmetro -type, utilizo o valor “AzureWebsite”. Há 4 valores possíveis neste caso: CloudService, AzureWebsite, TrafficManager (sim é possível adicionar um trafficmanager do trafficmanager) e Any. Utilize o comando abaixo para criar um novo endpoint de um serviço de CloudService ou Website rodando no Azure:

PS C:\> Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "azure-kb.azurewebsites.net" -Status "Enabled" -Type "AzureWebsite" | Set-AzureTrafficManagerProfile
TimeToLiveInSeconds : 300
MonitorRelativePath : /
MonitorPort : 80
MonitorProtocol : Http
LoadBalancingMethod : Failover
Endpoints : {azure-kb.azurewebsites.net}
MonitorStatus : Inactive
Name : bnlfdemo
DomainName : bnlfdemo.trafficmanager.net
Status : Enabled

Atenção: Atente-se que a maioria dos parâmetros são case-sensitive, ou seja, “AzureWebSite” não funciona. Você precisa fielmente digitar “AzureWebsite”.

Outro detalhe, veja que passei a variável $profile no parâmetro TrafficManagerProfile. Note que este parâmetro espera o objeto retornado pelo comando “Get-AzureTrafficManagerProfile -name xxxxx”.

Adicionando um Endpoint Externo:

Agora a parte interessante. Do mesmo jeito que criamos um endpoint interno, podemos criar um externo através do parâmetro -Type Any. O comando é basicamente o mesmo, mas fique atento ao parâmetro -Type e -Location, sendo que o segundo é novidade. Precisamos dizer explicitamente para o Azure aonde está nosso servidor ou o pelo menos o lugar mais próximo dele:

PS C:\> Add-AzureTrafficManagerEndpoint -TrafficManagerProfile $profile -DomainName "www.azurekb.com.br" -Status "Enabled" -Type "Any" -Location "Brazil South" | Set-AzureTrafficManagerProfile
TimeToLiveInSeconds : 300
MonitorRelativePath : /
MonitorPort : 80
MonitorProtocol : Http
LoadBalancingMethod : Failover
Endpoints : {azure-kb.azurewebsites.net, www.azurekb.com.br}
MonitorStatus : Inactive
Name : bnlfdemo
DomainName : bnlfdemo.trafficmanager.net
Status : Enabled

Exibindo Endpoints de um perfil:

Veja que na lista de endpoints, temos agora os dois endereços em ordem de preferencia (No caso de failover).


PS C:\> $profile.endpoints
DomainName : azure-kb.azurewebsites.net
Location :
Type : AzureWebsite
Status : Enabled
MonitorStatus : Online
Weight :
MinChildEndpoints :
DomainName : www.azurekb.com.br
Location :
Type : Any
Status : Enabled
MonitorStatus : Online
Weight :
MinChildEndpoints :

O mesmo podemos verificar através do portal:

Endpoints

 

É isso! Agora basta adicionar no seu DNS um registro do tipo CNAME que aponta o seu domínio www.dominio.com.br para exemplo.trafficmanager.com e pronto. Todo o tráfego passará ao primeiro da lista e em caso de queda para o segundo, terceiro, quarto e assim por diante. Um tutorial bem mais completo e com outros casos de uso pode ser encontrado aqui [3]. Dúvidas ou sugestões, deixem nos comentários.

Referências:

[1] How to install and configure Azure PowerShell. http://azure.microsoft.com/en-us/documentation/articles/install-configure-powershell/

[2] About Traffic Manager Load Balancing Methods. https://msdn.microsoft.com/en-us/library/azure/dn339010.aspx

[3] Azure Traffic Manager External Endpoints and Weighted Round Robin via PowerShell. http://azure.microsoft.com/blog/2014/06/26/azure-traffic-manager-external-endpoints-and-weighted-round-robin-via-powershell/

[4] Azure Traffic Manager Cmdlets. https://msdn.microsoft.com/library/dn690250.aspx

Leave a Reply

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