Conectando WebApps a redes existentes

Em algumas situações quando utilizamos WebApps pode ser necessária a comunicação com algum recurso já existente em nossa rede, como por exemplo um banco de dados IaaS, uma API, ou até mesmo um outro WebApp.

A maneira mais simples de realizar essa comunicação é através da internet, mas, apesar de ser mais fácil isso pode expor sua aplicação a vários riscos de segurança, como invasões, roubos de dados, etc.

Para solucionar esse problema, o Microsoft Azure possui um recurso chamado VNet Integration, que permite a conexão de um WebApp a uma rede existente.

Agora irei demonstrar como realizar a conexão:

Criando a Virtual Network (VNet)

Se você já possuir uma VNet pode pular para a próxima etapa. Para a criação não existem muitos segredos, a VNet  pode seguir as configurações padrão sugeridas:

Após a criação da VNet, precisamos criar um VNet Gateway, que será utilizado para realizar uma conexão VPN Point to Site (P2S) do seu WebApp para a sua VNet, para isso é necessário adicionar uma subnet exclusiva para gateways. Vá em “Subnets” e clique em “Gateway subnet”:

Repare que a subnet é nomeada automaticamente, isso acontece pois no momento da criação do VNet Gateway ele irá buscar por esse nome:

Com a subnet criada, vamos à criação do Gateway.

Criando o Virtual Network Gateway

Em Gateway type selecione “VPN”, em VPN type “Route-based” e em Virtual network, escolha a VNet criada:

Essa etapa pode ser um pouco demorada, no geral demora em torno de 30 minutos  para a criação do gateway.

Após criado vá em Point-to-site configuration, desabilite a opção IkeV2, e adicione a chave de um certificado do tipo CER. Este certificado será baixado automaticamente pelo WebApp para realizar a autenticação na VPN.

Ao realizar a configuração do WebApp para a conexão do Gateway, você poderá receber a mensagem de erro abaixo dizendo que o protocolo IkeV2 não é compatível, certifique-se que a opção está desabilitada conforme a imagem acima.

Conectando o WebApp

Assim como a VNet, caso já possua o WebApp vá para o próximo passo. Caso ainda não tenha, pode manter as configurações padrão.

Vá em networking e em VNet Integration clique em Setup, e depois escolha a VNet que possui o VNet Gateway:

Problemas comuns

Outro problema muito comum, é o certificado estar fora de sincronia:

Para resolver isso, vá ao Service Plan do seu WebApp, e force o sincronismo:

Após esses passos seu WebApp será capaz de acessar os recursos da sua rede!

Abraço!

O que são Máquinas Virtuais?

Para realizarmos qualquer tarefa em um computador, precisamos invariavelmente escolher um sistema operacional. Quando fazemos essa escolha, colocamos na balança todos os prós e contras entre o sistema A ou B, e escolhemos aquele que nos trará mais vantagens, tendo que deixar o outro de lado.

Mas o que você acha de poder aproveitar o que cada SO tem de melhor? E se você pudesse escolher qual utilizar em um momento ou outro?

Com uma máquina virtual você pode!

Claro que existem outras maneiras de fazer isso, como várias máquinas físicas, utilizar dual boot, mas com máquinas virtuais isso se torna bem simples, rápido e barato.

O que é uma máquina virtual?

Uma máquina virtual ou VM, é um computador emulado em um ambiente de virtualização. Isso quer dizer que você pode implementar novos computadores através de software, e isso se torna muito interessante, pois permite instalar sistemas operacionais diferentes do que sua máquina física possuí, criar ambientes isolados, onde as aplicações não podem interferir umas nas outras, fazer o escalonamento vertical da VM dependendo da sua necessidade, entre várias outras vantagens que só conseguimos utilizando uma máquina virtual.

Atualmente os principais softwares utilizados para virtualização são:

  • Hyper-V
  • VMWare
  • Virtual Box
  • Xenserver (na verdade não é um software, mas uma espécie de distro Linux especializada para virtualização)

Aqui vou falar um pouco mais o Hyper-V, pois tenho utilizado muito ultimamente.

Hyper-V

Em quase todas as versões desktop do Windows 7 em diante é possível habilitar o Hyper-V nas features do Windows.

Quando o Hyper-V é habilitado, as máquinas virtuais não acessam os recursos físicos como processador e memória diretamente. Para este acesso é utilizada uma camada chamada Hypervisor e é ela quem administra os recursos físicos. O interessante é que não apenas o SO das máquinas virtuais criadas pelo Hyper-v, como o próprio SO hospedeiro, aquele que foi instalado na sua máquina e que você está utilizando para criar suas máquinas virtuais, utilizam o Hypervisor para acessar memória, processador, disco, e os outros recursos. Assim, para o Hyper-V, o nosso SO principal é uma máquina virtual.

Hyper-V vs Virtual Box

Quando você utiliza o Hyper-V, devido ao fato de seu sistema operacional hospedeiro ser utilizado como uma máquina virtual, existem algumas limitações. Uma delas é que atualmente não é possível criar uma VM dentro de outra (Nested Virtualization).

Na prática, a maioria das pessoas percebe essa limitação quando tenta utilizar o Virtual Box, ou algum outro meio de virtualização em paralelo ao Hyper-V. Para um software de virtualização funcionar ele precisa administrar alguns recursos do hardware. Aí é que está o problema. Lembra que o Hyper-V administra os recursos de hardware? Então, ele é meio egoísta, e não permite que mais nada tenha acesso a esses recursos.

No Windows Server 2016 TP4 até existe essa opção, mas o Windows “esconde” esse recurso. Com algumas linhas de comando é possível habilitá-lo, mas para isso é necessário ter um processador com tecnologia VT-x e esse cenário só é recomendado para fins de estudo uma vez que ainda não foi amplamente testado, e ainda existem muitos recursos que ainda não funcionam corretamente.

Containers

De uns tempos para cá tem se falado muito sobre containers. Esse assunto merece um post só para ele, portanto não vou aprofundar muito nesse assunto agora.

A grosso modo, um container é uma máquina virtual que compartilha o Kernel com o SO hospedeiro, e por isso ele é muito mais leve, tornando-o útil em vários cenários, principalmente quando precisamos criar recursos computacionais rapidamente.

Em breve pretendo criar um post com mais detalhes sobre containers.

Como eu crio uma máquina virtual?

Abaixo vou deixar alguns links com instruções de instalação e configuração do Hyper-V, e como criar uma Máquina Virtual.

Habilitando o Hyper-V no Windows 10

Criando uma máquina virtual

Conectando minha máquina virtual à rede

Espero ter ajudado com os conceitos básicos sobre Máquinas Virtuais, e sobre como o Hyper-V funciona.

Até mais!