Montar Failover de DNS usando Route 53

dilbert_24042010_network

As empresas na grande maioria das vezes querem ter alta disponibilidade. Falando de Amazon Web Services (AWS), há uma probabilidade muito baixa de que uma região inteira da AWS fique indisponível, pois as regiões tem no mínimo duas zonas de disponibilidade e cada zona de disponibilidade é um data center, entre eles existe no mínimo 25KM de distância e estão em lugares desconhecidos dentro da região.

 

 

Você já pode imaginar que irá ter um SLA muito melhor do que tem normalmente nos datacenters convencionais, a não ser que use alguma ferramenta de virtualização e monte um cluster entre dois datacenters independentes, o que não é uma tarefa simples. Mas vamos imaginar que você quer continuar com sua infraestrutura física e ter parte de sua infraestrutura na AWS, ou deseja ter sua infraestrutura toda na AWS porém em duas regiões destintas, ou qualquer solução que não seja apenas uma região AWS ou apenas um data center.

Na AWS, existe um serviço chamado Route 53. Esse serviço é um gerenciador DNS, cujo uso comum é gerenciar as entradas www.nome_do_site.com.br, nome_do_site.com.br, ftp.nome_do_site.com.br, dentre outros. Nosso objetivo nesse artigo é mostrar como fazer o Failover utilizando este serviço. No exemplo vamos usar a entrada www2.rivendel.com.br apontando para uma instância na Virginia e como backup a região de São Paulo.

Pré-requisito do teste: Possuir um domínio (Ex.: rivendel.com.br), no Route 53.

Crie uma instância com Linux Amazon na região de Virginia e outra em São Paulo, atrele elastic IPs a elas, acesse suas instâncias, e então instale o nginx:

yum install nginx -y; chkconfig nginx on

Entre na pasta html padrão:

cd /usr/share/nginx/html

Mova a página index.html padrão:

mv /usr/share/nginx/html/index.html /usr/share/nginx/index.html-orig

Coloque o ID da região como index.html para poder destinguir:

curl --silent http://169.254.169.254/latest/dynamic/instance-identity/document | grep region|awk '{print $3}' | sed -e s/','/''/g | sed -e s/'"'/''/g > /usr/share/nginx/html/index.html

Sua instância agora está configurada para receber requisições na porta 80. Vamos agora configurar o serviço Route 53.

Vá na área de Health Checks

Crie um novo health checker e preencha o campo de IP Address com o Elastic IP da sua instância da Virginia. Insira o nome do host (nome da entrada DNS que utilizará para teste). No exemplo vou usar uma entrada www2 no domínio rivendel.com.br. Então pressione o botão “Create Health Check”. Este será utilizado para analisar o status da URL, conforme a imagem abaixo.

tela-novo-monitoramento

Vamos agora criar as entradas DNS. Para isso vá em Hosted Zones

Na área dos serviços AWS, vá em Route 53. Lá você encontrará o seu domínio que já foi configurado anteriormente.

dominios

Selecione o domínio o qual irá utilizar, e então pressione o botão “Go to Record sets”.

No painel do seu domínio, pressione o botão “Create Record Set”, conforme a imagem abaixo.

botao-record-set

No lado direito abrirá uma caixa para você inserir os dados da entrada DNS, então preencha como já feito anteriormente:

  • nome: “www2”
  • valor: insira o Elastic IP da instância da Virginia
  • TTL: 60
  • Routing Policy: “Failover”
  • Failover Record Type: “Primary”
  • Associate with Health Check: Yes

Feito isso, selecione o monitoramento criado nos passos anteriores, e então pressione o botão “Create Record Set”.

criar-entrada

Para a entrada primária precisamos de monitoramento para analisar o status do DNS. Caso ocorra algum problema ele irá enviar as requisições a entrada secundária.

Vá novamente em “Create Record Set” e insera os dados da entrada DNS.

  • nome: “www2”
  • valor: insira o Elastic IP da instância de São Paulo
  • Routing Policy: “Failover”
  • Failover Record Type: “Secondary”
  • Associate with Health Check: No

Para a entrada secundária não precisamos de monitoramento pois a ideia é que ela seja uma entrada para ser ativa quando a primária estiver com algum problema.

Pronto, agora está tudo configurado, vamos ao teste?

Abre um navegador e insira a entrada DNS criada, conforme utilizado no exemplo. Usarei a entrada www2.rivendel.com.br

resultado-virginia

Legal, vimos a sua entrada DNS respondendo no IP primário (us-east-1 é a região da virginia). Agora desligue a sua instância da Virginia(Primária), espere 60 segundos (TTL) e faça novamente um teste. Ele abrirá o conteúdo da instância do IP secundário (sa-east-1 é a região da São Paulo), conforme imagem abaixo.

resultado-saopaulo

Concluímos assim que é muito simples fazer o Failover utilizando o Route 53 da Amazon, o que é uma funcionalidade ótima e extremamente barata (0.50$ por mês) conforme link da calculadora.

Fonte de referência: http://aws.typepad.com/aws/2013/02/create-a-backup-website-using-route-53-dns-failover-and-s3-website-hosting.html

Gostou do conteúdo? Tem alguma dúvida? Entre em contato com nossos Especialistas Mandic Cloud, ficamos felizes em ajudá-lo.