Entre os dias 4 e 8 de Maio de 2015, está sendo (ou foi, se você está lendo este post fora deste período) realizado o Microsoft Ignite, evento global da empresa onde diversas novas tecnologias são apresentadas para o mercado.
Na tarde de ontem (04/05), foi anunciada a disponibilidade geral (em public preview) de um novo recurso para o Microsoft Azure: o host para DNS. Com este post, quero falar um pouco sobre este novo recurso (que já era uma solicitação antiga de clientes e comunidade técnica) e porque, ao meu ver, é tão legal ter isso disponível na plataforma.
Um pouco (só um pouco mesmo) de conceito
Se você clicou no link para ler este post, acredito fortemente que sua intenção não é saber o que é DNS, mas sim, entender como funciona este recurso no Microsoft Azure. E você terá esta informação, eu prometo. Entretanto, é possível que alguém esteja se familiarizando ainda com este conceito e para que a leitura completa do post possa ocorrer, vou passar uma visão a “10.000 pés” sobre DNS. Se você já possui experiência com este assunto, por favor, pule para o próximo tópico.
Resumidamente, DNS (Domain Name System) é o nome dado ao recurso que resolve nomes na internet. Para facilitar o entendimento deste conceito, vamos fazer a analogia de um viajante que chega em uma cidade desconhecida com um GPS nas mãos.
Imagine que você (viajante) chega em uma cidade sem conhecer absolutamente nada. Você possui nas mãos apenas um endereço (Rua Francisco Chagas, 248, por exemplo) e um aparelho GPS. O que você faz? Digita o endereço no aparelho para que o mesmo o leve até o local desejado e, magicamente, isso acontece.
Usamos esta analogia porque ela ilustra de forma bem próxima, a atuação do DNS no universo web. Podemos dizer que a cidade é o ambiente web, grande, complexo, com múltiplas rotas para chegar a um local específico. O GPS seria o DNS, o recurso que recebe um endereço e o traduz para coordenadas geográficas, o que possibilita você chegar até o local desejado.
O DNS é o recurso responsável por, com base em um endereço de nome (conio.com.br, por exemplo), traduzi-lo para o endereço real, o IP, e ao final, levar o usuário ao endereço solicitado. Veja a Figura 1 para completar seu entendimento deste conceito.
Figura 1. Esquema geral de DNS
O cenário de 100% dos casos hoje
Como é possível visualizar na Figura 1, os serviços de DNS’s são hospedados em servidores web a fora. Eles são responsáveis por resolver os nomes quando demandados.
Hoje, estes serviços estão disponíveis (comercializados) nas empresas conhecidas como “hosters”. Empresas especializadas na hospedagem de recursos de internet como, websites, webmail, backups, etc. Para os usuários finais, as configurações são realizadas através de interfaces web (ver Figura 2) disponibilizadas por estas próprias empresas.
Figura 2. Tabela de DNS do GoDaddy com entradas de registros MX
Através de tabelas desta natureza (cada provedor do serviço de DNS oferece uma interface diferente para realizar esta gestão), é possível gerenciar os diferentes tipos de entradas de DNS’s e realizar os apontamentos para serviços específicos ou atualizar direcionamentos já existentes.
Onde o Azure entra?
A disponibilidade geral de DNS no Azure (anunciada no dia 04/05) nada mais é do que ter este serviço (mencionado anteriormente) e todas estas funcionalidades (como já existem em outros hosters) a sua disposição no melhor modelo self-service.
Isso por sí só não representa grande coisa, até porque existem muitas boas empresas oferecendo este serviço, dentre elas, GoDaddy, HostGator, etc.
O bacana deste serviço estar disponível agora na infraestrutura do Azure, é que agora, temos mais um serviço extremamente utilizado para quem navega por serviços web na mesma plataforma de gerenciamento, usando os benefícios já conhecidos do Microsoft Azure: pagamento sob demanda, estrutura resiliente, alta performance (graças ao algoritmo chamado pelo time do Azure de “AnyCast”, que identifica o ponto de origem da solicitação e designa o servidor mais próximo para resolver o nome), gestão por API’s REST, PowerShell, etc.
Para o caso de clientes que já utilizam a estrutura do Microsoft para hospedar suas aplicações e serviços, a gestão de DNS não precisará estar mais atrelada a um outro fornecedor. Tudo poderá ser gerido diretamente pela infra do Azure. Tudo debaixo da mesma subscription. Você concorda que temos um ganho considerável de tempo aqui? Especialmente se a estrutura de se está mantendo é complexa e grande.
Por onde começar com isso?
Bom, vou assumir aqui que você já possui uma assinatura do Microsoft Azure. Se este não é seu caso, recomendo a leitura do post do time de Azure, disponível neste link.
Na versão public preview (você pode entender como Beta), a gestão de DNS no Azure está disponível apenas via PowerShell (o que é MUITO LEGAL, não?!). Ele utiliza o Azure Resource Manager (ARM) para este fim. Portanto, o primeiro passo aqui consiste em possuir este set de recursos disponível em seu computador. Se você não o possui, recomendo realizar a leitura deste post, disponibilizado também pelo time de Azure.
Para funcionar adequadamente, o ARM utiliza recursos do Azure PowerShell, portanto, para que você possa compreender o que estamos fazendo aqui em sua totalidade, além de possuir a instalação do Azure PowerShell, é importante que você conheça conceitos como: módulos, cmdlets, etc.
Isso posto, podemos começar a “brincar” de forma prática.
Passo 1: Abra o PowerShell de sua máquina e alterne para o ARM
Você poderá executar o PowerShell instalado em seu computador de várias formas. A mais simples e rápida é pesquisando por “Windows PowerShell”, como na Figura 3 a seguir.
Figura 3. Selecionando o PowerShell
Com a ferramenta em execução, precisamos agora “chamar” o ARM para trabalhar com os DNS’s. Faço isso digitando a linha apresentada na Listagem 1 a seguir.
Listagem 1. “Chamando” o ARM para o trabalho
Passo 2: Autenticando no Azure
Para acessar os serviços do Microsoft Azure, precisamos, evidentemente, nos autenticar no mesmo. Faço isso através da digitação da linha exibida pela Listagem 2.
Listagem 2. Autenticando no Azure
Ao fazer desta forma, o PowerShell invocará o prompt de autenticação do Azure. Você deverá informar os dados solicitados e prosseguir até finalizar o processo (conforme apresenta a Figura 4).
Figura 4. PowerShell invocando a tela de autenticação do Microsoft Azure
Se tudo deu certo, o PowerShell irá apresentar uma listagem de assinaturas atreladas ao usuário recém autenticado. Algo semelhante ao que exibe a Figura 5.
Figura 5. Assinaturas atreladas a conta recém autenticada
Passo 3: Informar a assinatura
Nem preciso dizer que, se você possui mais de uma assinatura atrelada a seu usuário, você precisará informar ao ARM qual delas você pretende utilizar, certo? Para passar esta informação adiante, utilizo a linha apresentada pela listagem 3.
Listagem 3. Selecionando uma assinatura
Simples, não? Ao completar esta etapa com sucesso, o ARM exibirá através da console do PowerShell informações da assinatura selecionada. Algo semelhante ao que é exibido pela Figura 6.
Figura 6. Informações da assinatura selecionada
Passo 4: Criação de um novo grupo de recursos
Azure DNS posiciona-se necessariamente dentro de um grupo de recursos (resource group). Se você já possui grupos que deseja usar para gerir os DNS’s, faça isso e pule esta etapa. Caso contrário, você poderá criar um novo grupo de recursos através da digitação da linha apresentada pela listagem 4.
Listagem 4. Criando um grupo de recursos (resource group)
Dois aspectos precisam ser ressaltados aqui.
O primeiro é que “resource groups” são, necessariamente, posicionados em algum local padrão (no exemplo listagem 4, no leste dos Estados Unidos). O Azure precisa de um local padrão para concentrar as chamadas aos recursos, por isso precisamos desta configuração.
O segundo é que, como o Azure trata os recursos através de uma rede global (e os DNS’s por natureza são globalizados e não localizados), você não precisa se preocupar: os DNS’s funcionarão adequadamente, não importando onde os recursos estão fisicamente hospedados.
A Figura 7 apresenta o sucesso da criação do grupo de recursos.
Figura 7. Resource group “TesteDeGrupoDeRecurso” criado com sucesso
Passo 5: Registrando a assinatura como provider
Os recursos de DNS do Azure são gerenciados por um provedor de serviços de rede, chamado “Network Resource Provider”. Trata-se de um agente robusto que permite ao ARM criar aplicações de rede como serviços de forma segura e resiliente com base em grupo de recursos.
Como Azure DNS está baseado nesta arquitetura, é preciso seguir as exigências deste modelo e a primeira delas, é que sua assinatura deve estar registrada no “Microsoft.Network Resource Provider”. Este registro deve ser feito obrigatoriamente, caso contrário, não será possível gerir os DNS’s no Azure. Para realizar esta tarefa, digitamos a linha apresentada pela listagem 5, a seguir.
Listagem 5. Registrando a assinatura em Microsoft.Newtwork
Ao pressionar enter no final da linha de comando, o PowerShell exibirá uma mensagem, solicitando sua confirmação para a completude do processo (ver Figura 8). Digite a letra “Y” e na sequência pressione enter.
Figura 8. Confirmando o registro da assinatura em Microsoft.Network
Se tudo deu certo, você visualizará através do PowerShell uma mensagem de confirmação de sucesso para o processo. Algo semelhante ao que apresenta a Figura 9.
Figura 9. Sucesso da operação
Passo 6: Registrar sua assinatura para usar o Azure DNS
Azure DNS é um recurso em public preview, certo? Por isso, você precisar solicitar à Microsoft a autorização para utilizar o recurso. Você poderá fazer isso facilmente digitando a linha de cmdlets apresentada pela listagem 6.
Ao fazê-lo, você novamente verá uma solicitação de confirmação de ação no prompt do PowerShell. Pressione “Y” e conclua o processo, conforme ilustra a Figura 10.
Figura 10. Confirmação da solicitação
Pronto. Agora sua solicitação foi enviada a Microsoft e dentro de algumas hora o recurso de DNS deverá estar disponível para utilização. No próximo post, ensinarei a adicionar os registros MX, A, CNAME, etc.
Até lá!
Pingback: Balanceamento de carga as a Service no Microsoft Azure – Fabrício Sanchez