2.5. Configurando o NGINX como um balanceador de carga HTTP
Você pode usar o recurso de proxy reverso NGINX para balancear o tráfego de carga. Este procedimento descreve como configurar o NGINX como um balanceador de carga HTTP que envia solicitações para diferentes servidores, com base em qual deles tem o menor número de conexões ativas. Se os dois servidores não estiverem disponíveis, o procedimento também define um terceiro host por razões de fallback.
Pré-requisitos
- O NGINX é instalado como descrito em Seção 2.1, “Instalando e preparando o NGINX”.
Procedimento
Edite o arquivo
/etc/nginx/nginx.conf
e adicione as seguintes configurações:http { upstream backend { least_conn; server server1.example.com; server server2.example.com; server server3.example.com backup; } server { location / { proxy_pass http://backend; } } }
A diretiva
least_conn
do grupo anfitriãobackend
define que a NGINX envia solicitações paraserver1.example.com
ouserver2.example.com
, dependendo de qual anfitrião tem o menor número de conexões ativas. NGINX usaserver3.example.com
apenas como backup caso os outros dois hospedeiros não estejam disponíveis.Com a diretiva
proxy_pass
definida parahttp://backend
, NGINX atua como um proxy reverso e usa o grupo anfitriãobackend
para distribuir solicitações com base nas configurações deste grupo.Em vez do método de balanceamento de carga
least_conn
, você pode especificar:- Nenhum método para usar round robin e distribuir os pedidos uniformemente entre os servidores.
-
ip_hash
para enviar solicitações de um endereço de cliente para o mesmo servidor com base em um hash calculado a partir dos três primeiros octetos do endereço IPv4 ou de todo o endereço IPv6 do cliente. -
hash
para determinar o servidor com base em uma chave definida pelo usuário, que pode ser uma string, uma variável ou uma combinação de ambas. O parâmetroconsistent
configura que o NGINX distribui as solicitações por todos os servidores com base no valor da chave definida pelo usuário. -
random
para enviar solicitações para um servidor selecionado aleatoriamente.
Reinicie o serviço
nginx
:#
systemctl restart nginx