WSFC + SQL AlwaysOn no AZURE sem Active Directory [#1]
Tags: azure, management, architecture, sql
Published: 2020-08-05 14:29:51

Fala pessoal!

Na nova série que se inicia, vamos aprender a criar um <b>Windows Server Failover Cluster</b> sem o uso do <b>Active Directory (AD)</b> no Azure.

Depois vamos criar um <b>SQL AlwaysOn Availability Group</b> em cima dessas máquinas usando a <i>feature</i> do WSFC recém criada.

A principio, o processo é bem simples, porém requer conhecimento em Azure, portanto para o post ser produtivo, vamos aprender do zero.

Então a série completa abordará:
- Como criar as VNets e Subnets
- Fazer o <b><i>Peering</i></b> entre as redes
- Como criar as máquinas virtuais (VMs) no Azure
- Atrelar as VNets e Setar IPs estáticos nas VMs
- Criar o WSFC entre as VMs
- Criar o AlwaysOn AG
- Testar e validar

Lembrando que por ser um post que pretende ensinar de maneira clara e objetiva todos os níveis, vou tentar deixá-lo o mais "entendível" possível, portanto evitarei ao máximo o uso de scripts CLI ou Powershell e entrarei no detalhe de alguns conceitos.

Existem outros meios de fazer todo o processo por meio do Azure DevOps ou utilizando ferramentas de <i>Infra as a Code (IaC)</i> como o Terraform e o Packer, mas isso ficará para uma próxima série mais <i>High Level<i>.

Bom, chega de introdução, vamos la!

No post de hoje vamos aprender primeiramente a criar duas Azure Virtual Networks (VNets)e suas respectivas Subnets, como a ideia é termos alta disponibilidade, então cada uma será criada em uma <i><b>Availability Zone</b></i> diferente.

Mas antes: O que é uma VNET?

É o bloco fundamental de sua rede privada no Azure. Ela permite que vários tipos de recursos do Azure possam se comunicar de forma segura com a Internet, com as redes locais e com outras redes pareadas. Ela seria a sua rede principal e fazendo um comparativo com um Datacenter on-premises, seria a responsável pela conectividade entre seus servidores e seus switchs, porém aqui por ser parte de uma arquitetura própria, entrega escalabilidade, disponibilidade e isolamento.

Basicamente a sua VNet é composta pelos itens abaixo:
- <b>Address space:</b> Como o nome diz, é seu espaço de endereço, ele hospedará sua subnet (sub-rede), onde você conectará outros recursos do Azure.
- <b>Subnets:</b> Um segmento da rede virtual que consiste em uma ou mais sub-redes, você aloca uma parte do espaço de endereço da rede virtual (VNet) a cada uma delas.
Por padrão, um IP em uma subnet pode se comunicar com qualquer outro IP dentro da VNet. Também pode ser feito uma rota de tráfego (route traffic) entre subnets e até mesmo para fora da VNet.
- <b>Regions:</b> Cada VNet pode ser atrelada à apenas uma unica região ou localização. Caso queira conectar um ou mais subnets de regiões distintas, é necessário criar um <b><i>VNet Peering</i></b>.
- <b>Subscription:</b> VNets estão no escopo de uma Subscription, ou seja, é um dos vários recursos que ficam atrelados diretamente à uma assinatura.

Pelo menos a rede no Azure é mais sobre roteamento IP. Um Datacenter tradicional geralmente usa Comutação de VLAN ou Camada 2 e menos roteamento, o que deixa a administração mais complexa.

Bom, esse é apenas um resumo básico de redes, em breve vou lançar um artigo <b>APENAS</b> sobre Arquitetura de Redes, ai vamos entrar no detalhe de muitas outras coisas que não cabem aqui nesta série.

Agora vamos à prática! :)

Primeiramente vamos logar no Azure: www.portal.azure.com

Acessando com a sua conta, vamos criar o grupo de recursos dentro da nossa <i>Subscription</i>.

Caso seja sua primeira experiência com Azure, abra o CloudShell clicando onde a seta da imagem abaixo aponta.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/14sefkqswlfphflryyir.jpg)

No primeiro acesso, ele pede a criação de uma simples <i>Storage Account</i> para a configuração do CloudShell, basta clicar em "yes" e tudo certo, não é necessário fazer mais nada.

Com o CloudShell ativo, execute o comando: <b>az account list --output table</b>

Caso você tenha mais de uma <i>Subscription</i>, ela será listada para você (conforme imagem abaixo).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/r1bjpopzsecpe36gyp7e.jpg)

Após decidir qual a subscription utilizar, execute o comando abaixo:
<b>az account set --subscription "Sua SubscriptionID AQUI"</b>

"Setando" a assinatura, agora chegou a vez de criar seu grupo de recursos (resource group).
Execute o comando abaixo:
<b>az group create -l eastus -n Cluster_VM_Azure_EUA</b>

Lembrando que essa primeira VNet ficará no EUA, portanto o parâmetro "-l" do script está criando o grupo de recursos e tudo o que vier a seguir na localidade <b>East US</b>.

A saída deverá ser idêntica a da imagem abaixo:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/n0j28to7dz74nzrof4tp.jpg)

Feito isso, agora vamos para a criação da Azure Virtual Networks (VNet) e conforme prometido, usando pouca scriptação para facilitar o entendimento.

Volte o portal do Azure e acesse <b><i>Resource Group</b></i> que você acabou de criar.

Clique em "Add", conforme imagem abaixo:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/t46g9ykuj5fkwo5ct146.jpg)

No marketplace, procure por <b>Virtual Network</b>, conforme imagem abaixo:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/89y1ng25hc3ng2tw76lz.jpg)

Na próxima tela vamos dar um nome à nossa VNet, atrelar ao Resource Group (RG) recém criado e garantir que a Localização seja a mesma em que se encontra nosso RG, no caso, East US (vide imagem).
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/grkur04ytveh9p0rbhoo.jpg)

Agora vamos atribuir nosso espaço de endereço à nossa VNet, no caso do LAB, estipulei uma rede "/16" (barra 16) para a VNET e um "/24" para a subnet.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/wtbxadegcn2hz0jv7eoi.jpg)

<b>Ponto de Atenção:</b> Aqui estou criando apenas os espaços de endereço (Address Space) da minha VNet, não estou definindo os IPs que minhas futuras máquinas virtuais utilizarão.
Outro ponto importante, os 3 primeiros e os 3 últimos IPs são reservados para o roteamento e a resolução de nomes do Azure, então meu range deverá obrigatoriamente começar em "10.0.0.4".

Voltando ao Azure, na próxima aba <b>Security</b>, deixe tudo com status DISABLE.

Agora clique em <b>REVIEW + CREATE</b> e depois clique em <b>CREATE</b>.
A partir daqui ocorrerá o deploy da sua VNet.

Agora vamos criar a outra Vnet, que será atrelada à segunda máquina virtual.
Para o artigo não ficar extenso, volte para o inicio e repita todos os passos até aqui, trocando apenas os parâmetros abaixo:
- Resource Group: Cluster_VM_Azure_BR
- Localização: Brazil South

Ou seja, volte ao Cloud Shell e execute o comando abaixo:
<b>az group create -l brazilsouth -n Cluster_VM_Azure_BR</b>

E nos passos seguintes, basta atrelar a nova VNet ao RG Cluster_VM_Azure_BR.

A partir daqui entendo que ambos os Resource Groups estão criados, as VNETs e Subnets atreladas corretamente.

Então ao final, sua rede ficou assim:
- <b>Cluster_VM_Azure_EUA</b>
VNET: 10.0.0.0/16
SUBNET: 10.0.0.0/24

- <b>Cluster_VM_Azure_BR</b>
VNET: 10.1.0.0/16
SUBNET: 10.1.0.0/24

Agora vamos ao passo mais importante: a criação do <b><i>VNet Peering</i></b> para garantir que ambas as Subnets enxerguem-se.

Acessando o Resource Group Cluster_VM_Azure_EUA, clique no recurso já criado <b>vnet_vm_eua</b>.

Navegue no menu à esquerda e clique em "Peerings" (imagem), depois clique em <b>+ add</b>.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/dsnodbsx0r81jhug8zg1.jpg)

Abrirá a tela abaixo:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/akqm116990s7quxbqs5m.jpg)

Atenção: As setas vermelhas são os nomes do "Peering" e a seta verde é a VNET que fará o pareamento com a nossa rede atual.
Obviamente se eu comecei configurando a VNET EUA, então nesse menu eu escolho a VNET BR.

Logo abaixo, tem as opções de permissão de tráfego:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/fs18rny48md6p7evb3i9.jpg)

Atenção:
- Quadrado Vermelho: Estas opções habilitadas permitirão o tráfego entre as VNets.
- Quadrado Verde: Permite o tráfego encaminhado de uma VNet para outra, quando temos uma VPN ou uma Vnet-to-Vnet configurada.
- Quadrado Azul: Permite que se use uma VPN gateway pareada no estilo "cross-premises" ou uma VNet-to-VNet.

Depois que clicar em <b>CREATE</b>, o processo de deploy se iniciará.

Aqui validamos se o Peering está conectado:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/6skr2esv3iaoypsqq6qe.jpg)

Estando tudo OK, então fechamos as configurações iniciais de REDES.

No próximo post desta série, vamos criar as nossas máquinas virtuais, atribuir nossas VNets à elas, criar os IPs estáticos e habilitar o WSFC.

Até o próximo post!

Abraços.