BLOG | NGINX

Balanceamento de carga com NGINX e NGINX Plus, Parte 1

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Miniatura de Owen Garrett
Owen Garrett
Publicado em 20 de fevereiro de 2014

O NGINX é um proxy de aceleração capaz de acelerar uma ampla gama de aplicativos baseados em HTTP. Seu armazenamento em cache, processamento de conexão HTTP e offload aumentam significativamente o desempenho do aplicativo, especialmente durante períodos de alta carga.

Editor – O NGINX Plus Release 5 e posteriores também podem balancear a carga de aplicativos baseados em TCP. O balanceamento de carga TCP foi significativamente estendido na versão 6 com a adição de verificações de integridade, reconfiguração dinâmica, terminação SSL e muito mais. No NGINX Plus Release 7<.htmla> e posteriores, o balanceador de carga TCP tem paridade de recursos completa com o balanceador de carga HTTP. O suporte para balanceamento de carga UDP foi introduzido na versão 9.

Você configura o balanceamento de carga TCP e UDP no contexto de fluxo em vez do contexto http . As diretivas e parâmetros disponíveis diferem um pouco devido a diferenças inerentes entre HTTP e TCP/UDP; para obter detalhes, consulte a documentação dos módulos HTTP e TCP Upstream.

O NGINX Plus amplia os recursos do NGINX adicionando mais recursos de balanceamento de carga: verificações de integridade , persistência de sessão , monitoramento de atividade ao vivo e configuração dinâmica de grupos de servidores com balanceamento de carga .

Esta postagem do blog explica como configurar o NGINX para balancear a carga do tráfego para um conjunto de servidores web. Ele destaca alguns dos recursos adicionais do NGINX Plus.

Para mais informações, você também pode dar uma olhada no Guia de administração do NGINX Plus e no artigo de acompanhamento deste, Balanceamento de carga com NGINX e NGINX Plus, Parte 2 .

Tráfego de proxy com NGINX

Começaremos enviando o tráfego por proxy para um par de servidores web upstream. A seguinte configuração NGINX é suficiente para encerrar todas as solicitações HTTP para a porta 80 e encaminhá-las em um modo round-robin entre os servidores web no grupo upstream:

http { servidor {
ouvir 80;

localização / {
proxy_pass http://backend;
}
}

upstream backend {
servidor web-server1:80;
servidor web-server2:80;
}
}

Com essa configuração simples, o NGINX encaminha cada solicitação recebida na porta 80 para o web-server1 e o web-server2 , por sua vez, estabelecendo uma nova conexão HTTP em cada caso.

Definindo o método de balanceamento de carga

Por padrão, o NGINX usa o método Round Robin para distribuir o tráfego uniformemente entre os servidores, informado por um “peso” opcional atribuído a cada servidor para indicar sua capacidade relativa.

O método IP Hash distribui o tráfego com base em um hash do endereço IP de origem. Solicitações do mesmo endereço IP do cliente são sempre enviadas para o mesmo servidor upstream. Este é um método bruto de persistência de sessão que é recalculado sempre que um servidor falha ou se recupera, ou sempre que o grupo upstream é modificado; o NGINX Plus oferece melhores soluções se a persistência de sessão for necessária.

O método Least Connections encaminha cada solicitação para o servidor upstream com o menor número de conexões ativas. Esse método funciona bem ao lidar com uma mistura de solicitações rápidas e complexas.

Todos os métodos de balanceamento de carga podem ser ajustados usando um parâmetro de peso opcional na diretiva do servidor . Isso faz sentido quando os servidores têm diferentes capacidades de processamento. No exemplo a seguir, o NGINX direciona quatro vezes mais solicitações para web-server2 do que para web-server1 :

backend upstream { zona backend 64k; least_conn; servidor web-server1 peso=1; servidor web-server2 peso=4 ; }

No NGINX, os pesos são gerenciados independentemente por cada processo de trabalho. O NGINX Plus usa um segmento de memória compartilhada para dados upstream (configurados com a diretiva de zona ), para que os pesos sejam compartilhados entre os trabalhadores e o tráfego seja distribuído com mais precisão.

Detecção de falhas

Se houver um erro ou tempo limite quando o NGINX tentar se conectar a um servidor, passar uma solicitação a ele ou ler o cabeçalho de resposta, o NGINX tentará novamente a solicitação de conexão com outro servidor. (Você pode incluir a diretiva proxy_next_upstream na configuração para definir outras condições para repetir a solicitação.) Além disso, o NGINX pode retirar o servidor com falha do conjunto de servidores potenciais e, ocasionalmente, tentar solicitações nele para detectar quando ele se recupera. Os parâmetros max_fails e fail_timeout da diretiva do servidor controlam esse comportamento.

O NGINX Plus adiciona um conjunto de verificações de integridade fora de banda que realizam testes HTTP sofisticados em cada servidor upstream para determinar se ele está ativo e um mecanismo de inicialização lenta para reintroduzir gradualmente os servidores recuperados no grupo com balanceamento de carga:

servidor web-server1 slow_start=30s;

Um 'Gotcha' comum – Corrigindo o cabeçalho do host

É bastante comum que um servidor upstream use o cabeçalho Host na solicitação para determinar qual conteúdo servir. Se você receber um inesperado404 erros do servidor ou qualquer outra coisa que sugira que ele está servindo o conteúdo errado, esta é a primeira coisa a verificar. Em seguida, inclua a diretiva proxy_set_header na configuração para definir o valor apropriado para o cabeçalho:

location / { proxy_pass http://backend; # Reescreva o cabeçalho 'Host' para o valor na solicitação do cliente # ou nome do servidor primário proxy_set_header Host $host ; # Como alternativa, coloque o valor na configuração: #proxy_set_header Host www.example.com; }

Balanceamento de carga avançado usando NGINX Plus

Uma variedade de recursos avançados no NGINX Plus o tornam um balanceador de carga ideal para farms de servidores upstream:

Para obter detalhes sobre balanceamento de carga avançado e proxy, consulte a postagem de acompanhamento desta, Balanceamento de carga com NGINX e NGINX Plus, Parte 2 .

Para experimentar o NGINX Plus, comece hoje mesmo seu teste gratuito de 30 dias ou entre em contato conosco para discutir seus casos de uso de balanceamento de carga .


"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."