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.
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

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

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

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
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/
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
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:
Ao atualizar a pagina vemos que ele altera o trafego para o servidor 2.
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