Balanceamento de carga no nginx: upstream, métodos e health checks

Balanceamento de carga no nginx

Load balancer no nginx: upstream, métodos, pesos e saúde | We.Inc

Configure o nginx como load balancer: o bloco upstream, round robin, least_conn, ip_hash e hash, pesos, max_fails e fail_timeout, servidores de backup e um gerador de config.

Para balancear carga com o nginx, liste seus servidores de aplicação em um bloco upstream e aponte o proxy_pass para o nome dele. As requisições se revezam em round robin, a menos que você adicione least_conn, ip_hash, hash ou random. Cada linha server pode ter weight, max_fails e fail_timeout para health checks passivos, além das flags backup ou down.

Métodos de balanceamento de carga do nginx

Distribuir o tráfego entre várias cópias de uma aplicação é uma das tarefas mais antigas do nginx, e a configuração inteira cabe em uma dúzia de linhas. O gerador abaixo escreve o bloco upstream a partir de uma lista de servidores, avisa sobre combinações que o nginx rejeita e mostra a fatia de requisições de cada servidor quando há pesos. A referência depois dele cobre cada parâmetro de server com o seu padrão.

Perguntas frequentes

O nginx open source tem health checks ativos?

Não. A diretiva health_check pertence ao NGINX Plus, que é comercial. O nginx open source depende de checks passivos: se uma requisição a um servidor falha max_fails vezes dentro de fail_timeout, o servidor é pulado por fail_timeout e depois testado de novo com tráfego real.

Quais são os padrões de max_fails e fail_timeout?

max_fails tem padrão 1 e fail_timeout, 10 segundos. Portanto, uma única tentativa com falha tira um servidor de circulação por dez segundos. Definir max_fails=0 desliga essa contagem para aquele servidor.

Como deixar sessões fixas (sticky) no nginx?

Use ip_hash para manter cada endereço de cliente em um servidor, ou hash com uma variável de cookie como $cookie_session para um controle mais fino. Diretivas sticky baseadas em cookie só existem na edição comercial.

O que faz o parâmetro weight?

Ele muda quantas requisições um servidor recebe em relação aos outros. Com pesos 3, 1 e 1, o primeiro servidor recebe cerca de três de cada cinco requisições em round robin. O peso padrão é 1.

O nginx consegue balancear conexões WebSocket?

Sim. Aponte o proxy_pass para o upstream e repasse os headers Upgrade e Connection. least_conn combina melhor com sockets de longa duração do que round robin, porque conta quantas conexões cada servidor já mantém.

Onde cada peça fica

Health checks passivos, passo a passo

Parâmetros de server e seus padrões

Parâmetros de uma linha server dentro do upstream

Exemplos completos

Round robin com um reserva

Dois principais dividem a carga; o terceiro só responde se os dois estiverem fora.

least_conn com conexões reutilizadas

keepalive guarda conexões ociosas com os backends; as duas linhas de proxy fazem isso funcionar.

Afinidade de cache por URL

Cada URL continua caindo no mesmo servidor de cache; consistent mantém a maior parte dos mapeamentos quando um servidor é adicionado ou removido.

Nome do upstream

Método

Round robin (padrão)

Chave de hash

Conexões keepalive ociosas (0 para nenhuma)

Servidores

Endereço e porta

Peso

fail_timeout (s)

Fatia

Remover servidor {n}

Adicionar servidor

O nginx rejeita servidores backup com hash, ip_hash e random. Remova a flag backup ou mude o método.

Todos os servidores principais estão marcados como down, então nenhum pode receber tráfego.

Config

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site