Este site usa cookies para garantir que você obtenha a melhor experiência, caso tenha duvidas acesse a nossa Política de Privacidade

Aceitar!

NGINX load balancer.

Criação de um load balance de servidores web usando o NGINX.

Postado por metavops 15 de janeiro de 2022.

O que é o NGINX ?

O NGINX é um serviço, que oferece diversos recursos como: servidor HTTP, proxy reverso, proxy de e-mail IMAP/POP3, etc.
O NGINX esta sob a licença BSD-like 2-clause, uma de suas principais caracteristicas é de que ele é mais leve e suporta mais requisições que seu concorrente o Apache, porem a comparação e analise tecnica entre esses 2 serviços vai ficar para outro artigo.
Nesse POST eu vou mostrar como criar/configurar um load balance de servidores web usando o NGINX para que você possa hospedar sua aplicação de forma segura, garantindo maior disponibilidade e escalabilidade.
Caso queira saber mais sobre o NGINX e o Apache clique nos links abaixo para acessar o site oficial de cada um deles.
NGINX
Apache

O que é load balance ?

O load balance como o proprio nome já diz, consiste no ato de balancear a carga entre 2 ou mais recursos para manter a estabilidade, garantir a disponibilidade de uma aplicação ou recurso, o load balance é bastante importante em sistemas e redes de computadores com muito trafego pois ajuda a não sobrecarregar um recurso especifico. O load balance que pode ser feito tanto em software tanto em hardware, um exemplo disso são os servidores que possuem 2 ou mais fontes de alimentação, tambem é possivel possuir 2 links de internet e através deles balancear a carga e através de um fail over configurar um para assumir o outro quando houver quedas.

Como vai funcionar ?

Neste pequeno projeto de exemplo vou utilizar 1 instancia(ubuntu) com o NGINX instalado, e vou utilizar mais 2 instancias(centOS) onde cada uma delas recebe um IP interno e executa um webserver por meio do apache2.

A principal intensão nesse caso, é utilizar o NGINX como master para balancear o trafego entre 2 servidores web na qual vão ser os slave's. juninho-tecnologia

Instalando o NGINX.

Vamos começar atualizando os repositorios do nosso sistema, e aplicando a atualizações baixadas logo em seguida, para isso digite o comando abaixo:
apt update && apt upgrade -y

juninho-tecnologia

Após atualizarmos nosso servidor vamos instalar o nginx, para isso digite o comando abaixo:
apt install nginx -y

juninho-tecnologia

Após instalarmos o NGINX vamos abrir as portas do serviço no firewall do servidor, para isso use o comando abaixo:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Ao executar o comando acima, você esta abrindo a porta 80, na qual vai servir para rodar o protocolo HTTP(80).

Após instalarmos o NGINX, e abrirmos as portas do serviço, vamos verificar se o serviço esta funcionando, para isso digite comando abaixo:
systemctl status nginx

juninho-tecnologia

podemos confirmar se ele esta ativo ou não olhando a terceira linha, verifique que ele esta com o status de:"Active: active (runing)" que significa que o serviço esta ativo.

Configurando o load-balance.

Para iniciarmos a configuração do load balance, é necessario estar parando o serviço do NGINX, para isso use o comando abaixo:
systemctl stop nginx
caso queira saber se o serviço parou, use o comando:
systemctl status nginx
juninho-tecnologia verifica que na imagem mostra como:"Active: inactive(dead)" isso significa que nosso serviço esta parado.

Aṕos pararmos o serviço do NGINX, vamos acessar a pasta "sites-available", para isso digite o comando abaixo:
cd /etc/nginx/sites-available/
juninho-tecnologia Observer que após digitarmos o comando:
ls
Ele nos retorna um arquivo chamado "default", é a partir desse arquivo na qual vai ser editado para a configuração do load balance para isso vamos primeiro fazer um backup do arquivo de configuração padrão, para isso use o comando:
cp default default-bkp

Após gerar o backup do arquivo "default" vamos editar o codigo dentro dele, para isso você pode estar usando um editor de texto de sua preferencia, neste caso eu estou usando o nano, segue o comando abaixo:
nano default
Após abrir o arquivo, apague todo o conteudo dele, e digite o codigo abaixo e salve:

# definindo um grupo atraves do comando upstream, e nomeei o grupo como nodes
upstream nodes {

#adiciondo os servidores após o comando "server"	
server 10.0.0.183; 
server 10.0.0.182;

}

server{
	# lendo a porta 80 do nginx
	listen 80;
	server_name  localhost;
    
 # no location apontamos o grupo "nodes" que definimos acima no recurso proxy_pass
	location /{
		proxy_pass http://nodes;
	}
}

							

Prontinho agora vamos testar se as configurações que realizamos podem ser aplicadas, ou se existe algum erro no nosso processo de configuração, para isso digite o comando:
nginx -t
juninho-tecnologia Se caso a saida do comando for essa da imagem significa as configurações foram aplicadas corretamente e de que não há nenhum erro em nossos arquivos de configuração.
Com isso podemos startar nosso serviço novamente usando o comando:
systemctl start nginx

Load balance em funcionamento.

Para testar o load balance, é so acessarmos o IP ou dominio do servidor NGINX para que ele divida a carga entre os 2 servidores, ao acessarmos vemos que ele exibi o servidor 1:
juninho-tecnologia
Ao atualizar a pagina vemos que ele altera o trafego para o servidor 2.
juninho-tecnologia

Conclusão.

O NGINX possui diversos recursos, e é uma ferramenta muito usada em diversas aplicações, neste artigo eu procurei trazer algo simples e espero que de facil entendimento sobre a utilização do NGINX.

Eu cheguei a criar um pequeno projeto onde realizo o mesmo projeto porem utilizando o container docker por meio do docker-compose, caso queira verificar acesse o link abaixo:

Docker-compose-nginx-load-balance


Deixe seu comentario ou sugestão sobre o post.