Quando se trata de configurar vários servidores de aplicativos para redundância, o balanceamento de carga é um mecanismo comumente usado para distribuir eficientemente solicitações de serviço de entrada ou tráfego de rede entre um grupo de servidores de back-end.
O balanceamento de carga tem várias vantagens, incluindo aumento da disponibilidade da aplicação por meio da redundância, maior confiabilidade e escalabilidade (mais servidores podem ser adicionados quando o tráfego aumenta). Também melhora o desempenho da aplicação e traz muitos outros benefícios.
Leitura recomendada: O Guia Definitivo para Segurança, Reforço e Melhoria de Desempenho do Servidor Web Nginx
O Nginx pode ser implantado como um eficiente balanceador de carga HTTP para distribuir tráfego de rede recebido e carga de trabalho entre um grupo de servidores de aplicativos, retornando em cada caso a resposta do servidor selecionado para o cliente apropriado.
Os métodos de balanceamento de carga suportados pelo Nginx são:
- round-robin – que distribui solicitações para os servidores de aplicativos de forma circular. É usado por padrão quando nenhum método é especificado,
- least-connected – atribui a próxima solicitação a um servidor menos ocupado (o servidor com o menor número de conexões ativas),
- ip-hash – onde uma função de hash é usada para determinar qual servidor deve ser selecionado para a próxima solicitação baseada no endereço IP do cliente. Este método permite a persistência da sessão (vincular um cliente a um servidor de aplicação específica).
Além disso, você pode usar pesos de servidor para influenciar os algoritmos de balanceamento de carga do Nginx em um nível mais avançado. O Nginx também suporta verificações de saúde para marcar um servidor como falho (por um período configurável de tempo, o padrão é de 10 segundos) se sua resposta falhar com um erro, evitando assim escolher esse servidor para solicitações subsequentes por algum tempo.
Este guia prático mostra como usar o Nginx como um balanceador de carga HTTP para distribuir as solicitações de clientes entre dois servidores, cada um com uma instância da mesma aplicação.
Para fins de teste, cada instância da aplicação é identificada (na interface do usuário) para indicar o servidor em que está sendo executada.
Configuração do Ambiente de Teste
Load Balancer: 192.168.58.7 Application server 1: 192.168.58.5 Application server 2: 192.168.58.8
Em cada servidor de aplicação, cada instância da aplicação é configurada para ser acessada usando o domínio tecmintapp.lan
. Supondo que este seja um domínio completamente registrado, adicionaríamos o seguinte nas configurações de DNS.
A Record @ 192.168.58.7
Este registro indica às solicitações dos clientes para onde o domínio deve ser direcionado, neste caso, para o balanceador de carga (192.168.58.7). Os registros A
de DNS aceitam apenas valores IPv4. Alternativamente, o arquivo /etc/hosts nas máquinas dos clientes também pode ser usado para fins de teste, com a seguinte entrada.
192.168.58.7 tecmintapp.lan
Configurando o Balanceamento de Carga do Nginx no Linux
Antes de configurar o balanceamento de carga do Nginx, você deve instalar o Nginx em seu servidor usando o gerenciador de pacotes padrão para a sua distribuição, conforme mostrado.
$ sudo apt install nginx [On Debian/Ubuntu] $ sudo yum install nginx [On CentOS/RHEL]
Em seguida, crie um arquivo de bloco de servidor chamado /etc/nginx/conf.d/loadbalancer.conf
(dê um nome de sua escolha).
$ sudo vi /etc/nginx/conf.d/loadbalancer.conf
Depois, copie e cole a seguinte configuração nele. Esta configuração é padrão para round-robin, pois nenhum método de balanceamento de carga está definido.
upstream backend { server 192.168.58.5; server 192.168.58.8; } server { listen 80 default_server; listen [::]:80 default_server; server_name tecmintapp.lan; location / { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://backend; } }
Na configuração acima, a diretiva proxy_pass
(que deve ser especificada dentro de uma localização, /
neste caso) é usada para encaminhar uma solicitação aos servidores HTTP proxy referenciados pela palavra backend, na diretiva upstream (usada para definir um grupo de servidores). Além disso, as solicitações serão distribuídas entre os servidores usando um mecanismo de balanceamento de round-robin ponderado.
Para usar o mecanismo de menor conexão, use a seguinte configuração
upstream backend { least_conn; server 192.168.58.5; server 192.168.58.8; }
E para habilitar o mecanismo de persistência de sessão ip_hash
, use:
upstream backend { ip_hash; server 192.168.58.5; server 192.168.58.8; }
Você também pode influenciar a decisão de balanceamento de carga usando pesos de servidor. Usando a seguinte configuração, se houver seis solicitações de clientes, o servidor de aplicativos 192.168.58.5 receberá 4 solicitações e 2 irão para 192.168.58.8.
upstream backend { server 192.168.58.5 weight=4; server 192.168.58.8; }
Salve o arquivo e saia. Em seguida, certifique-se de que a estrutura de configuração do Nginx está correta após adicionar as alterações recentes, executando o seguinte comando.
$ sudo nginx -t
Se a configuração estiver correta, reinicie e ative o serviço Nginx para aplicar as alterações.
$ sudo systemctl restart nginx $ sudo systemctl enable nginx
Testando o Balanceamento de Carga do Nginx no Linux
Para testar o balanceamento de carga do Nginx, abra um navegador da web e use o seguinte endereço para navegar.
http://tecmintapp.lan
Assim que a interface do site carregar, tome nota da instância da aplicação que foi carregada. Em seguida, atualize continuamente a página. Em algum momento, a aplicação deve ser carregada a partir do segundo servidor, indicando o balanceamento de carga.

Você acabou de aprender como configurar o Nginx como um balanceador de carga HTTP no Linux. Gostaríamos de saber sua opinião sobre este guia, e especialmente sobre o uso do Nginx como balanceador de carga, por meio do formulário de feedback abaixo. Para obter mais informações, consulte a documentação do Nginx sobre como usar o Nginx como um balanceador de carga HTTP.
Source:
https://www.tecmint.com/use-nginx-as-http-load-balancer-in-linux/