Fala pessoal!
Esse é meu primeiro post aqui no Mundo TI Brasil e para começar, gostaria de escrever um pouco sobre um recurso muito bacana no Windows Server e que, em poucos passos podemos entregar uma aplicação/website escalável e altamente disponível, esse recurso é o Network Load Balancing.
Antes de começar, gostaria de dizer que a ideia desse post não é explicar passo a passo toda a configuração do NLB, mas sim, uma introdução ao recurso e a instalação do mesmo. No próximo post (provavelmente será um vídeo) irei mostrar todas as etapas da configuração, passo a passo. Agora sim, para começar, vamos entender quem é esse “cara”.
Conceito
Network Load Balancing ou simplesmente NLB é uma feature presente no Windows Server 2012 R2 (em outras versões também está disponível) usado para balancear cargas de trabalho entre um conjunto de servidores. Esse conjunto de servidores é chamado de “cluster” ou “farm” e cada servidor presente nesse cluster pode ser chamado de “host” ou “nó”. Existem duas características no NLB que o faz sensacional, são elas: alta disponibilidade e escalabilidade.
Alta disponibilidade
Basicamente, a alta disponibilidade provê que determinado serviço continue online mesmo que ocorra algum tipo de problema, por exemplo: queda do host, problema com SO, etc. A principal ideia da alta disponibilidade é diminuir o “downtime” de um determinado serviço. Para isso, o NLB consegue detectar “quedas” de hosts dentro do cluster e redistribuir a carga para os hosts restantes.
Escalabilidade
Escalabilidade é a maneira como um computador, serviço ou aplicação pode crescer para atender às crescentes requests de clientes para esse serviço/aplicação. Para clusters NLB, a escalabilidade é a capacidade de adicionar de forma incremental um ou mais hosts a um cluster existente.
Onde utilizar o NLB?
No cenário mais simples, o NLB é utilizado em Web Servers (IIS). Praticamente, um grupo de computadores trabalhando para suportar um website ou uma aplicação web. Porém, pode-se utilizar o NLB para suportar outros tipos de funções, como: Remote Desktop Servers, VPN ou até mesmo proxy/firewall.
A figura acima exemplifica bem o funcionamento do NLB dentro de um cenário simples. Na etapa de configuração é criado um IP Virtual no qual todos os clientes acessam o serviço (website, aplicação, proxy). No momento que o cluster recebe as requests dos clientes, ele faz o balanceamento inteligente (sim, inteligente pelo fato dele ser capaz de identificar o host com uma maior performance disponível para encaminhar as requests) entre os servidores.
Instalação do Network Load Balancing
Não existe segredo para instalação do NLB utilizando interface gráfica, porém, para nossa dinâmica ficar mais produtiva, vamos instalar utilizando powershell. Em meu cenário existem quatro servidores: WINSVR001, WINSVR002, WINSVR003 e WINSVR004, todos com Windows Serve 2012 R2.
Para nossa dinâmica, vou utilizar os servidores 003 e 004 para serem hosts (nós) do cluster. A ideia aqui é usar o mínimo de esforço para fazer isso, por isso, no WINSVR001 vou instalar remotamente a feature nos servidores 003 e 004.
Para fazer a instalação através do powershell, utilize o comando:
Invoke-Command -Computername WINSVE003, WINSVR004 -command {Install-WindowsFeature NLB}
Repare que ocorreu um erro, a razão disso é simples… Antes de tudo, é necessário ativar o gerenciamento remoto (WinRM) nos servidores, para isso, abra o powershell no servidor e digite o comando:
Enable-PSRemoting –force
Pronto, agora está ativado o WinRM nos hosts (Esse é o único momento que conectei nos hosts, o restante foi feito pelo servidor 001).
Rodando novamente o comando para instalar o NLB via powershell, e… “voilà” instalado perfeitamente!
Para verificar, basta executar o comando abaixo.
Invoke-Command -Computername WINSVR003, WINSVR004 -command {Get-WindowsFeature NLB}
Agora sim, os servidores já estão com o NLB instalado.
Requerimentos e recomendações para NLB
– Todos os hosts (nós) devem estar na mesma subrede;
– Tempo de resposta do cliente para o cluster seja menor que 250ms;
– Adaptadores de Rede precisam utilizar protocolo TCP/IP, suporta IPv4 e IPv6;
– Os servidores que irão fazer parte do NLB devem ter IP estático (lógico, rs). Além de que, o NLB desabilita o DHCP nas interface dos nós;
– Em cenários comuns, o NLB é utilizado para aplicações stateless (sem monitoração de estado), por exemplo, um website. No caso de uma aplicação, o banco de dados deve estar em um volume que seja compartilhado entre os hosts.
Pra finalizar o post, vou resumir as principais características do NLB, são elas:
– Recurso utilizado para balancear a carga de trabalho sobre um serviço (website/aplicação);
– Alta disponibilidade – Provê disponibilidade caso um host falhe;
– Escalável – você pode adicional outros hosts para atender a demanda de acessos;
– Host (nós) podem ser virtuais ou físicos;
– Suporte de no mínimo 2 até 32 nós.
Bom pessoal, isso é tudo por hoje. Conforme mencionei no início do post, a ideia aqui era passar uma introdução ao NLB. No próximo post irei apresentar passo a passo toda configuração para criar um cluster NLB. Deixe seu feedback nos comentários!
Obrigado pela leitura, fiquem com Deus e até a próxima!
Ótimo post Rodrigo, muito bem elaborado e explicado. Uma ótima ferramenta! Parabéns e sucesso Sempre!
Grande mestre Osanam, muito obrigado pelo feedback. Sim, é uma ferramenta incrível, é possível realizar grandes projetos com ela, sem duvida alguma!
Post de excelente qualidade, e seja bem vindo a equipe Rodrigo.
Abraços
Obrigado pelo feedback, Ricardo! É uma honra fazer parte dessa equipe!
Parabéns muito bom, estou estudando sobre NLB, me tirou algumas duvidas, ficou claro e de fácil entendimento…
Ansioso pela continuação
Obrigado João, fico feliz que pude contribuir com seu aprendizado. Obrigado pelo feedback, logo logo vou postar a continuação!
Abs.
Parabéns, muito bom o post.
Trabalho com alta disponibilidade em pools no Xenserver/FreeNAS e seu post foi esclarecedor. aguardando o próximo.
Vamos nos aprofundar um pouco mais.
Tks. :-)
Preciso de um socorro.
Montei a estrutura de NLB, testei com o IIS para saber se realmente está funcionando.
Tudo OK, dentro do ambiente interno. Qualquer maquina dentro da mesma Subrede enxergam o endereço do cluster, o site sobe, legal.
Mas quando vou testar o acesso externo, apenas os endereços IPs dos 2 Hosts funcionam.
Quando eu tento acessar de fora, atraves do IP definido no cluster, não vai…
Agradeço se puderem me ajudar.
O que ajustar em especial no firewall? Tem algo a mais para fazer?
obrigado.