Criação de Load Balancer e Balanceamento de Carga entre Máquinas Virtuais

Thiago Pontes
7 min readAug 3, 2021

--

O objetivo deste post é abordar o tema Load Balancer e demonstrar através de testes, como é possível balancear carga entre máquinas virtuais.

Para o laboratório a seguir iremos fazer os seguintes passos:

· Provisionar 3 máquinas virtuais

· Instalar IIS em todas.

· Criar Load Balancer

Primeiramente iremos provisionar as 3 máquinas utilizando terraform com o objetivo de ganhar tempo na nossa demonstração, mas você poderá fazer o mesmo processo através do Portal da Azure.

Caso desejem utilizar o template a seguir, segue repositório para criação das máquinas virtuais: https://github.com/thiago88sp/templates_terraform/tree/main/virtual_machine_multi

No arquivo main.tfvars iremos apontar a quantidade nodes desejamos provisionar ao mesmo tempo:

Lembrando que o template criado, cria máquinas idênticas, ou seja, com mesmo S.O, size, location e demais configurações.

No exemplo a seguir o state iremos armazená-lo em local remoto, no exemplo o mesmo será inserido em uma storage account.

Uma vez iniciado o processo de init, iremos validar o nosso plano, para posteriormente aplicar as configurações desejada, na imagem abaixo já estou aplicando o apply (terraform apply -var-file vars/main.tfvars).

O plano a seguir provisionará 3 VMs com Windows Server 2016 Datacenter.

Abaixo podemos notar que as 3 VMs foram implantadas com sucesso. (lb-lab-00, lb-lab-01, lb-lab-02)

Agora iremos conectar nas VMs criadas e instalar o IIS (Internet Information Services), para isso iremos através de Power Shell executar o seguinte comando nas 3 VMs:

Install-WindowsFeature -Name Web-Server -IncludeAllSubFeature -IncludeManagementTools

O processo a seguir iremos realizar nas 3 VMs criadas.

· Conectar na VM utilizando RDP

· Após conectado na VM, iremos instalar o IIS, conforme imagem abaixo:

· Validar a instalação do IIS

Após finalizado o processo de instalação, podemos pegar o Public IP da VM e colocá-lo no navegador, com o objetivo de validar a instalação do IIS.

Agora no caminho a seguir, iremos fazer uma pequena alteração no ISS com o objetivo que fique claro a VM em que está rodando o ISS.

Segue o caminho: C:\inetpub\wwwroot

Iremos alterar o arquivo iisstart.png.

O exemplo acima, será feito nas 3 máquinas virtuais.

O próximo passo é remover os Publics Ips das VMs, pois utilizaremos o Load Balancer com Public IP não sendo necessário Ips públicas para as máquinas virtuais.

Uma vez desassociado os IPs públicos das VMs não é mais possível a conexão com os IPs públicos.

No passo acima finalizamos o processo de criação das nossas VMs e instalação do IIS a próxima parte do nosso laboratório, iremos prosseguir com a criação do nosso Load Balancer.

Criação de Load Balancer

No processo a seguir criaremos o nosso Load Balancer, a ideia desta publicação é demonstrar um Load Balancer público, simulando uma camada de Front End, para que de uma maneira macro você possa perceber as possibilidades dadas ao criar um LB.

Para isso iremos prosseguir com o seguinte caminho:

All Services > Networking > Load Balancers

Abaixo as imagens relacionadas ao caminho acima.

Em seguida prosseguiremos com o botão Create para iniciar a configuração do nosso Load Balancer.

Realizeramos os seguintes preenchimentos:

Um ponto importante, recomenda-se para ambientes produtivos SKU Standard, no exemplo acima estamos criando o nosso IP público para que a partir dele possamos testar o nosso balanceamento entre as máquinas virtuais.

Uma vez preenchido todas as informações, basta seguirmos com a criação.

Em seguida, vamos para a configuração do nosso recurso criado:

A seguir iremos configurar os seguintes itens:

· Backend pools

· Health probes

· Load balancing rules

Backend pools

Neste passo iremos criar o pool de máquinas virtuais ou conjuntos de escala de máquina virtual para que o mesmo seja as máquinas que ficarão por trás do nosso Load Balancer.

A seguir daremos um nome ao nosso backend pool e selecionaremos a VNET em que nosso LB será colocado, além disso adicionaremos as máquinas virtuais que provisionamos, uma vez selecionado todas essas informações, basta clicar em ADD para que nosso backend pool seja criado.

Desta forma, temos o nosso backend pool configurado.

Health probes

O balanceador de carga monitora o status do seu aplicativo com uma health probe. A health probe adiciona ou remove VMs do balanceador de carga com base na resposta às health probe. A seguir vamos configurar nossa health probe do nosso balanceador.

Ao clicar em ADD iremos preencher informações como Nome, Protocolo, Porta, Intervalo e quantidade falhas consecutivas. Uma vez preenchido, basta clicar em ADD.

Abaixo temos o nosso Health Probe adicionado e devidamente configurado.

Load balancing rules

Uma regra de balanceador de carga é usada para definir como o tráfego é distribuído para as VMs. Você define a configuração de IP de front-end para o tráfego de entrada e o pool de IPs de back-end para receber o tráfego. A porta de origem e de destino são definidas na regra.

A seguir iniciaremos a configuração da nossa rule.

Ao clicar em ADD, daremos início a configuração da nossa rule.

Para a configuração do nosso LB, daremos o nome a nossa rule, definiremos o Front End IP que a porta de entrada do LB, a porta de entrada e a porta que seu app, host ou vmss escutará no backend no exemplo em que estamos criando será na porta 80, mas tudo irá depender da porta ao qual seu serviço responde, apontaremos o nosso backend pool já criado anteriormente e a health probe que será utilizada para validação de integridade do nosso serviço. As demais configurações iremos manter no padrão atual, mas lembre-se há outras opções a serem utilizadas para criação do Load Balancer, uma vez finalizado a rule, basta clicar em ADD.

A seguir nossa rule encontra-se devidamente configurada.

Então bora partir validar se o nosso LB foi devidamente criado.

Para testarmos o nosso IP, iremos pegar o nosso IP público do nosso LB no menu Overview, conforme a imagem mostrada abaixo:

No nosso exemplo acima o IP do nosso LB é 191.234.180.149, agora pegaremos esse IP e testaremos em nosso navegador.

Como podemos notar acima o nosso LB encontra-se funcionando corretamente, no nosso caso ele encontra-se apontando para o lb-lab-00, para que possamos validar se o balanceamento encontra-se funcional, iremos para o host lb-lab-00 automaticamente ele deverá direcionar o tráfego para um outro host do backend pool.

Após pararmos nosso host, vamos observar novamente nosso LB.

Ao observarmos a nosso URL, notamos que agora o host que encontra-se respondendo a minha chamada é o lb-lab-01.

Desta forma, se você chegou até aqui com este laboratório, parabéns você conseguiu configurar devidamente seu Load Balancer.

Espero que o conteúdo postado tenha sido útil para ti e se foi peço que compartilhe com os colegas e amigos.

Grande abraço a todos e até a próxima!

Ref. https://docs.microsoft.com/pt-br/azure/load-balancer/

--

--

Thiago Pontes

Graduado em Redes de Computadores e pós-graduado em Gestão de TI, atuo como Gerente Cloud.