Azure vs AWS (parte 1): Balanceamento de Carga (Load Balance) e Failover

Como você deve saber, a Rivendel é uma empresa que “nasceu” com um forte conhecimento em Amazon Web Services (AWS), porém, como o mercado de cloud tem recebido investimentos bem fortes de empresas como a Microsoft e como começamos a ter uma demanda bem considerável de Microsoft Azure, decidimos em meados de 2014 a expandir mais ainda os nossos conhecimentos nessa plataforma tão fantástica!

Traffic Manager

O nosso principal desafio no início era de compreender as similaridades nas ferramentas do Azure as quais já trabalhávamos há alguns anos com a AWS, não necessariamente em relação sobre o que fazia cada ferramenta, mas sim nas nomenclaturas e como fazer com o Azure o que já fazemos com a AWS.

Neste artigo eu vou pular a parte “básica”, de criação de instâncias (EC2 na AWS e Virtual Machine no Azure) e de bancos de dados (RDS na AWS e SQL Databases no Azure, através do Marketplace da Microsoft para MySQL ou ainda criando uma instância com o Oracle) e partir para um nível um pouco mais intermediário, que é a configuração do Load Balance (ou balanceamento de carga) e configurações de Failover no Azure.

Na AWS podemos montar o failover através do Route53, como vocês podem ver neste post, mas o Azure ainda não oferece uma ferramenta que seja
“compatível” com o Route53 no que diz respeito à todas as funcionalidades juntas, porém para montar o Failover e o Load Balance utilizaremos a mesma ferramenta, o Traffic Manager (Gerenciador de Tráfego).

No Traffic Maganer existem três tipos de balanceamento que você pode fazer:

Performance (Desempenho): Neste tipo o Azure irá evitar a latência para o usuário no caso de você ter servidores em diferentes localidades geográficas, sendo assim o Azure irá fazer com que o seu usuário acesse sempre o ponto de extremidade “mais próximo”.

Round Robin: O modelo Round Robin faz com que o balanceamento seja feito de forma igual para todas as instâncias daquele Load Balance, distribuindo a carga por um conjunto de pontos de extremidade no mesmo datacenter ou por datacenters diferentes.

Failover: Já o Failover funciona justamente quando você tiver pontos de extremidade nos mesmos data centers/regiões ou em data centers/regiões diferentes do Azure e desejar usar um ponto de extremidade primário para todo o tráfego, mas fornecer backups, caso os pontos de extremidade primários ou de backup estejam indisponíveis.

Traffic Manager

Que tal se praticarmos um pouco do Failover no Azure? Mãos à obra!

Hands on

Em primeiro lugar, você deve escolher um prefixo único de DNS para o seu Failover, escolher em qual assinatura você prefere de ser cobrado e o método de Load Balance, neste caso, selecione a opção “Failover” e clique em “Create”.

Traffic Manager

A criação leva alguns segundos e em seguida já é exibida na sua lista de balanceadores:
Traffic Manager

Clique no balanceador que você acabou de criar e vá em Endpoints para adicionar os DNS’s de Endpoint do Failover. Vale lembrar que você precisa ter antes um Azure Website ou Cloud Service já configurado para que possa setar no Load Balance. Você pode adicionar quantos endpoints quiser e no passo seguinte você irá determinar qual será o primário e qual será o secundário (no caso de falha). Abaixo você pode ver o comparativo de funcionamento da própria Microsoft entre um Azure Websites, Cloud Services e Virtual Machines no Azure:

O Azure oferece várias maneiras de hospedar websites: Websites do Azure, Serviços de Nuvem e Máquinas Virtuais. Este artigo ajuda você a entender as opções e fazer a escolha certa para seu aplicativo Web.

Os Websites do Azure são a melhor escolha para a maioria dos aplicativos Web. A implantação e o gerenciamento estão integrados na plataforma, os sites podem ser dimensionados rapidamente para suportar altas cargas de tráfego e o gerenciador de balanceamento de carga e tráfego integrado oferece alta disponibilidade. Você pode mover sites existentes para Websites do Azure facilmente com uma ferramenta de migração online, usar um aplicativo de software livre da Galeria de Aplicativos Web ou criar um novo site usando a estrutura e as ferramentas de sua escolha. O recurso WebJobs (atualmente em visualização) facilita a adição do processamento de tarefas em segundo plano em seu aplicativo.

Se precisar de mais controle sobre o ambiente do servidor da Web, como a capacidade de acessar remotamente seu servidor ou configurar as tarefas de inicialização do servidor, os Serviços de Nuvem do Azure geralmente são a melhor opção.

Se você tiver um aplicativo existente que necessitaria de modificações substanciais para ser executado em Websites do Azure ou nos Serviços de Nuvem do Azure, você pode escolher as Máquinas Virtuais do Azure para simplificar a migração para a nuvem. No entanto, configurar, proteger e manter as máquinas virtuais corretamente requer muito tempo e conhecimento de TI em comparação aos Websites do Azure e aos Serviços de Nuvem. Se estiver considerando as Máquinas Virtuais do Azure, assegure-se de levar em conta o contínuo esforço de manutenção necessário para corrigir, atualizar e gerenciar seu ambiente de máquinas virtuais.

O diagrama a seguir ilustra o grau relativo de controle em relação à facilidade de uso de cada uma dessas opções de hospedagem na Web no Azure.

websites_cloudservices_vms_3

No meu caso, vou selecionar um Azure Website que já existia na minha conta, clicando em “Add Endpoints”:
Traffic Manager Endpoint

Lembrando que, caso escolha um Azure Website, somente poderá ser adicionado no Load Balance caso seja um Standard Website, o qual você poderá configurar em Websites >> Seu Website >> Scale. Além disso, você tem o limite de apenas um Website para cada região.

A partir deste ponto você já pode testar se o seu Load Balace está funcionando, basta copiar a URL com o domínio trafficmanager.net (no meu caso, a http://rivendel.trafficmanager.net) e acessá-la do seu browser.

Vá agora para a aba “Configure” para que possa configurar os detalhes do seu Failover.
Em “Load Balancing Method Settings” você poderá ordenar como quer que seu balanceamento de falha trabalhe. No caso, basta ordenar em nível de prioridade como os seus servidores serão acessados, sendo a prioridade ordenada de cima para baixo. No caso do primeiro servidor falhar, o Azure irá redirecionar o usuário para o servidor seguinte e assim por diante (caso haja mais de dois servidores).
Failover list

E para balanceamento de carga simples, basta selecionar em “Load Balance Method” a opção “Round Robin” para servidores na mesma região ou “Performance” para servidores em regiões diferentes, o que fará que o usuário seja redirecionado para o servidor mais próximo fisicamente, como expliquei acima.

Ainda tem dúvidas sobre balanceamento de carga no Azure? Mande suas perguntas!

21