<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Wiluey Sousa</title>
    <description>The latest articles on DEV Community by Wiluey Sousa (@wiluey).</description>
    <link>https://dev.to/wiluey</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F257380%2F48f3772a-63a4-4f80-b884-244aba1e2580.jpeg</url>
      <title>DEV Community: Wiluey Sousa</title>
      <link>https://dev.to/wiluey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wiluey"/>
    <language>en</language>
    <item>
      <title>BlobFuse - Azure Blob Storage como Filesystem no Linux</title>
      <dc:creator>Wiluey Sousa</dc:creator>
      <pubDate>Tue, 02 Feb 2021 04:41:16 +0000</pubDate>
      <link>https://dev.to/wiluey/blobfuse-azure-blob-storage-como-filesystem-no-linux-h1b</link>
      <guid>https://dev.to/wiluey/blobfuse-azure-blob-storage-como-filesystem-no-linux-h1b</guid>
      <description>&lt;p&gt;Fala comunidade!&lt;/p&gt;

&lt;p&gt;Depois de um tempo ausente, estamos de volta com força total e sem hiatos! &lt;/p&gt;

&lt;p&gt;E nada melhor do que tirar a poeira da mobília com um post bacana sobre Infra Azure, concordam?&lt;/p&gt;

&lt;p&gt;Bom, vamos lá!&lt;/p&gt;

&lt;p&gt;Antes de mais nada, a primeira coisa a ser entendida antes de entrarmos no técnico é: &lt;b&gt;Já ouviram falar sobre Blobfuse?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Blobfuse&lt;/b&gt; é um driver utilizado em sistemas operacionais baseados em Linux (diferentes distros) que simula um filesystem que aponta direto para um blob storage do Azure, ou seja, através do driver, o Blobfuse simula um diretório virtual.&lt;/p&gt;

&lt;p&gt;O Blobfuse dá suporte à instalação nas seguintes distros: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu: 16, 4, 18, 4 e 20, 4&lt;/li&gt;
&lt;li&gt;RHELversions: 7.5, 7.8, 8.0, 8.1, 8.2&lt;/li&gt;
&lt;li&gt;CentOS: 7.0, 8.0&lt;/li&gt;
&lt;li&gt;Debian: 9.0, 10.0&lt;/li&gt;
&lt;li&gt;SUSE: 15&lt;/li&gt;
&lt;li&gt;OracleLinux 8.1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mas will, não seria mais fácil apontar diretamente para um &lt;b&gt;File Share&lt;/b&gt; dentro do meu Blob Storage?&lt;/p&gt;

&lt;p&gt;Depende!&lt;/p&gt;

&lt;p&gt;Por dois motivos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File Share tem o limite de &lt;b&gt;5TB&lt;/b&gt;, parece muito, mas tratando-se de armazenamento, acreditem, não é!&lt;/li&gt;
&lt;li&gt;Exige o uso do protoclo &lt;b&gt;SMB 3.0&lt;/b&gt; para ser usado nas distros listadas acima.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Então avalie bem a sua necessidade.&lt;/p&gt;

&lt;p&gt;Agora que já entendemos o Blobfuse, vamos à prática?&lt;/p&gt;

&lt;p&gt;Primeiramente vamos logar no portal do Azure (&lt;a href="http://www.portal.azure.com" rel="noopener noreferrer"&gt;www.portal.azure.com&lt;/a&gt;) e abrir o &lt;b&gt;Cloud Shell&lt;/b&gt; para executarmos comandos na linguagem Powershell (imagem abaixo).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4qv2oe89wlbukzq9is3c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4qv2oe89wlbukzq9is3c.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Obs: Se preferir, pode fazer isso direto pela console do Powershell ISE também, basta apenas logar na sua subscription.&lt;/p&gt;

&lt;p&gt;Daqui pra frente nós vamos usar scripts powershell para a criação da Sorage Account, CLI para a criação da VM e o Packer para o deploy da imagem.&lt;/p&gt;

&lt;p&gt;Logado no Powershell, execute os comandos abaixo:&lt;br&gt;
&lt;b&gt;Listar as suas Subscriptions (caso tenha mais de uma)&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get-AzSubscription&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Selecionar o ID da sua Subscription e insira-o como parâmetro&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set-AzContext -Subscription "xxxxx-xxxxx-xxxxxxxxxxxxxxxx"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Crie seu Resource Group (RG)&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$resourceGroup = "BlobFuseWiluey" (Aqui crie o nome que quiser)&lt;/li&gt;
&lt;li&gt;$location = "eastus"&lt;/li&gt;
&lt;li&gt;New-AzResourceGroup -Name $resourceGroup -Location $location&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Crie a Storage Account&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup -Name "blobfusestoragewill" -SkuName Standard_LRS -Location $location&lt;/li&gt;
&lt;li&gt;$ctx = $storageAccount.Context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Crie o Container Storage&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$containerName = "blobfuse-will-azure"&lt;/li&gt;
&lt;li&gt;New-AzStorageContainer -Name $containerName -Context $ctx -Permission blob&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aqui finalizamos a primeira etapa, já temos nossa Storage Account criada.&lt;/p&gt;

&lt;p&gt;Agora vamos brincar um pouco com DevOps e gerar a imagem da nossa máquina virtual com o Packer.&lt;/p&gt;

&lt;p&gt;Não conhece o &lt;b&gt;Packer&lt;/b&gt;?&lt;/p&gt;

&lt;p&gt;O Packer é um dos produtos da HashiCorp (como o Terraform), criado para gerar e gerenciar imagens de forma automatizada. &lt;br&gt;
O Packer é capaz de construir a imagem de sua aplicação, banco de dados ou sistema operacional utilizando os seus mesmos &lt;b&gt;playbooks&lt;/b&gt; e scripts inseridos no Userdata.&lt;/p&gt;

&lt;p&gt;Uma vantagem do Packer é possibilidade de criar imagens multiplataforma com o mesmo código, uma vez que ele é compatível com AWS, Microsoft Azure, Google Cloud, VMWare, Docker, Digital Ocean, dentre outras.&lt;br&gt;
O Packer não substitui os seus &lt;b&gt;configurations managers&lt;/b&gt;, mas faz uso deles para provisionar as imagens criadas.&lt;/p&gt;

&lt;p&gt;Agora vamos lá!&lt;/p&gt;

&lt;p&gt;Altere o seu Cloud Shell agora para usar o Bash, onde vamos executar scripts CLI (imagem abaixo).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwptvix1pcbjjkhd3pt5k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwptvix1pcbjjkhd3pt5k.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feito isso, vamos "setar" a &lt;b&gt;subscription&lt;/b&gt; correta, não vamos provisionar o recurso no lugar errado, certo?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Execute o comando abaixo para listar suas Subscriptions:&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;az account show&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;"Sete" a Subscription:&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;az account set --subscription "xxxxxxx-xxxxxxxxx-xxxxxxxxxxxxxx"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Como não vamos criar uma VM para servir como nosso configuration Manager, vamos usar o módulo nativo do Azure.&lt;br&gt;
Porém para usar o módulo nativo, e necessário gerar uma role de acesso (RBAC) para gerar os códigos que serão usados no script para autenticação.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Execute o comando abaixo e guarde os ID's gerados&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;az ad sp create-for-rbac --query "{ client_id: appId, client_secret: password, tenant_id: tenant }"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Com o comando abaixo você pega o ID da Subscription&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;az account show --query "{ subscription_id: id }"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Obs:&lt;/b&gt; Não transfira, ceda ou mostre publicamente esse ID para NINGUÉM!&lt;/p&gt;

&lt;p&gt;Basicamente os comandos acima lhe trarão os IDs dos parametros abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"client_id":       "xxxxx-xxxxxxxx-xxxxxxxxxxxxxxx"&lt;/li&gt;
&lt;li&gt;"client_secret":   "xxxxx-xxxxxxxx-xxxxxxxxxxxxxxx"&lt;/li&gt;
&lt;li&gt;"tenant_id":       "xxxxx-xxxxxxxx-xxxxxxxxxxxxxxx"&lt;/li&gt;
&lt;li&gt;"subscription_id": "xxxxx-xxxxxxxx-xxxxxxxxxxxxxxx"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agora com os IDs em mãos, vá para o Cloud Shell (em modo BASH) e gere o JSON com as configuraçõe da nossa imagem.&lt;/p&gt;

&lt;p&gt;O script com o JSON está no meu &lt;b&gt;GitHub&lt;/b&gt;, pegue-o no link abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Wiluey/packer/blob/master/RedHat7.json" rel="noopener noreferrer"&gt;https://github.com/Wiluey/packer/blob/master/RedHat7.json&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agora que possui o JSON, execute o comando o comando abaixo (no BASH):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;vi RedHat7.json&lt;/b&gt; (um novo arquivo será criado)&lt;/li&gt;
&lt;li&gt;Tecle &lt;b&gt;"I"&lt;/b&gt;(insert) e cole o JSON dentro deste arquivo novo que foi aberto com o "vi"&lt;/li&gt;
&lt;li&gt;Tecle &lt;b&gt;ESC&lt;/b&gt; seguido de &lt;b&gt;:wq&lt;/b&gt; (para salvar e sair)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agora com o JSON criado, vamos chamado o módulo do PACKER para gerar a nossa imagem.&lt;/p&gt;

&lt;p&gt;Execute o comando abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;packer build RedHat7.json&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Uma imagem parecida vai informar o status do Deploy:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnl675lhi4nbgs6k15bpf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnl675lhi4nbgs6k15bpf.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O tempo de geração da imagem leva em torno de 10 a 12 minutos.&lt;/p&gt;

&lt;p&gt;Quando o processo finalizar, teremos o output abaixo:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F75devrmptvnftn30y4j8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F75devrmptvnftn30y4j8.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E indo até o Resource Group, você verá o recurso provisionado:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa4c31qr8jx6wuytnjyq2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa4c31qr8jx6wuytnjyq2.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbq9mmxkno3ytwp0m4zjo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbq9mmxkno3ytwp0m4zjo.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repare que em "Data Disks" não há nenhuma LUN ou LVM montado. Isso foi proposital para que a minha imagem fosse a mais "limpa" possível.&lt;br&gt;
E o &lt;b&gt;Blobfuse&lt;b&gt; vai fazer esse papel depois...&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Agora é o momento de criarmos nossa máquina virtual Linux Red Hat 7 a partir da nossa imagem.&lt;/p&gt;

&lt;p&gt;No Cloud Shell (em modo BASH), execute o comando abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;az vm create --resource-group BlobFuseWiluey --name WilueyVmLinux --image PackerImageBlobfuse --admin-username wiluey --admin-password "xxxxxx" (senha forte aqui)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Após o deploy da nova VM criada a partir da nossa imagem, teremos um output confirmando o IP Publico atribuído a ela (conforme imagem):&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fceg0khw1com6wxi1keci.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fceg0khw1com6wxi1keci.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora vamos testar/validar o acesso à nossa máquina virtual, execute o comando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;ssh seuuser@seuippublico&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O output:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcyxprjzi81w4rtbpo5zg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcyxprjzi81w4rtbpo5zg.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sucesso!&lt;/p&gt;

&lt;p&gt;Agora a etapa final, criar o Blobfuse e fazer o linux reconhecer nosso container como um filesystem.&lt;/p&gt;

&lt;p&gt;A imagem abaixo comprova que nossa distro possui apenas os pontos de montagem padrão (o "barra").&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvhwmapq7da0ys6ho0msm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvhwmapq7da0ys6ho0msm.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Logados no Linux, o primeiro passo é criar as variáveis de ambiente globais, utilizando o comando &lt;b&gt;export&lt;/b&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;export AZURE_STORAGE_ACCOUNT=nome_da_sua_storage_account&lt;/li&gt;
&lt;li&gt;export AZURE_STORAGE_ACCESS_KEY=a_sua_chave_de_acesso&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Não sabe onde encontra isso?&lt;br&gt;
Vem comigo!&lt;/p&gt;

&lt;p&gt;Execute o comando abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;az storage account keys list -g BlobFuseWiluey -n blobfusestoragewill&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Obviamente alterando os parâmetros para os seus, onde &lt;b&gt;"-g"&lt;/b&gt; é o nome do Resource Group e &lt;b&gt;"-n"&lt;/b&gt; é o nome da Storage Account.&lt;/p&gt;

&lt;p&gt;O output:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frzqtz50k6tmgsp1fx7wu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frzqtz50k6tmgsp1fx7wu.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na variável de ambiente, basta inserir o valor retornado em "value" da &lt;b&gt;Key1&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Criadas as variáveis, agora vamos criar os diretórios que serão nossos binários.&lt;/p&gt;

&lt;p&gt;Primeiramente eleve seus privilégios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;sudo su&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depois execute os comandos abaixo (inserindo o nome que quiser):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;cd /home/wiluey&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;mkdir blobfuse-mount-will/&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;chown wiluey:wiluey blobfuse-mount-will/&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Acima estamos autorizando o usuário a acessar nosso filesystem, afinal não podemos usar o &lt;b&gt;root&lt;/b&gt; o tempo todo, até mesmo por questões de segurança.&lt;/p&gt;

&lt;p&gt;Execute a instalação do Blobfuse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;rpm -Uvh &lt;a href="https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm" rel="noopener noreferrer"&gt;https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;yum install blobfuse -y&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Crie uma pasta temporária vazia:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;mkdir /blobfuse-mount-will-tmp&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agora vamos fazer o "mount" do nosso diretório com o Blobfuse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;blobfuse /home/wiluey/blobfuse-mount-will --container-name=blobfuse-will-azure --tmp-path=/blobfuse-will-tmp&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vamos validar se o filesystem foi devidamente reconhecido pelo SO:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fimhi7brhsga4wizjj90p.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fimhi7brhsga4wizjj90p.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sucesso!&lt;/p&gt;

&lt;p&gt;Vamos fazer o teste e copiar algum arquivo para nosso container storage, o mesmo deve aparecer no Linux, certo?&lt;/p&gt;

&lt;p&gt;Existem diversas maneiras, mas pra ganharmos tempo, vou fazer o upload via Portal.&lt;/p&gt;

&lt;p&gt;Fazendo uma primeira verificação, constatamos que o volume está vazio.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl6ma92jubet5yxqpi33r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl6ma92jubet5yxqpi33r.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navegue até seu Container Storage, selecione um arquivo qualquer da sua máquina e faça o upload do mesmo para o Azure conforme imagem abaixo:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fflvddzdshrevhpelj9ow.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fflvddzdshrevhpelj9ow.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Arquivo encontra-se no container após o upload:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7uopqjthf482nufsihve.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7uopqjthf482nufsihve.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos ver se ele está na VM, dentro do nosso filesystem?&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6mw1ioxtkous3dl5thbf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6mw1ioxtkous3dl5thbf.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Voilà!&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Tudo certo, nosso filesystem foi reconhecido com sucesso e está acessível!&lt;/p&gt;

&lt;p&gt;Existem outras opções para uso de área temporária, como o &lt;b&gt;ramdisk&lt;/b&gt;, que consiste em usar parte da sua memória RAM como se fosse um disco local, mas isso fica pro próximo post, ainda tem muito assunto sobre Infra Azure para falarmos.&lt;/p&gt;

&lt;p&gt;Agora um &lt;b&gt;ponto de atenção&lt;/b&gt; super importante:&lt;br&gt;
Este foi apenas um laboratório que servirá de estudos e aprendizado aos leitores.&lt;br&gt;
E por ser um laboratório, diversas regras de segurança foram deixadas de lado, portanto se um dia houver a necessidade de criar uma arquitetura desta em ambiente produtivo, conte com um arquiteto experiente que conheça bem a &lt;b&gt;segurança&lt;/b&gt; do Azure e as boas práticas para manter os dados da sua empresa seguros, não arrisque as práticas deste tutorial!&lt;/p&gt;

&lt;p&gt;Acompanhem o blog para ficar por dentro do mundo Cloud Computing!&lt;/p&gt;

&lt;p&gt;Grande abraço e até a próxima!&lt;/p&gt;

</description>
      <category>azure</category>
      <category>linux</category>
      <category>cloud</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>WSFC + SQL AlwaysOn no AZURE sem Active Directory [#3]</title>
      <dc:creator>Wiluey Sousa</dc:creator>
      <pubDate>Wed, 05 Aug 2020 22:52:46 +0000</pubDate>
      <link>https://dev.to/wiluey/wsfc-sql-alwayson-no-azure-sem-active-directory-3-493j</link>
      <guid>https://dev.to/wiluey/wsfc-sql-alwayson-no-azure-sem-active-directory-3-493j</guid>
      <description>&lt;p&gt;Fala pessoal!&lt;/p&gt;

&lt;p&gt;Na etapa anterior, vimos como criar nossas máquinas virtuais, atrelar um IP estático a elas e habilitar a Feature de Cluster.&lt;/p&gt;

&lt;p&gt;Nesta última parte da série, vamos criar nosso WSFC e habilitar o SQL Server AlwaysOn Availability Groups.&lt;/p&gt;

&lt;p&gt;Para quem não leu a primeira e segunda parte, segue os links:&lt;br&gt;
&lt;a href="https://dev.to/wiluey/wsfc-sql-alwayson-no-azure-sem-active-directory-1-405g"&gt;https://dev.to/wiluey/wsfc-sql-alwayson-no-azure-sem-active-directory-1-405g&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/wiluey/criando-um-wsfc-sem-ad-sql-alwayson-no-azure-parte-1-1bhl"&gt;https://dev.to/wiluey/criando-um-wsfc-sem-ad-sql-alwayson-no-azure-parte-1-1bhl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas antes preciso esclarecer que isso só é possível ser feito no Windows Server 2016 em diante, pois a partir dele é possível criar um Failover Cluster (de 2 ou mais nós) em Domínios diferentes ou em servidores Workgroup (que não fazem parte de um AD).&lt;br&gt;
Este é chamado de &lt;b&gt;Workgroup Cluster&lt;/b&gt; e será o tipo de cluster que criaremos.&lt;/p&gt;

&lt;p&gt;Então vamos lá!&lt;/p&gt;

&lt;p&gt;Primeiramente acesse cada uma das máquinas virtuais, acesse o Powershell como administrador e execute o script abaixo:&lt;br&gt;
&lt;b&gt;New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1&lt;/b&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SUWgklQS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ibtqttap8rhtgeq8favr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SUWgklQS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ibtqttap8rhtgeq8favr.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse script é para habilitar na chave de registro do Windows a opção de acesso remoto aos compartilhamentos administrativos, uma vez que por segurança o acesso só pode ser feito por contas de domínio.&lt;br&gt;
E o script desabilita o filtro de tokens das contas locais desbloqueia o acesso remoto a essas contas.&lt;/p&gt;

&lt;p&gt;Após isso, reinicie ambas as máquinas virtuais.&lt;/p&gt;

&lt;p&gt;A partir daqui vamos falar de alguns conceitos de Infraestrutura para melhorar o entendimento.&lt;/p&gt;

&lt;p&gt;O primeiro passo é configurarmos o &lt;b&gt;Sufixo DNS Primário&lt;/b&gt;, pois ele nos permitirá configurar os nós para comunicarem-se via &lt;b&gt;FQDN&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;O FQDN (Fully Qualified Domain Name) é a abreviatura que significa o nome de domínio completo e ser composto por domínio e/ou diversos subdomínios.&lt;/p&gt;

&lt;p&gt;Como o Listener do SQL AlwaysOn usa resolução de DNS, é necessário configurarmos o FQDN, pois por características do produto, o SQL Server não faz Proxy Reverso, por isso é uma má prática apontamos para o IP do Listener ao invés do DNS.&lt;/p&gt;

&lt;p&gt;Agora acesse as máquinas virtuais e configure o Sufixo DNS Primário seguindo os passos abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Acesse System properties do Windows&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--A0OAOGwp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/diaxjl78oyb6f6m84adq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A0OAOGwp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/diaxjl78oyb6f6m84adq.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Na tela abaixo, clique em "More"&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AY3jEzn0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9f57rpe3v3qrowkt5x92.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AY3jEzn0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9f57rpe3v3qrowkt5x92.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Em &lt;b&gt;DNS Suffix and NetBIOS Computer Name&lt;/b&gt; digite o nome de Domínio DNS (de sua escolha)&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nhazsb0t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xctide4rn69154283qjz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nhazsb0t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xctide4rn69154283qjz.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finalizado os passos acima, clique em OK até ser solicitado o boot do servidor, reinicie as máquinas.&lt;/p&gt;

&lt;p&gt;Após logar nas máquinas, verá que agora ela possui um nome completo:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RvWQYUjw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j97p7kzlb5wd75rpvbp9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RvWQYUjw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j97p7kzlb5wd75rpvbp9.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora vem o "pulo do gato", nós vamos "enganar" e fazê-lo acreditar que as entradas no DNS estão criadas.&lt;/p&gt;

&lt;p&gt;A diferença aqui é que se eu não usar um AD, ainda precisarei do DNS Domain para registrar as entradas do meu FQDN.&lt;/p&gt;

&lt;p&gt;Acesso o arquivo &lt;b&gt;HOSTS&lt;/b&gt; do servidor, geralmente fica em "c:\windows\system32\drivers\etc".&lt;/p&gt;

&lt;p&gt;Insira no Arquivo Hosts todos os servidores que farão parte do Cluster, faça isso em TODOS os servidores.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jXUfbHD1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r1tfo6kxcayi60j1s6zt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jXUfbHD1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r1tfo6kxcayi60j1s6zt.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A partir de agora, as máquinas conseguirão fazer um ping entre si resolvendo o FQDN.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V5B9L0oC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/p3dh8pfv0x11cf4uyr61.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V5B9L0oC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/p3dh8pfv0x11cf4uyr61.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora estamos prontos para colocar o Windows em Cluster, ou seja, finalmente criar o WSFC.&lt;/p&gt;

&lt;p&gt;Execute Windows+R e digite &lt;b&gt;Cluadmin.msc&lt;/b&gt; para abrir o Failover Cluster Manager.&lt;/p&gt;

&lt;p&gt;Clique com o botão direito do mouse em "Create Cluster" e siga o passo a passo abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Nesta tela clique em "next"&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nTy5uAbB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/15bv9hdsfrsikuhco1r2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nTy5uAbB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/15bv9hdsfrsikuhco1r2.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nesta tela digite um nome de servidor de cada vez e clique em "Add", o nome deve ser o FQDN, depois clique em "next".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8AHAljQo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1hhs21s526d1cptncm0g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8AHAljQo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1hhs21s526d1cptncm0g.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nesta tela clique em "Yes" para rodar o Cluster Validate, e depois em "next".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---CImM2Ba--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7m92qgx55dkka70tnybx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---CImM2Ba--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7m92qgx55dkka70tnybx.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nesta tela, selecione a opção &lt;b&gt;Run only tests I select&lt;/b&gt; e clique em "next".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0gg-9kSL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rl3bk1vwtuaa2jplxlg0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0gg-9kSL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rl3bk1vwtuaa2jplxlg0.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Como não estamos com Storage compartilhada, desmarque a opção de validação dos discos e clique em "next".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kwjco6Wa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bwfh0lyy1qdyphwrm0ft.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kwjco6Wa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bwfh0lyy1qdyphwrm0ft.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Após isso clique novamente em "Next" e espere o processo de validação que levará alguns minutos.&lt;/p&gt;

&lt;p&gt;O processo vai reclamar que não encontrou o Active Directory (ah vá! haha), ignore!&lt;br&gt;
ele também vai gerar alguns Warnings, ignore também!&lt;br&gt;
Finalizando a validação, clique em "finish".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nesta tela você dá um nome ao seu WSFC
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nPq2poSZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8og2g73cwo5tmdgmwu0m.jpg" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Após isso, só clicar em "next" até iniciar o processo de criação do WSFC.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ao final vai gerar esta tela com alguns Warnings, só clicar em "finish".
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Rpvo3W1l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6n16xkrlob9e3vq09640.jpg" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ao final do processo você verá que o serviço do Cluster não ficou online e mesmo executando um "Bring Online" ele não sobe de maneira alguma.&lt;/p&gt;

&lt;p&gt;Calma rs! Aqui vem um outro pulo do gato!&lt;/p&gt;

&lt;p&gt;Isso ocorre porque houve um conflito de IPs, como na criação o processo de deploy não nos permite inserir o IP Vip manualmente, ele pega os IPs disponíveis nas interfaces e como eu propositadamente não inseri mais de uma interface, ele tentou pegar um IP que estava em uso.&lt;/p&gt;

&lt;p&gt;Para resolver é simples, clique com o botão direito em cima do recurso do cluster e vá em "Properties".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--foomABtA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/b5vpexjfjnfcttjd2dj0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--foomABtA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/b5vpexjfjnfcttjd2dj0.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na tela abaixo, clique em cima de um dos IPs e depois em "Edit".&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n9-Z0DHD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bwgx5e0gh6j5ven1qy67.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n9-Z0DHD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bwgx5e0gh6j5ven1qy67.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Altere a opção do endereço de IP para &lt;b&gt;Use Static&lt;/b&gt;, insira um novo IP (dentro do seu bloco CIDR) e clique em OK.&lt;/p&gt;

&lt;p&gt;Repita o processo para a outra interface.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tTApubTU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mcswo342dnscskey2ycb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tTApubTU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mcswo342dnscskey2ycb.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clique em "apply", depois em "OK".&lt;/p&gt;

&lt;p&gt;Pronto, recurso no ar novamente!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GkhoXHol--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q357aj1t1clc8mddkprp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GkhoXHol--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q357aj1t1clc8mddkprp.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Mas Will, ainda tem um recurso offline, ainda tá dando erro!"&lt;/p&gt;

&lt;p&gt;Calma Padawan, isso é completamente normal, lembre-se que cada uma das máquinas virtuais estão em uma VNET diferente, portanto estamos usando o conceito de &lt;b&gt;Multi-subnet Failover&lt;/b&gt;, na qual garantimos a alta disponibilidade a nível de rede também.&lt;br&gt;
Ou seja, somente em caso de Failover/Chaveamento a outra interface ficará online. Então fica tranquilo! =)&lt;/p&gt;

&lt;p&gt;Agora sim, nosso WSFC está no ar e operante!&lt;/p&gt;

&lt;p&gt;Agora chegou o momento de configurarmos o &lt;b&gt;SQL Server AlwaysOn Availability Group&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Digite Windows+R e depois digite &lt;b&gt;SQLServerManager14.msc&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;No serviço do SQL Server, clique na opção abaixo, depois em OK e reinicie o serviço do SQL.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u1Gqa1ez--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wkcbj98bjld877qzyv6r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u1Gqa1ez--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wkcbj98bjld877qzyv6r.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Faça isso em ambos os servidores!&lt;/p&gt;

&lt;p&gt;Agora localize o &lt;b&gt;Microsoft SQL Server Management Studio 18&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Abra-o e logue com a sua conta.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;PONTO DE ATENÇÃO!!!&lt;/b&gt;&lt;br&gt;
A partir daqui, tudo o que você fizer, certifique-se que está usando o mesmo usuário na qual criou o WSFC.&lt;/p&gt;

&lt;p&gt;Antes disso:&lt;br&gt;
Como tudo é autenticação no Active Directory, precisamos garantir que as contas de serviço gerem tokens confiáveis e que consigam registrar as ações no SQL Server.&lt;/p&gt;

&lt;p&gt;Para que isso aconteça, vamos precisar criar uma &lt;b&gt;Chave Simétrica&lt;/b&gt; e um &lt;b&gt;Certificado&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;A chave simétrica tem como objetivo proteger as chaves privadas dos certificados, garantindo a segurança, já que é criptografada com o algoritmo AES_256.&lt;/p&gt;

&lt;p&gt;Já o certificado é um objeto de segurança assinado digitalmente que contém uma chave pública (e, opcionalmente, uma privada) e é protegido pela chave simétrica.&lt;/p&gt;

&lt;p&gt;Agora vamos iniciar nosso passo a passo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logue no servidor primário, abra o Management Studio e execute o script abaixo para criar a Chave Simétrica.
&lt;b&gt;&lt;br&gt;USE master
&lt;br&gt;GO
&lt;br&gt;CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Wiluey@123';
GO&lt;/b&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lembre-se de adaptar o script para a sua realidade!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Em seguida execute o comando abaixo para criar o Certificado.&lt;br&gt;
&lt;b&gt;USE master&lt;br&gt;
GO&lt;br&gt;
CREATE CERTIFICATE Cluster_VM_BR_cert&lt;br&gt;
WITH SUBJECT = 'Cluster-VM-BR certificate for Availability Group';&lt;br&gt;
GO&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Em seguida, execute o comando para criar o &lt;b&gt;Endpoint&lt;/b&gt;.&lt;br&gt;
&lt;b&gt;USE master&lt;br&gt;
GO&lt;br&gt;
CREATE ENDPOINT Endpoint_AvailabilityGroup &lt;br&gt;
STATE = STARTED &lt;br&gt;
AS TCP &lt;br&gt;
(&lt;br&gt;
LISTENER_PORT = 5022, LISTENER_IP = ALL&lt;br&gt;
)&lt;br&gt;
FOR DATABASE_MIRRORING &lt;br&gt;
(&lt;br&gt;
AUTHENTICATION = CERTIFICATE Cluster_VM_BR_cert,&lt;br&gt;
ENCRYPTION = REQUIRED ALGORITHM AES,&lt;br&gt;
ROLE = ALL&lt;br&gt;
);&lt;br&gt;
GO&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agora vamos fazer o &lt;b&gt;BACKUP&lt;/b&gt; do Certificado, pois precisaremos copiá-lo para os outros NODES que compõem o Cluster.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execute o comando abaixo.
&lt;b&gt;&lt;br&gt;USE master
&lt;br&gt;GO
&lt;br&gt;BACKUP CERTIFICATE Cluster_VM_BR_cert TO FILE = 'F:\data\Cluster_VM_BR_cert.cer';
&lt;br&gt;GO&lt;/b&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Copie o Certificado&lt;/b&gt; gerado na execução do script acima para o Servidor Secundário!&lt;/p&gt;

&lt;p&gt;Repita o Procedimento acima nos outros Nodes do Cluster, gerando as respetivas chaves simétricas, os certificados, gerando os backups e copiando os arquivos para todos os outros nodes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vPT1XW1N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/chc6yiq5469fa3iwzmhe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vPT1XW1N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/chc6yiq5469fa3iwzmhe.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feito isso, vamos ao passo abaixo!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retorne ao servidor primário, lá vamos criar um Login/User com perfil administrador e posteriormente associá-lo na criação do Availability Group:
&lt;b&gt;&lt;br&gt;USE master
&lt;br&gt;GO
&lt;br&gt;CREATE LOGIN [SQL-AG] WITH PASSWORD = 'Wiluey@123';
&lt;br&gt;GO&lt;/b&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;USE master&lt;br&gt;
GO&lt;br&gt;
CREATE USER [SQL-AG] FOR LOGIN [SQL-AG];&lt;br&gt;
ALTER SERVER ROLE [sysadmin] ADD MEMBER [SQL-AG];&lt;br&gt;
GO&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Neste passo vamos associar a conta [SQL-AG] ao Certificado para que ela possa autenticar nos outros Nodes.&lt;br&gt;
&lt;b&gt;USE master&lt;br&gt;
GO&lt;br&gt;
CREATE CERTIFICATE Cluster_VM_EUA_cert&lt;br&gt;
AUTHORIZATION [SQL-AG] FROM FILE = 'F:\data\Cluster_VM_EUA_cert.cer';&lt;br&gt;
GO&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Neste passo autorizamos a conta [SQL-AG] a conectar no Endpoint.&lt;br&gt;
&lt;b&gt;USE master&lt;br&gt;
GO&lt;br&gt;
GRANT CONNECT ON ENDPOINT::Endpoint_AvailabilityGroup TO [SQL-AG];&lt;br&gt;
GO&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repita o Procedimento acima nos outros Nodes do Cluster, criando o Login/User e autorizando a conexão via Certificado.&lt;br&gt;
Atentar-se para o certificado utilizado e justar o script.&lt;/p&gt;

&lt;p&gt;Agora vamos criar o Availability Group!&lt;/p&gt;

&lt;p&gt;Antes disso, acesso o SQL Server no seu servidor primário e crie um banco de dados de teste, altere o &lt;b&gt;Recovery Model para FULL&lt;/b&gt; e faça um Backup Full deste banco de dados recém criado.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Agora sim, acesse seu servidor primário e execute o procedimento abaixo (lembre-se de fazer isso com logado com o usuário SQL-AG):&lt;br&gt;
&lt;b&gt;USE [master]&lt;br&gt;
GO&lt;br&gt;
CREATE AVAILABILITY GROUP [Wiluey_AG]&lt;br&gt;
WITH&lt;br&gt;
(&lt;br&gt;
AUTOMATED_BACKUP_PREFERENCE = PRIMARY,&lt;br&gt;
DB_FAILOVER = ON,&lt;br&gt;
DTC_SUPPORT = NONE&lt;br&gt;
)&lt;br&gt;
FOR DATABASE [TESTE_WILUEY]&lt;br&gt;
REPLICA ON&lt;br&gt;
N'Cluster-VM-BR' WITH&lt;br&gt;
(&lt;br&gt;
ENDPOINT_URL = N'TCP://Cluster-VM-BR.ALWAYSON.COM:5022',&lt;br&gt;
FAILOVER_MODE = AUTOMATIC,&lt;br&gt;
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,&lt;br&gt;
SECONDARY_ROLE&lt;br&gt;
(&lt;br&gt;
  ALLOW_CONNECTIONS = NO&lt;br&gt;
)&lt;br&gt;
),&lt;br&gt;
N'Cluster-VM-EUA' WITH&lt;br&gt;
(&lt;br&gt;
ENDPOINT_URL = N'TCP://Cluster-VM-EUA.ALWAYSON.COM:5022',&lt;br&gt;
FAILOVER_MODE = AUTOMATIC,&lt;br&gt;
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,&lt;br&gt;
SECONDARY_ROLE&lt;br&gt;
(&lt;br&gt;
  ALLOW_CONNECTIONS = NO)&lt;br&gt;
);&lt;br&gt;
GO&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Availability Group criado, agora vamos criar o &lt;b&gt;LISTENER&lt;/b&gt;.&lt;br&gt;
&lt;b&gt;USE [master]&lt;br&gt;
GO&lt;br&gt;
ALTER AVAILABILITY GROUP [Wiluey_AG]&lt;br&gt;
ADD LISTENER N'LS_Wiluey_AG' (&lt;br&gt;
WITH IP&lt;br&gt;
((N'10.0.0.25', N'255.255.255.0'),&lt;br&gt;
(N'10.1.0.25', N'255.255.255.0')&lt;br&gt;
)&lt;br&gt;
, PORT=1433);&lt;br&gt;
GO&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lembrando que aqui é um IP "barra 24", já que está atrelado à Subnet da interface de rede do servidor.&lt;/p&gt;

&lt;p&gt;Feito isso, vamos validar a conexão no SQL AlwaysOn via &lt;b&gt;LISTENER&lt;/b&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Engrr8Ww--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ckudojwwos1f3xkxtojh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Engrr8Ww--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ckudojwwos1f3xkxtojh.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TUDO CERTO!&lt;/b&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Agora vamos validar o Failover!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tHkswIbs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/u4inqxvd47vnja893laj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tHkswIbs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/u4inqxvd47vnja893laj.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EYh7i11N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c1kd8nstb9hqljwgnbl2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EYh7i11N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c1kd8nstb9hqljwgnbl2.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TUDO CERTO NOVAMENTE!&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;E com isso fechamos nossa série, nela aprendemos a criar um SQL Server AlwaysOn AG utilizando a feature Workgroup Cluster do Windows Server 2016.&lt;br&gt;
Aprendemos a criar máquinas virtuais no Azure, a configurar uma interface de rede, criando VNETs e Subnets.&lt;br&gt;
Também foi aprendido como se faz um Vnet Peering entre VMs em zonas de disponibilidade ou regiões distintas.&lt;/p&gt;

&lt;p&gt;Agora um &lt;b&gt;ponto de atenção&lt;/b&gt; super importante:&lt;br&gt;
Este foi apenas um laboratório que servirá de estudos e aprendizado aos leitores.&lt;br&gt;
E por ser um laboratório, diversas regras de segurança foram deixadas de lado, portanto se um dia houver a necessidade de criar uma arquitetura desta em ambiente produtivo, conte com um arquiteto experiente que conheça bem a &lt;b&gt;segurança&lt;/b&gt; do Azure e as boas práticas para manter os dados da sua empresa seguros, não arrisque as práticas deste tutorial!&lt;/p&gt;

&lt;p&gt;E é isso pessoal, espero que tenham gostado!&lt;/p&gt;

&lt;p&gt;No próximo post, vamos aprender a configurar um verdadeiro &lt;b&gt;Active Directory Domain Services (ADDS)&lt;/b&gt; como serviço e vamos inserir estas máquinas em um dominio e atrelá-las à um DNS Domain original, vamos fazer o inverso. =)&lt;/p&gt;

&lt;p&gt;Acompanhem o blog para ficar por dentro do mundo Azure!&lt;/p&gt;

&lt;p&gt;Grande abraço e até a próxima!&lt;/p&gt;

</description>
      <category>azure</category>
      <category>management</category>
      <category>architecture</category>
      <category>sql</category>
    </item>
    <item>
      <title>WSFC + SQL AlwaysOn no AZURE sem Active Directory [#1]</title>
      <dc:creator>Wiluey Sousa</dc:creator>
      <pubDate>Wed, 05 Aug 2020 14:29:51 +0000</pubDate>
      <link>https://dev.to/wiluey/wsfc-sql-alwayson-no-azure-sem-active-directory-1-405g</link>
      <guid>https://dev.to/wiluey/wsfc-sql-alwayson-no-azure-sem-active-directory-1-405g</guid>
      <description>&lt;p&gt;Fala pessoal!&lt;/p&gt;

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

&lt;p&gt;Depois vamos criar um &lt;b&gt;SQL AlwaysOn Availability Group&lt;/b&gt; em cima dessas máquinas usando a feature do WSFC recém criada.&lt;/p&gt;

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

&lt;p&gt;Então a série completa abordará:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Como criar as VNets e Subnets&lt;/li&gt;
&lt;li&gt;Fazer o &lt;b&gt;Peering&lt;/b&gt; entre as redes&lt;/li&gt;
&lt;li&gt;Como criar as máquinas virtuais (VMs) no Azure&lt;/li&gt;
&lt;li&gt;Atrelar as VNets e Setar IPs estáticos nas VMs&lt;/li&gt;
&lt;li&gt;Criar o WSFC entre as VMs&lt;/li&gt;
&lt;li&gt;Criar o AlwaysOn AG&lt;/li&gt;
&lt;li&gt;Testar e validar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

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

&lt;p&gt;Bom, chega de introdução, vamos la!&lt;/p&gt;

&lt;p&gt;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 &lt;b&gt;Availability Zone&lt;/b&gt; diferente.&lt;/p&gt;

&lt;p&gt;Mas antes: O que é uma VNET?&lt;/p&gt;

&lt;p&gt;É 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.&lt;/p&gt;

&lt;p&gt;Basicamente a sua VNet é composta pelos itens abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;Address space:&lt;/b&gt; Como o nome diz, é seu espaço de endereço, ele hospedará sua subnet (sub-rede), onde você conectará outros recursos do Azure.&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Subnets:&lt;/b&gt; 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.&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Regions:&lt;/b&gt; 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 &lt;b&gt;VNet Peering&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Subscription:&lt;/b&gt; VNets estão no escopo de uma Subscription, ou seja, é um dos vários recursos que ficam atrelados diretamente à uma assinatura.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

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

&lt;p&gt;Agora vamos à prática! :)&lt;/p&gt;

&lt;p&gt;Primeiramente vamos logar no Azure: &lt;a href="http://www.portal.azure.com"&gt;www.portal.azure.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Acessando com a sua conta, vamos criar o grupo de recursos dentro da nossa Subscription.&lt;/p&gt;

&lt;p&gt;Caso seja sua primeira experiência com Azure, abra o CloudShell clicando onde a seta da imagem abaixo aponta.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---5TgVNDO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/14sefkqswlfphflryyir.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---5TgVNDO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/14sefkqswlfphflryyir.jpg" alt="Alt Text" width="880" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Com o CloudShell ativo, execute o comando: &lt;b&gt;az account list --output table&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Caso você tenha mais de uma Subscription, ela será listada para você (conforme imagem abaixo).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a9eGEYQW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r1bjpopzsecpe36gyp7e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a9eGEYQW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r1bjpopzsecpe36gyp7e.jpg" alt="Alt Text" width="880" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após decidir qual a subscription utilizar, execute o comando abaixo:&lt;br&gt;
&lt;b&gt;az account set --subscription "Sua SubscriptionID AQUI"&lt;/b&gt;&lt;/p&gt;

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

&lt;p&gt;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 &lt;b&gt;East US&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;A saída deverá ser idêntica a da imagem abaixo:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l7nH3m-0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n0j28to7dz74nzrof4tp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l7nH3m-0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n0j28to7dz74nzrof4tp.jpg" alt="Alt Text" width="880" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Volte o portal do Azure e acesse &lt;b&gt;Resource Group&lt;/b&gt; que você acabou de criar.&lt;/p&gt;

&lt;p&gt;Clique em "Add", conforme imagem abaixo:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TTjmEgWc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t46g9ykuj5fkwo5ct146.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TTjmEgWc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t46g9ykuj5fkwo5ct146.jpg" alt="Alt Text" width="573" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No marketplace, procure por &lt;b&gt;Virtual Network&lt;/b&gt;, conforme imagem abaixo:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k8J0pOUN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/89y1ng25hc3ng2tw76lz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k8J0pOUN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/89y1ng25hc3ng2tw76lz.jpg" alt="Alt Text" width="744" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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).&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RxRvCrQe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/grkur04ytveh9p0rbhoo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RxRvCrQe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/grkur04ytveh9p0rbhoo.jpg" alt="Alt Text" width="880" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ikw_znfr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wtbxadegcn2hz0jv7eoi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ikw_znfr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wtbxadegcn2hz0jv7eoi.jpg" alt="Alt Text" width="880" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Ponto de Atenção:&lt;/b&gt; 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.&lt;br&gt;
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".&lt;/p&gt;

&lt;p&gt;Voltando ao Azure, na próxima aba &lt;b&gt;Security&lt;/b&gt;, deixe tudo com status DISABLE.&lt;/p&gt;

&lt;p&gt;Agora clique em &lt;b&gt;REVIEW + CREATE&lt;/b&gt; e depois clique em &lt;b&gt;CREATE&lt;/b&gt;.&lt;br&gt;
A partir daqui ocorrerá o deploy da sua VNet.&lt;/p&gt;

&lt;p&gt;Agora vamos criar a outra Vnet, que será atrelada à segunda máquina virtual.&lt;br&gt;
Para o artigo não ficar extenso, volte para o inicio e repita todos os passos até aqui, trocando apenas os parâmetros abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resource Group: Cluster_VM_Azure_BR&lt;/li&gt;
&lt;li&gt;Localização: Brazil South&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ou seja, volte ao Cloud Shell e execute o comando abaixo:&lt;br&gt;
&lt;b&gt;az group create -l brazilsouth -n Cluster_VM_Azure_BR&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;E nos passos seguintes, basta atrelar a nova VNet ao RG Cluster_VM_Azure_BR.&lt;/p&gt;

&lt;p&gt;A partir daqui entendo que ambos os Resource Groups estão criados, as VNETs e Subnets atreladas corretamente.&lt;/p&gt;

&lt;p&gt;Então ao final, sua rede ficou assim:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Cluster_VM_Azure_EUA&lt;/b&gt;&lt;br&gt;
VNET: 10.0.0.0/16&lt;br&gt;
SUBNET: 10.0.0.0/24&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Cluster_VM_Azure_BR&lt;/b&gt;&lt;br&gt;
VNET: 10.1.0.0/16&lt;br&gt;
SUBNET: 10.1.0.0/24&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agora vamos ao passo mais importante: a criação do &lt;b&gt;VNet Peering&lt;/b&gt; para garantir que ambas as Subnets enxerguem-se.&lt;/p&gt;

&lt;p&gt;Acessando o Resource Group Cluster_VM_Azure_EUA, clique no recurso já criado &lt;b&gt;vnet_vm_eua&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Navegue no menu à esquerda e clique em "Peerings" (imagem), depois clique em &lt;b&gt;+ add&lt;/b&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HO1t4PHy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dsnodbsx0r81jhug8zg1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HO1t4PHy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dsnodbsx0r81jhug8zg1.jpg" alt="Alt Text" width="880" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abrirá a tela abaixo:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2BZl5IyN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/akqm116990s7quxbqs5m.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2BZl5IyN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/akqm116990s7quxbqs5m.jpg" alt="Alt Text" width="880" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;br&gt;
Obviamente se eu comecei configurando a VNET EUA, então nesse menu eu escolho a VNET BR.&lt;/p&gt;

&lt;p&gt;Logo abaixo, tem as opções de permissão de tráfego:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3WxS-YIF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fs18rny48md6p7evb3i9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3WxS-YIF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fs18rny48md6p7evb3i9.jpg" alt="Alt Text" width="843" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Atenção:&lt;/p&gt;

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

&lt;p&gt;Depois que clicar em &lt;b&gt;CREATE&lt;/b&gt;, o processo de deploy se iniciará.&lt;/p&gt;

&lt;p&gt;Aqui validamos se o Peering está conectado:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1luG0W4n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6skr2esv3iaoypsqq6qe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1luG0W4n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6skr2esv3iaoypsqq6qe.jpg" alt="Alt Text" width="880" height="734"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Estando tudo OK, então fechamos as configurações iniciais de REDES.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Até o próximo post!&lt;/p&gt;

&lt;p&gt;Abraços.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>management</category>
      <category>architecture</category>
      <category>sql</category>
    </item>
    <item>
      <title>WSFC + SQL AlwaysOn no AZURE sem Active Directory [#2]</title>
      <dc:creator>Wiluey Sousa</dc:creator>
      <pubDate>Sat, 13 Jun 2020 20:48:02 +0000</pubDate>
      <link>https://dev.to/wiluey/criando-um-wsfc-sem-ad-sql-alwayson-no-azure-parte-1-1bhl</link>
      <guid>https://dev.to/wiluey/criando-um-wsfc-sem-ad-sql-alwayson-no-azure-parte-1-1bhl</guid>
      <description>&lt;p&gt;Fala pessoal!&lt;/p&gt;

&lt;p&gt;Na etapa anterior, vimos como criar as VNets, Subnets e fazer o Peering entre elas.&lt;br&gt;
Agora vamos criar as nossas máquinas virtuais.&lt;/p&gt;

&lt;p&gt;Nesta segunda parte da série vamos aprender a criar nossas Máquinas Virtuais no Azure, e como a ideia é termos alta disponibilidade total, então cada uma será criada em uma &lt;b&gt;Availability Zone&lt;/b&gt; diferente.&lt;/p&gt;

&lt;p&gt;Para quem não leu na primeira parte, segue o link:&lt;br&gt;
&lt;a href="https://dev.to/wiluey/wsfc-sql-alwayson-no-azure-sem-active-directory-1-405g"&gt;https://dev.to/wiluey/wsfc-sql-alwayson-no-azure-sem-active-directory-1-405g&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos lá!&lt;/p&gt;

&lt;p&gt;Vamos começar criando a máquina que ficará no EUA.&lt;/p&gt;

&lt;p&gt;Acesse o Resource Group &lt;b&gt;Cluster_VM_Azure_EUA&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Clique em "Add", conforme imagem abaixo:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SjPGjzAz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0e3sxvk4yq6xrrzju25j.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SjPGjzAz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0e3sxvk4yq6xrrzju25j.jpg" alt="Alt Text" width="764" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No marketplace, procure pela imagem que usaremos nesta série, digite "SQL Server 2017 on Windows Server 2016", algumas opções surgirão.&lt;br&gt;
Por questões de licenciamento, vamos escolher a versão Developer do SQL Server (conforme imagem):&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IbcVqmVO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j9n3vfsd8v5swn5htxz4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IbcVqmVO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j9n3vfsd8v5swn5htxz4.jpg" alt="Alt Text" width="880" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após escolher, basta clicar em &lt;b&gt;"Create"&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Abrira uma nova tela, certifique-se da região, e do modelo da imagem, veja se condizem com o selecionado.&lt;br&gt;
Também dê um nome à sua máquina virtual.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DaMLVjA9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gs3uusuxaw6zmwfplgxo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DaMLVjA9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gs3uusuxaw6zmwfplgxo.jpg" alt="Alt Text" width="880" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rolando mais para baixo, insira o nome do usuário que será &lt;b&gt;administrador&lt;/b&gt; da VM e uma senha forte.&lt;br&gt;
Como vamos conectar depois via Remote Desktop Protocol (ou RDP), vamos deixar a Porta 3389 que é padrão como pública.&lt;/p&gt;

&lt;p&gt;Após isso, vá para a escolha dos tipos de disco (aqui usando o conceito de camada) conforme abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RJXlZQQe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hzgitkeuxqitk9o9ctrw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RJXlZQQe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hzgitkeuxqitk9o9ctrw.jpg" alt="Alt Text" width="880" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se quiserem saber mais sobre os conceitos e arquiteturas de STORAGE, recomendo outra série minha:&lt;br&gt;
&lt;a href="https://dev.to/wiluey/azure-storage-conhece-parte-1-5a4b"&gt;https://dev.to/wiluey/azure-storage-conhece-parte-1-5a4b&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Voltando...&lt;/p&gt;

&lt;p&gt;Agora chegou a parte mais importante: &lt;b&gt;Configuração de rede&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Para facilitar, todo o trabalho de configuração das VNet, Subnets e Peering foi feita na primeira parte desta série.&lt;/p&gt;

&lt;p&gt;Podemos ver que por atrelarmos esta VM no RG que fica na região East US, ele pegou a primeira VNet (e única) disponível e já atribui às interfaces.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cK_VE5-S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iapjk4bj7r1huufebv3b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cK_VE5-S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iapjk4bj7r1huufebv3b.jpg" alt="Alt Text" width="880" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lembrando que ainda não é aqui que configuraremos os IPs estáticos nas nossas máquinas virtuais.&lt;/p&gt;

&lt;p&gt;As outras opções ficam Default mesmo.&lt;/p&gt;

&lt;p&gt;Agora pule diretamente para a opção &lt;b&gt;SQL Server Settings&lt;/b&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1iOAsKkU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kb4k7g6e269ffvwfc15b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1iOAsKkU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kb4k7g6e269ffvwfc15b.jpg" alt="Alt Text" width="880" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL Connectivity: o SQL aceitará apenas conexões das nossas VM e não estará aberto para acesso via internet.&lt;/li&gt;
&lt;li&gt;Port: padrão 1433 (podendo usar outra se quiser).&lt;/li&gt;
&lt;li&gt;SQL Authentication: Para permitir conexão no SQL via usuário SA.&lt;/li&gt;
&lt;li&gt;Azure Key Vault integration: Usado para armazenar e acessar segredos de forma segura, não usaremos neste LAB.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Após isso, clique diretamente em &lt;b&gt;REVIEW + CREATE&lt;/b&gt; e após validar as informações, confirme para iniciar o deployment da nossa primeira máquina virtual.&lt;br&gt;
Esta operação levará uns 15 minutos.&lt;/p&gt;

&lt;p&gt;Ao final do deployment, cliquem em "Go to resources" para ser direcionado para o ARM.&lt;/p&gt;

&lt;p&gt;Você chegará nesta tela:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uz7oerk1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/eqktvjtffpz04wfu82bs.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uz7oerk1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/eqktvjtffpz04wfu82bs.jpg" alt="Alt Text" width="880" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O Azure atribuiu um IP Publico à nossa máquina virtual e também um IP Privado, porém esse privado é entregue via DHCP, precisamos garantir que ele seja estático para que não haja troca do IP após um boot na VM.&lt;/p&gt;

&lt;p&gt;Pensa que acabou?&lt;/p&gt;

&lt;p&gt;Clique na opção &lt;b&gt;Networking&lt;/b&gt; (seta vermelha da imagem acima).&lt;/p&gt;

&lt;p&gt;Após isso, clique na interface de rede da sua VNet.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zcZCNIXV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/a9gwmrodzt3o8ikm8epp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zcZCNIXV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/a9gwmrodzt3o8ikm8epp.jpg" alt="Alt Text" width="880" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após isso, clique na opção &lt;b&gt;IP Configurations&lt;/b&gt; no menu à esquerda, depois clique na interface (ipconfig1).&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I3DTyyzA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/abkvmi1jtbwqvrxmftjy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I3DTyyzA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/abkvmi1jtbwqvrxmftjy.jpg" alt="Alt Text" width="880" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na próxima tela, altere a opção &lt;b&gt;Assignment&lt;/b&gt; para &lt;b&gt;Static&lt;/b&gt;.&lt;br&gt;
Por opção defini os IPs como 10.0.0.10(EUA) e 10.1.0.10(BR), mas você pode colocar qual IP desejar, desde que eles façam parte do range pertencente às suas VNets obviamente.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_-bhxLeq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1jkv67gfwrmkcmpzdowc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_-bhxLeq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1jkv67gfwrmkcmpzdowc.jpg" alt="Alt Text" width="880" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois clique em &lt;b&gt;Save&lt;/b&gt; para salvar as alterações e faça um Boot nas máquinas virtuais para que as interfaces de rede peguem o novo IP.&lt;/p&gt;

&lt;p&gt;Validada a criação da máquina virtual que encontra-se nos EUA, vamos repetir todo o procedimento, agora criando a máquina na região do Brasil, apontando para o Resource Group &lt;b&gt;Cluster_VM_Azure_BR&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;A partir daqui presumo que as duas máquinas virtuais estão criadas e as interfaces configuradas com os IPs estáticos.&lt;/p&gt;

&lt;p&gt;Agora vamos validar.&lt;/p&gt;

&lt;p&gt;No ARM (Azure Resource Manager) vá na sua máquina virtual e clique em &lt;b&gt;Connect&lt;/b&gt;, após isso, clique em &lt;b&gt;RDP&lt;/b&gt; para acessar o Remote Desktop Protocol.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NDUwxZ0H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yhp73jtizjpdnp7wla39.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NDUwxZ0H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yhp73jtizjpdnp7wla39.jpg" alt="Alt Text" width="880" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Baixando o arquivo, agora vamos acessar a nossa máquina virtual.&lt;br&gt;
E feito isso, vamos desabilitar o Firewall do Windows e as opções de segurança do IE.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sWLPxjqI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fop6u9e36fjqiln3zq5b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sWLPxjqI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fop6u9e36fjqiln3zq5b.jpg" alt="Alt Text" width="880" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;feito isso, vamos fazer teste de conectividade entre as máquinas virtuais.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I_FePi-U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ln66k3hclqexv2yrlego.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I_FePi-U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ln66k3hclqexv2yrlego.jpg" alt="Alt Text" width="880" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lembrando que uma máquina só "enxerga" a outra por causa do &lt;b&gt;VNet Peering&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Agora vamos habilitar a &lt;b&gt;Feature de Cluster&lt;/b&gt; e fechar por aqui o post.&lt;/p&gt;

&lt;p&gt;Acesse o Server Manager e clique em Dashboard, depois em Add roles and features.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nkYjelh2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ruxbtcin7o3p9yb77kme.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nkYjelh2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ruxbtcin7o3p9yb77kme.jpg" alt="Alt Text" width="880" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na próxima tela que abrir, clique quatro vezes em &lt;b&gt;Next&lt;/b&gt; até chegar na tela abaixo.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KB9iiZVD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1rf9ofwp3crelc0z6ih8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KB9iiZVD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1rf9ofwp3crelc0z6ih8.jpg" alt="Alt Text" width="880" height="622"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clique onde a seta vermelha indica, depois em "Add Features" e por fim em "Next".&lt;/p&gt;

&lt;p&gt;Agora só aguardar a instalação da Feature.&lt;/p&gt;

&lt;p&gt;Repita o procedimento para a outra máquina virtual e pronto!&lt;/p&gt;

&lt;p&gt;No próximo e último post da série, vamos habilitar o WSFC e configurar o SQL Server AlwaysOn AG.&lt;/p&gt;

&lt;p&gt;Até o próximo post!&lt;/p&gt;

&lt;p&gt;Abraços.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>management</category>
      <category>architecture</category>
      <category>sql</category>
    </item>
    <item>
      <title>Azure Storage, conhece? [PARTE 2]</title>
      <dc:creator>Wiluey Sousa</dc:creator>
      <pubDate>Thu, 09 Jan 2020 04:40:07 +0000</pubDate>
      <link>https://dev.to/wiluey/azure-storage-conhece-parte-2-57ib</link>
      <guid>https://dev.to/wiluey/azure-storage-conhece-parte-2-57ib</guid>
      <description>&lt;p&gt;Dando continuidade ao post anterior, vamos falar sobre o que é "TIER" e entrar de vez no Azure Storage.&lt;/p&gt;

&lt;p&gt;Para quem não leu a primeira parte, segue link:&lt;br&gt;
&lt;a href="https://dev.to/wiluey/azure-storage-conhece-parte-1-5a4b"&gt;https://dev.to/wiluey/azure-storage-conhece-parte-1-5a4b&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bom, vamos lá!&lt;/p&gt;

&lt;p&gt;No artigo anterior estudamos os principais conceitos para entendermos uma storage, como o SO faz o acesso ao disco e as camadas que podemos montar em termos de redundância e paridade.&lt;/p&gt;

&lt;p&gt;Mas ainda tem mais, uma vez que montamos nossos RAIDS, precisamos separar os discos rápidos dos discos lentos, senão a performance de acesso à informação será comprometida. E é aí que entra o conceito de TIER.&lt;/p&gt;

&lt;p&gt;Veja bem, TIER é um conceito de camada (e uma tradução livre), portanto você pode  separar os discos em lentos, rápidos (de 10 a 15 mil RPM) e SSDs sem "misturá-los".&lt;br&gt;
Veja bem, o "misturar" é na hora de montar o RAID, como vimos no artigo anterior.&lt;/p&gt;

&lt;p&gt;E por que isso?&lt;br&gt;
Simples: reduzir o custo total do armazenamento.&lt;/p&gt;

&lt;p&gt;Uma arquitetura de armazenamento em camadas (TIER) coloca os dados em uma hierarquia de acordo com seu valor comercial. As camadas são determinadas pelo desempenho e pelo custo da mídia, e os dados são classificados pela frequência com que os usuários acessam. &lt;br&gt;
Geralmente, os dados mais importantes são veiculados na mídia de armazenamento mais rápida, que normalmente é a mais cara.&lt;/p&gt;

&lt;p&gt;Em uma configuração básica, uma camada rápida de armazenamento flash alcança desempenho satisfatório, enquanto outros dados são gravados no armazenamento secundário em disco, fita ou nuvem. Os dados que precisam ser mantidos indefinidamente são mantidos em uma camada de arquivamento.&lt;/p&gt;

&lt;p&gt;Antes os TIERS eram armazenados de 1 a 3, na ordem de importância, mas com o advento dos discos flash e da cloud publica, essa classificação aumentou e agora dizemos que o TIER pode ser se 0 à 3.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DJcBKkCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kp7gspvju277qoj0b87g.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DJcBKkCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kp7gspvju277qoj0b87g.JPG" alt="Alt Text" width="880" height="668"&gt;&lt;/a&gt;&lt;br&gt;
Acima vemos a ilustração do TIER x Criticidade do Negócio&lt;/p&gt;

&lt;p&gt;Como classificar?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TIER 0&lt;/b&gt;: A camada 0 (camada zero) é o nível de armazenamento de dados mais rápido e talvez mais caro do que qualquer outro nível na hierarquia de armazenamento.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TIER 1&lt;/b&gt;: Discos rápidos, geralmente Fibre Channel, com velocidade acima de 10k.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TIER 2&lt;/b&gt;: Discos usados para armazenamento, porém que precisam de uma velocidade de gravação/leitura (write/read) mediana. Discos SATA ou SAS são os mais utilizados.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TIER 3&lt;/b&gt;: Camada fria, são discos usados para armazenamento histórico, a velocidade não é importante, apenas o tamanho, uma vez que vamos guardar nossos arquivos por vários anos provavelmente. Fitas são bons exemplos.&lt;/p&gt;

&lt;p&gt;Creio que aqui deu pra entender bem o conceito e fechar o necessário para entendermos bem uma STORAGE, certo?&lt;br&gt;
Claro que ainda há muito a ser dito, mas para o que precisamos, já temos informações suficientes.&lt;/p&gt;

&lt;p&gt;Então finalmente vamos entrar no &lt;b&gt;AZURE&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Quando falamos de Azure, falamos geralmente em uma Conta de Armazenamento (Storage Account), que também é divido em camadas, mas aqui já usaremos um outro termo, o &lt;b&gt;Access Tier&lt;/b&gt;, que na prática, é o mesmo do TIER que estudamos acima.&lt;/p&gt;

&lt;p&gt;E temos que ter em mente uma coisa: Por ser tratar de um serviço provido por um fornecedor de Cloud Publica, o serviço (sim, aqui storage é um serviço) tem que ser &lt;b&gt;durável e altamente resiliente&lt;/b&gt; e para isso, a Microsoft possui redundância e a disponibilidade dos dados depende do que é contratado.&lt;/p&gt;

&lt;p&gt;E quais os tipos de redundância disponíveis?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;LRS — Armazenamento com Redundância Local&lt;/b&gt;&lt;br&gt;
Replica seus dados três vezes em um único data center. O LRS é a opção de replicação de menor custo e oferece a menor durabilidade em comparação com outras opções.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;ZRS — Armazenamento Redundante de Zona&lt;/b&gt;&lt;br&gt;
Replica seus dados de forma síncrona em três clusters de armazenamento em uma única região&lt;/p&gt;

&lt;p&gt;&lt;b&gt;GRS — Armazenamento com Redundância Geográfica&lt;/b&gt;&lt;br&gt;
O armazenamento com redundância geográfica (GRS) foi desenvolvido para fornecer pelo menos 99.99999999999999% (16 9’s) durabilidade dos objetos em um determinado ano. Se sua conta de armazenamento tem GRS habilitado, seus dados serão duráveis mesmo no caso de uma interrupção regional completa ou um desastre no qual a região principal não possa ser recuperada.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;GZRS — Armazenamento com Redundância de Zona Geográfica&lt;/b&gt; &lt;br&gt;
Armazenamento com redundância de zona geográfica (GZRS) (visualização) casa a alta disponibilidade de armazenamento com redundância de zona (ZRS) com proteção contra interrupções regionais, conforme fornecido pelo armazenamento com REDUNDÂNCIA geográfica (GRS). &lt;br&gt;
Os dados em uma conta de armazenamento (Storage Account) GZRS são replicados em três zonas de disponibilidade do Azure na região primária e também são replicados para uma região geográfica secundária para proteção contra desastres regionais.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Lembre-se:&lt;/b&gt; Zona de Disponibilidade (Availability Zone) e Região Geográfica não podem ser confundidas.&lt;br&gt;
Cada Região é uma área geográfica separada. Cada região tem vários locais isolados conhecidos como Zonas de disponibilidade. As Zonas locais fornecem a capacidade de colocar recursos, como computação e armazenamento, em vários locais mais próximos dos usuários finais. Os recursos não são replicados entre regiões, a menos que você especifique isso, ficou claro?&lt;/p&gt;

&lt;p&gt;Acima expliquei os principais serviços de armazenamento que são entregues pela Microsoft dentro do Azure.&lt;/p&gt;

&lt;p&gt;E dependendo do tipo de redundância, temos alguns subníveis de contratação.&lt;/p&gt;

&lt;p&gt;Vejamos:&lt;/p&gt;

&lt;p&gt;Dentro do GRS, podemos ter o &lt;b&gt;RA-GRS&lt;/b&gt;, que é um tipo de armazenamento com redundância geográfica de acesso de leitura, ou seja, seus dados são replicados para outro datacenter em uma região secundária e também é fornecida a opção de leitura (read access) a partir da própria região secundária.&lt;/p&gt;

&lt;p&gt;Ponto de atenção: Somente as contas de armazenamento (Storage Account) de &lt;b&gt;uso geral V2 (GPv2)&lt;/b&gt; dão suporte a GZRS e RA-GZRS.&lt;/p&gt;

&lt;p&gt;Outras vantagens de se ter storage como serviço é que são totalmente seguras e escaláveis.&lt;/p&gt;

&lt;p&gt;Ai você pergunta: Mas toda storage tendo espaço no TIER não é escalável?&lt;br&gt;
Sim, essa é a resposta. Mas este espaço é limitado, na nuvem ele é "ilimitado".&lt;/p&gt;

&lt;p&gt;Falando em TIER, chegou o momento de explicar as camadas de acesso do Azure.&lt;/p&gt;

&lt;p&gt;Existem cinco Camadas de Acesso (ACCESS TIER):&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Hot Access Tier (Camada de Acesso Quente):&lt;/b&gt;&lt;br&gt;
A camada de acesso quente tem custos de armazenamento maiores, mas os custos de acesso mais baixos. &lt;br&gt;
Os cenários de uso de exemplo para a camada de acesso quente incluem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dados que estão em uso ativo ou que devem ser acessados (lidos e gravados) com frequência.&lt;/li&gt;
&lt;li&gt;Dados que são preparados para processamento e migração eventual para a camada de acesso fria.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Cool Access Tier (Camada de Acesso Frio):&lt;/b&gt;&lt;br&gt;
A camada de acesso frio reduz os custos de armazenamento e os custos de acesso mais altos em comparação com o armazenamento dinâmico. Essa camada destina-se aos dados que permanecerão na camada esporádica por pelo menos 30 dias.&lt;br&gt;
Os cenários de uso de exemplo para a camada de acesso fria incluem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conjuntos de dados de recuperação de desastre e de backup de curto prazo.&lt;/li&gt;
&lt;li&gt;Conteúdo de mídia mais antigo que não é mais exibido frequentemente, mas ainda deve estar disponível imediatamente quando acessado.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Archive Access Tier (Camada de Acesso ao Arquivo):&lt;/b&gt;&lt;br&gt;
A camada de acesso de arquivamento tem o menor custo de armazenamento. Mas ele tem custos de recuperação de dados mais altos em comparação com as camadas quente e fria. Os dados na camada de arquivo podem levar várias horas para serem recuperados.&lt;br&gt;
Os cenários de uso de exemplo para a camada de acesso de arquivamento incluem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backup de longo prazo, backup secundário e conjuntos de dados de arquivamento.&lt;/li&gt;
&lt;li&gt;Dados originais (brutos) que devem ser preservados, mesmo após serem processados em formato utilizável final.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Observação: Os dados devem permanecer na camada de arquivo por pelo menos 180 dias ou estar sujeitos a uma cobrança de exclusão antecipada.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Blob Level Tiering (Camada no Nível do Blob):&lt;/b&gt;&lt;br&gt;
As camadas no nível do blob permitem que você altere a camada de seus dados no nível de objeto usando uma única operação chamada &lt;b&gt;Set Blob Tier&lt;/b&gt;.&lt;br&gt;
Você pode alterar facilmente o nível de acesso de um blob entre as camadas quente, fria ou de arquivo como alteração de padrões de uso, sem a necessidade de mover dados entre contas.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Account Level Tiering (Camadas em Nível de Conta):&lt;/b&gt;&lt;br&gt;
Os BLOBs em todas as três camadas de acesso podem coexistir dentro da mesma conta.&lt;br&gt;
Qualquer BLOB que não tenha uma camada explicitamente atribuída (não definida) infere a camada da configuração de nível de acesso da conta.&lt;/p&gt;

&lt;p&gt;Ah, também existem as Storage Account do tipo &lt;b&gt;QUEUE&lt;/b&gt; e &lt;b&gt;TABLE&lt;/b&gt;, a diferença entre elas é:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;QUEUE - Armazenamento de Filas&lt;/b&gt;&lt;br&gt;
O armazenamento de filas do Azure fornece mensagens na nuvem entre os componentes da aplicação.&lt;br&gt;
Um grande número de mensagens que podem ser acessadas de qualquer lugar do mundo por meio de chamadas autenticadas usando HTTP ou HTTPS. &lt;br&gt;
Uma única mensagem de fila pode ter até 64 KB de tamanho e uma fila pode conter milhões de mensagens, até o limite de capacidade total da Storage Account.&lt;br&gt;
Sugestão: Recomendo que leiam sobre o conceito de &lt;b&gt;Message Broker&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qiNaNs3c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/w44kxjtxge9cmhnxxm76.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qiNaNs3c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/w44kxjtxge9cmhnxxm76.JPG" alt="Alt Text" width="585" height="230"&gt;&lt;/a&gt;&lt;br&gt;
Conceito de uma QUEUE STORAGE&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TABLE - Armazenamento de Tabelas&lt;/b&gt;&lt;br&gt;
O armazenamento de tabela do Azure armazena grandes quantidades de dados estruturados. O serviço é um armazenamento de dados NoSQL (formato Key Value) que aceita chamadas autenticadas de dentro e de fora do Azure.&lt;br&gt;
Sugestão: Recomendo que leiam sobre o conceito de &lt;b&gt;NoSQL e Key Value&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c3ntzDfA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2uqwce8naqb968qqdhf9.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c3ntzDfA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2uqwce8naqb968qqdhf9.JPG" alt="Alt Text" width="586" height="360"&gt;&lt;/a&gt;&lt;br&gt;
Conceito de uma TABLE STORAGE&lt;/p&gt;

&lt;p&gt;Agora sabemos quais os TIERs entregues pelo Azure quando vamos definir uma conta de armazenamento (Storage Account) e ficou mais fácil definir quais as melhores opções para o seu negócio, concorda?&lt;/p&gt;

&lt;p&gt;Mas lembre-se, quando você cria sua conta de armazenamento (Storage Account), fique atento aos propósitos gerais. &lt;/p&gt;

&lt;p&gt;Como assim?&lt;/p&gt;

&lt;p&gt;Existem 3 tipos de Contas de Armazenamento: GPv1, GPv2 e BLOB.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;GPv1 - General Purpose v1 (Propósito Geral V1):&lt;/b&gt;&lt;br&gt;
Tipo de conta herdada para BLOBs, arquivos, filas e tabelas.&lt;br&gt;
As contas de armazenamento v1 de uso geral fornecem acesso a todos os serviços de armazenamento do Azure, &lt;b&gt;mas podem não ter os recursos mais recentes&lt;/b&gt; e tem um ponto negativo que é o uso obrigatório do modelo de implantação clássico do Azure e não tem suporte ao Azure Resource Manager.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;GPv2 - General Purpose v2 (Propósito Geral V2):&lt;/b&gt;&lt;br&gt;
As contas de armazenamento para uso geral v2 são compatíveis com os recursos mais recentes do Armazenamento do Azure e incorporam todas as funcionalidades das contas de armazenamento de blobs e para uso geral v1 e possuem a vantagem de ser compatíveis com o Azure Resource Manager (ARM), além de serem bem mais baratas que GPv1.&lt;br&gt;
Observação: GPv2 é o tipo de conta atualmente recomendado pela própria Microsoft.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Blob Storage Account (Conta de Armazenamento de BLOB):&lt;/b&gt;&lt;br&gt;
É uma conta de armazenamento especializada que você usa para armazenar dados de objeto não estruturado.&lt;br&gt;
Esse tipo de conta de armazenamento (Storage Account) é otimizado para workloads com altas taxas de transações ou que exigem tempos de acesso muito rápidos.&lt;/p&gt;

&lt;p&gt;Ótimo, entendi como são os níveis de acesso e os tipos de conta no Azure, mas e o preço?&lt;/p&gt;

&lt;p&gt;Os preços obviamente variam de acordo com a sua necessidade, mas dependendo do seu negócio, tenha em mente alguns pontos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custo do armazenamento por camada (se precisa ser premium ou não)&lt;/li&gt;
&lt;li&gt;Vai escrever mais ou ler mais?&lt;/li&gt;
&lt;li&gt;Vai fazer mais Upload ou Download?&lt;/li&gt;
&lt;li&gt;Se tiver HA (high availability), avalie o custo da replicação e as regiões geográficas envolvidas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E como faço para acessar a minha conta de armazenamento?&lt;/p&gt;

&lt;p&gt;Simples, uma vez criada, você pode acessá-la de qualquer lugar via URL, sendo HTTP ou HTTPS.&lt;br&gt;
A entrada fica assim: &lt;b&gt;&lt;a href="https://storagewiluey.blob.core.windows.net"&gt;https://storagewiluey.blob.core.windows.net&lt;/a&gt;&lt;/b&gt;&lt;br&gt;
Obviamente será necessário uma chave de acesso (hash key).&lt;/p&gt;

&lt;p&gt;Você também pode acessar sua Storage Account via &lt;b&gt;REST API&lt;/b&gt;, &lt;b&gt;Azure PowerShell&lt;/b&gt; ou &lt;b&gt;Azure CLI&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;E sabia que você pode simular uma Storage Account em sua máquina local?&lt;/p&gt;

&lt;p&gt;Existe um recurso chamado &lt;b&gt;Azure Storage Simulator&lt;/b&gt; que faz parte da SDK de desenvolvimento do Azure e você pode baixá-lo gratuitamente.&lt;/p&gt;

&lt;p&gt;Link direto: &lt;a href="https://go.microsoft.com/fwlink/?linkid=717179&amp;amp;clcid=0x409"&gt;https://go.microsoft.com/fwlink/?linkid=717179&amp;amp;clcid=0x409&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O Azure Storage Simulator fornece um ambiente de desenvolvimento local gratuito para desenvolver e testar seus aplicativos de armazenamento do Azure sem criar uma assinatura.&lt;/p&gt;

&lt;p&gt;Após instalado, ele usa uma instância LocalDB do Microsoft SQL Server 2012 Express para emular os serviços de armazenamento do Azure. &lt;br&gt;
Se você quiser, pode optar por configurar o Azure Storage Simulator para acessar uma instância local do SQL Server em vez da instância do LocalDB default.&lt;/p&gt;

&lt;p&gt;Sensacional né?&lt;/p&gt;

&lt;p&gt;Creio que até aqui deu para entender bem os conceitos de storage física e storage como serviço de armazenamento no Azure; o assunto é extenso, ainda existem muitos pontos, mas este artigo (e a parte 1) deram um norte para você estudar o assunto a fundo, certo?&lt;/p&gt;

&lt;p&gt;Na próxima e última parte desta série, aprenderemos na prática como criar uma Storage Account no Azure via Portal, Powershell e Azure CLI ;).&lt;/p&gt;

&lt;p&gt;Até o próximo post!&lt;/p&gt;

&lt;p&gt;Abs,&lt;/p&gt;

</description>
      <category>azure</category>
      <category>architecture</category>
      <category>sql</category>
    </item>
    <item>
      <title>Configurando sua própria Cloud Híbrida - Conheça o Azure Stack</title>
      <dc:creator>Wiluey Sousa</dc:creator>
      <pubDate>Thu, 31 Oct 2019 01:48:50 +0000</pubDate>
      <link>https://dev.to/wiluey/configurando-sua-propria-cloud-hibrida-conheca-o-azure-stack-19oj</link>
      <guid>https://dev.to/wiluey/configurando-sua-propria-cloud-hibrida-conheca-o-azure-stack-19oj</guid>
      <description>&lt;p&gt;Fala comunidade!&lt;/p&gt;

&lt;p&gt;Queria compartilhar com vocês um pequeno artigo que será muito útil para você que quer se aprofundar nos estudos do Azure.&lt;/p&gt;

&lt;p&gt;Ultimamente tenho recebido muitos questionamentos sobre como iniciar os estudos na Cloud da Microsoft, muitos falam sobre os créditos limitados, outros que não possuem cartão de crédito, item obrigatório para configurar sua conta no Azure, outros sobre o fato de ter que estar conectado a internet (e em alguns cenários, isso pode ser uma dificuldade pessoal) e claro, os valores dos produtos que podem acabar com os créditos antes do planejado.&lt;/p&gt;

&lt;p&gt;Então para resolver uma grande parte deste impasse, a Microsoft criou o Azure Stack.&lt;/p&gt;

&lt;p&gt;E o que é isso?&lt;/p&gt;

&lt;p&gt;Simples, é uma plataforma de nuvem híbrida local (seu computador) na qual simula um ambiente de infraestrutura como serviço (IaaS) e alguns serviços de plataforma (PaaS).&lt;/p&gt;

&lt;p&gt;Como assim?&lt;/p&gt;

&lt;p&gt;Significa que você poder ter um ambiente Azure simulado no seu ambiente para poder estudar e aplicar a maioria dos serviços que a Cloud da Microsoft oferece. Genial!&lt;/p&gt;

&lt;p&gt;Obviamente, por questões arquiteturais, nem todos os serviços do Azure estão disponíveis. Mas isso não interfere em quase nada seu aprofundamento nos estudos.&lt;/p&gt;

&lt;p&gt;E que arquitetura é essa?&lt;/p&gt;

&lt;p&gt;Antes, precisamos entender no que ela se baseia: Em Arquitetura Hiperconvergente, do inglês hyperconverged infrastructure (HCI).&lt;/p&gt;

&lt;p&gt;A Arquitetura Hiperconvergente é uma solução simplificada que utiliza Softwares e dispositivos x86 modernos em substituição à Hardwares de alto custo.&lt;br&gt;
Com isso você combina armazenamento, computação e rede em um único sistema que pode reduzir a complexidade do datacenter e aumentar sua escalabilidade, com isso, as funções críticas do próprio datacenter são executadas em uma camada de software totalmente integrada.&lt;/p&gt;

&lt;p&gt;Não entendeu?&lt;br&gt;
Pense que agora toda a sua infraestrutura é executada em cima de um hypervisor, como o Hyper-V por exemplo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l2fIaBPn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/tweylejfj86sqg5qpi7c.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l2fIaBPn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/tweylejfj86sqg5qpi7c.JPG" alt="Alt Text"&gt;&lt;/a&gt;Topologia simples da integração do Azure Stack em HCI.&lt;/p&gt;

&lt;p&gt;Uma observação, se sua empresa quiser "rodar" como uma nuvem privada, existem hardwares criados exclusivamente para que você administre sua Infra Hiperconvergente como o Dell EMC Storage Spaces Direct Ready Node - R640 All-NVMe que é homologado pela própria Microsoft.&lt;/p&gt;

&lt;p&gt;Assim você pode ter "seu próprio Azure" e integrar soluções híbridas com a Cloud Pública.&lt;/p&gt;

&lt;p&gt;Onde isso se encaixa?&lt;/p&gt;

&lt;p&gt;Em soluções de migração e estudos em como converter aplicações e serviços que possam ser executados diretamente no Azure, sem usar o conceito de "Lift-and-Shift".&lt;/p&gt;

&lt;p&gt;Agora que entendemos como se baseia o Azure Stack, que tal configurarmos o nosso próprio ambiente e começar os estudos?&lt;/p&gt;

&lt;p&gt;Para começar, baixe a imagem do Azure Stack no link abaixo:&lt;br&gt;
&lt;a href="https://azure.microsoft.com/pt-br/overview/azure-stack/development-kit-thank-you/"&gt;https://azure.microsoft.com/pt-br/overview/azure-stack/development-kit-thank-you/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feito isso, dê permissões para o seu usuário Powershell rodar scripts não assinados.&lt;br&gt;
Abra a console do Powershell como administrador e execute o script abaixo:&lt;br&gt;
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser&lt;/p&gt;

&lt;p&gt;Execute o script abaixo (lembrando de apontar o caminho da variável $LocalPath para a pasta onde você baixou a imagem do Azure Stack), tire o "--" do script:&lt;/p&gt;

&lt;p&gt;--##Variables&lt;br&gt;
$Uri = '&lt;a href="https://raw.githubusercontent.com/Azure/AzureStack-Tools/master/Deployment/asdk-installer.ps1"&gt;https://raw.githubusercontent.com/Azure/AzureStack-Tools/master/Deployment/asdk-installer.ps1&lt;/a&gt;'&lt;br&gt;
$LocalPath = 'D:\AzureStack_Installer'&lt;br&gt;
--##Create folder&lt;br&gt;
New-Item $LocalPath -Type directory&lt;br&gt;
--##Enforce usage of TLSv1.2 to download from GitHub&lt;br&gt;
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12&lt;br&gt;
--##Download file&lt;br&gt;
Invoke-WebRequest $uri -OutFile ($LocalPath + '\' + 'asdk-installer.ps1')&lt;/p&gt;

&lt;p&gt;O script acima criará um arquivo chamado "asdk-installer.ps1" no caminho especificado na variável $LocalPath.&lt;/p&gt;

&lt;p&gt;Via Powershell (como administrador) execute o script abaixo que será baixado no passo acima (lembrando de mudar o caminho):&lt;br&gt;
D:\AzureStack_Installer\asdk-installer.ps1&lt;/p&gt;

&lt;p&gt;Agora é só selecionar a imagem na tela de Deployment e configurar o seu ambiente. =)&lt;/p&gt;

&lt;p&gt;A partir de então, tudo será simples e bastante auto-explicativo.&lt;/p&gt;

&lt;p&gt;Aproveite seu ambiente Azure simulado e estude!&lt;/p&gt;

&lt;p&gt;Até o próximo post!&lt;/p&gt;

&lt;p&gt;Abs,&lt;/p&gt;

</description>
      <category>azure</category>
      <category>github</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Azure Storage, conhece? [PARTE 1]</title>
      <dc:creator>Wiluey Sousa</dc:creator>
      <pubDate>Sat, 26 Oct 2019 04:15:22 +0000</pubDate>
      <link>https://dev.to/wiluey/azure-storage-conhece-parte-1-5a4b</link>
      <guid>https://dev.to/wiluey/azure-storage-conhece-parte-1-5a4b</guid>
      <description>&lt;p&gt;Muitos analistas de infraestrutura e DBAs trabalham com discos, isso já é de conhecimento de quem atua na área de TI, certo?&lt;/p&gt;

&lt;p&gt;Mas tratando-se de disco, muitas vezes o analista ou DBA fica perdido em uma análise ou troubleshooting, pois isso vai além da ferramenta em que o profissional atua. Porém "disco" (em aspas mesmo) muitas vezes é o responsável pelo gargalo e lentidão de um ambiente.&lt;/p&gt;

&lt;p&gt;Antes de entrarmos no mundo Cloud Azure, que tal conhecermos melhor o que é uma Storage e como administramos isso? &lt;/p&gt;

&lt;p&gt;Então vamos lá!&lt;/p&gt;

&lt;p&gt;Como posso entender qual o melhor disco para o meu banco de dados ou aplicação? Quando migrar as aplicações para o Azure (Cloud da Microsoft), como saber a melhor escolha?&lt;/p&gt;

&lt;p&gt;Antes de mais nada, vamos dar um passo para trás e entender o conceito de storage para clarear o entendimento.&lt;/p&gt;

&lt;p&gt;Segundo a InfoB: "Storage é um hardware que contém slots para vários discos, ligado aos servidores através de iSCSI (protocolo de rede) ou Fibra Ótica (Fiber Channel). Ele é uma peça altamente redundante e cumpre com louvor a sua missão, que é armazenar os dados da sua empresa com segurança".&lt;/p&gt;

&lt;p&gt;Bom, no geral já sabemos como é o conceito, a partir daqui vamos entender como isso funciona na prática.&lt;/p&gt;

&lt;p&gt;O servidor de banco de dados, não conecta diretamente numa Storage, ele utiliza os protocolos específicos acima para estabelecer uma comunicação direta, passando  por um Switch Fabric ou uma HBA (vamos entender mais lá na frente).&lt;/p&gt;

&lt;p&gt;As Storage dividem-se em três tipos: DAS, NAS e SAN.&lt;br&gt;
E quais as diferenças entre eles?&lt;/p&gt;

&lt;p&gt;&lt;b&gt;DAS (Direct Attached Storage):&lt;/b&gt; Um dispositivo externo que vai conectado diretamente aos computadores ou servidores. Um exemplo prático são os HDs Externos.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;NAS (Network Attached Storage):&lt;/b&gt; É ligado diretamente na rede e roda um sistema operacional próprio e completo. Um File Server (servidor de arquivos) é um exemplo prático já que ele pode compartilhar e gerenciar as informações armazenadas.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SAN (Storage Area Network):&lt;/b&gt; Como o NAS, também é uma rede dedicada, mas a diferença consiste no aumento do desempenho, da velocidade e da segurança no acesso aos dados armazenados.&lt;/p&gt;

&lt;p&gt;Ai fica a questão, o que foi apresentado acima são protocolos de rede, o que isso tem a ver com Storage?&lt;/p&gt;

&lt;p&gt;Bom, uma analogia simples seria comparar a um corpo humano. Se uma Storage é o coração do armazenamento, os protocolos de redes são as artérias por onde os dados trafegam, ou seja, são tão importantes quanto e influenciam diretamente na performance do seu banco de dados ou aplicação.&lt;/p&gt;

&lt;p&gt;Mas ainda falta um componente importante, a &lt;b&gt;Placa HBA&lt;/b&gt;!&lt;/p&gt;

&lt;p&gt;A HBA (Host Bus Adapter) é a responsável por "traduzir" em uma rede SAN os protocolos de redes externos e internos que são trafegados, ela possui um chip próprio que evita sobrecarga da CPU no processo de conversão.&lt;/p&gt;

&lt;p&gt;Existem muito mais para falar sobre isso como HUB, Switches, Bridges Fibre Channel SCSI, BCV (Business Continuance Volumes) e iSCSI Extensions for RDMA (iSER), mas o artigo é sobre Storage e não Redes, correto?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fbz4epwum46irx2rx70eb.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fbz4epwum46irx2rx70eb.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Acima um desenho simples de uma topologia de rede SAN&lt;/p&gt;

&lt;p&gt;Continuando o assunto, agora já sabemos como nossos dados trafegam entre nossos os servidores e a storage e a importância de ter uma topologia correta.&lt;/p&gt;

&lt;p&gt;Mas e os discos, cadê?&lt;/p&gt;

&lt;p&gt;Calma, ainda faltam mais coisas pra você aprender, mas prometo que valerá a pena.&lt;/p&gt;

&lt;p&gt;A Storage é um conjunto de vários discos e de diversas volumetrias e estes discos podem ser somados formando uma unidade maior.&lt;/p&gt;

&lt;p&gt;E como isso é feito?&lt;br&gt;
Primeiro que não dá pra fazer uma fusão física dos discos, é impossível, mas posso fazer o sistema operacional "enxergar" um disco lógico.&lt;br&gt;
Esse disco é conhecido como &lt;b&gt;LUN (Logical Unit Number)&lt;/b&gt;, que é um subconjunto dos discos apresentados, ou seja, usando um exemplo simples, fisicamente eu uso 2 discos de 500GB, mas o Windows enxerga um disco de 1TB.&lt;/p&gt;

&lt;p&gt;Mas porque o SO não enxerga dois discos de 500GB?&lt;br&gt;
Simples, porque entre o SO e a Storage, existe um software chamado &lt;b&gt;Multipath IO&lt;/b&gt; (ou MPIO para os íntimos), nativamente o Windows Server possui este software, mas é recomendado sempre utilizar o software Multipath IO do fabricante da Storage que você contratou/comprou.&lt;/p&gt;

&lt;p&gt;E o que o MPIO faz? &lt;br&gt;
Ele define mais de um caminho usando a placa HBA (Host Bus Adapter), ou seja, ele unifica logicamente os "caminhos" que passam pela controladora. Por isso o SO enxerga um disco de 1TB e não 2, lembrando que uma vez montado o disco, eu apresento a volumetria ao SO contabilizando cada "path" usado pra montar o volume lógico, por isso o MPIO é importante.&lt;/p&gt;

&lt;p&gt;Ok, já entendemos o conceito de LUN e o que faz o MPIO, mas e o RAID?&lt;/p&gt;

&lt;p&gt;Vamos lá, RAID é uma sigla em inglês para &lt;b&gt;Redundant Array of Inexpensive Disks&lt;/b&gt;, que em tradução livre significa Matriz Redundante de Discos Independentes.&lt;br&gt;
Não entendeu? simples, RAID nada mais é que o nome dados aos discos que foram unificados logicamente para formar uma unidade de armazenamento maior.&lt;/p&gt;

&lt;p&gt;Só que existe algo muito importante para entender: Os RAIDS que você consegue montar e quais as importâncias e diferenças em cada tipo e como isso influencia no seu ambiente.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;RAID 0 (zero):&lt;/b&gt; &lt;br&gt;
Usando o conceito de “fracionamento”, quando montamos uma unidade lógica com varios discos, o arquivo ou dado gravado fragmenta-se entre os discos, aumentando o throughput, por exemplo, um RAID 0 com dois discos de 50 MB/s, resultariam num disco com velocidade de 100 MB/s.&lt;br&gt;
O RAID 0 é usado para melhorar o desempenho porém sacrificando a confiabilidade, isso significa que ele NÃO É tolerante a falhas.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vantagens: Muito rápido para acesso e baixo custo.&lt;/li&gt;
&lt;li&gt;Desvantagens: Não faz paridade de dados e não tolera falhas, em caso de corrupção de um dos sectors do disco, você pode perder toda a informação.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ftxi0zt7fc15cthgn8aq1.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ftxi0zt7fc15cthgn8aq1.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Figura de um RAID 0&lt;/p&gt;

&lt;p&gt;&lt;b&gt;RAID 1:&lt;/b&gt; &lt;br&gt;
Usa o conceito de espelhamento, no modo simples, é termos os dados de um disco em outro. É mais seguro que o RAID 0 e não há perda de desempenho para leitura.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vantagens: Segurança dos dados, caso algum setor de disco falhe, você consegue recuperar copiando os arquivos de outro disco.&lt;/li&gt;
&lt;li&gt;Desvantagens: Não é usada paridade, escrita é mais demorada e maior custo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F85h7et50uhcqn2ryxscq.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F85h7et50uhcqn2ryxscq.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Figura de um RAID 1&lt;/p&gt;

&lt;p&gt;&lt;b&gt;RAID 2:&lt;/b&gt; &lt;br&gt;
Praticamente caiu em desuso porque os novos HDs já saem de fábrica com mecanismos similares a ele e que impedem certas falhas.&lt;br&gt;
O RAID 2 é (ou era) uma técnica que dividia os dados no nível de bit usando um Código Hamming (What?) para detectar erros.&lt;br&gt;
O Código Hamming é um conjunto de códigos de correção de erros que podem ser usados ​​para detectar e corrigir "erros de bits" que podem ocorrer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4sedrsslu17g3wlf7z4b.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4sedrsslu17g3wlf7z4b.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Figura de um RAID 2&lt;/p&gt;

&lt;p&gt;&lt;b&gt;RAID 3:&lt;/b&gt;&lt;br&gt;
Usa um sistema de paridade para manter a integridade dos dados. Num sistema com 5 HDs por exemplo, o 4 primeiros servirão para armazenar dados, enquanto o último armazenará os códigos de paridade.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vantagens: Lê e escreve muito rápido e tem controle de erros.&lt;/li&gt;
&lt;li&gt;Desvantagens: Disponíveis apenas em controladoras SCSI e mais complexo de montar via software.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F40gqfl4ob7nvex98l58h.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F40gqfl4ob7nvex98l58h.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Figura de um RAID 3&lt;/p&gt;

&lt;p&gt;&lt;b&gt;RAID 4:&lt;/b&gt;&lt;br&gt;
O RAID 4 é similar ao 3, com a diferença dos dados serem divididos entre os discos. Porém a gravação requer que a paridade seja atualizada toda as vezes que ocorrerem gravações no disco, tornando-a mais lenta a gravação dos dados.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vantagens: Taxa de leitura e pode-se inserir mais discos físicos na storage e aumentar o volume lógico.&lt;/li&gt;
&lt;li&gt;Desvantagens: Taxa de gravação lenta e exige no mínimo três discos rígidos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fr0ujgc70ei5dimwy1c0u.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fr0ujgc70ei5dimwy1c0u.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Figura de um RAID 4&lt;/p&gt;

&lt;p&gt;&lt;b&gt;RAID 5:&lt;/b&gt;&lt;br&gt;
É a evolução natural das versões 2, 3 e 4, utilizando discos completos para fazer a paridade dos outros discos, ou seja, temos informação redundante.&lt;br&gt;
O sistema aqui é mais complexo e a paridade é armazenada de forma alternada em vários discos. Usa complexas fórmulas matemáticas e complexos algoritmos que comprimem os dados, gerando assim, a paridade.&lt;br&gt;
Apesar de haver uma perda de desempenho durante a gravação (devido ao calculo de paridade) em comparação com RAID 0, o RAID 5 faz a leitura e gravação simultânea de todos os discos do array o que ocasiona considerável aumento de desempenho se comparado com a utilização de apenas 1 disco.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vantagens: Mais rápido pra identificar erros e leitura rápida.&lt;/li&gt;
&lt;li&gt;Desvantagens: Escrita lenta e sistema de controle de discos mais complexo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fhf8xt3va05ea71hz7hgx.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fhf8xt3va05ea71hz7hgx.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Figura de um RAID 5&lt;/p&gt;

&lt;p&gt;&lt;b&gt;RAID 6 (Dupla Paridade):&lt;/b&gt;&lt;br&gt;
É uma evolução do RAID 5, gravando dados com duas camadas de bits de paridade, esse arranjo permite que até dois discos falhem no mesmo conjunto sem que haja perda de dados. Oferece boa tolerância a falhas, sendo utilizado em ambientes onde é priorizada a segurança dos dados armazenados.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vantagens: Possibilidade de falhar 2 Hds ao mesmo tempo sem perda de dados.&lt;/li&gt;
&lt;li&gt;Desvantagens: Precisa de pelo menos 3 Hds para ser implementado por causa da paridade, sua escrita é mais lenta, controle de dados também é complexo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsa9sjuzpnjiuqlatcyoa.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsa9sjuzpnjiuqlatcyoa.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Figura de um RAID 6&lt;/p&gt;

&lt;p&gt;&lt;b&gt;RAID 10:&lt;/b&gt;&lt;br&gt;
É um sistema que empresta características dos RAIDs 0 e 1. Esse sistema só pode ser usado com mais de 4 discos e SEMPRE em número par.&lt;br&gt;
Há uma diferença na montagem, podemos escolher "0 + 1" ou "1 + 0", mas qual a diferença?&lt;br&gt;
&lt;b&gt;0 + 1:&lt;/b&gt; É uma fusão do striping (RAID 0) e do mirroring (RAID 1), em caso de falha o sistema se transforma e atua como RAID 0.&lt;br&gt;
&lt;b&gt;1 + 0:&lt;/b&gt; Um RAID hibrido, em caso de falha o sistema se transforma e atua como RAID 1.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vantagens: Segurança contra perda de dados e pode falhar um ou dois HDs ao mesmo tempo. É considerado o mais seguro que existe.&lt;/li&gt;
&lt;li&gt;Desvantagens: Alto custo de expansão e uma solução cara. Os Drivers devem ficar em sincronismo de velocidade para ampliar a performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fqhvc6fex90o53xxvdog2.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fqhvc6fex90o53xxvdog2.JPG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Figura de um RAID 10&lt;/p&gt;

&lt;p&gt;Legal fera, mas você esqueceu de uma coisa: O que é paridade?&lt;br&gt;
Para explicar de uma forma mais simples, a paridade é a soma de todos os dispositivos utilizados numa matriz (array).&lt;/p&gt;

&lt;p&gt;Como assim?&lt;br&gt;
É um sistema de capacidade para recuperar a informação no caso de um erro de disco usando uma forma de redundância de bits. Sacou?&lt;/p&gt;

&lt;p&gt;E fechando a explicação de discos, o que são &lt;b&gt;"Hot Spare"&lt;/b&gt; ou &lt;b&gt;"Spare Disk"&lt;/b&gt;?&lt;/p&gt;

&lt;p&gt;Hot Spare ou Spare Disk é um disco sobressalente que pode ser adicionado ao array para assumir automaticamente o papel de um dos discos do próprio array quando houver falha, permitindo assim que os dados sejam restaurados automaticamente de maneira transparente ao usuário e mantendo o sistema íntegro, sem quedas de desempenho. Apesar dos spare disk não serem muito conhecidos, eles são amplamente utilizados em grandes arrays de discos em RAID 5 ou 6.&lt;/p&gt;

&lt;p&gt;Bom, até aqui aprendemos o necessário para conhecer uma storage e como estas informações serão úteis daqui pra frente para você que depende dos discos para uma boa performance e segurança dos seus ambientes.&lt;/p&gt;

&lt;p&gt;Na próxima parte, conheceremos o conceito de &lt;b&gt;TIER&lt;/b&gt; e entraremos com tudo o que aprendemos até aqui no mundo Azure, agora de forma objetiva ;).&lt;/p&gt;

&lt;p&gt;Até o próximo post!&lt;/p&gt;

&lt;p&gt;Abs,&lt;/p&gt;

</description>
      <category>azure</category>
      <category>architecture</category>
      <category>sql</category>
    </item>
  </channel>
</rss>
