responses no balanceamento de carga nginx

2

Suponha que eu tenha o nginx configurado com 3 upstreams, e eu faça um pedido para baixar um arquivo. Um dos três upstreams lidará com o pedido.

A resposta virá diretamente do upstream? ou a resposta virá do gateway (a máquina que configura os upstreams)?

Se é o primeiro caso, como isso funciona? É semelhante ao TCP Handoff, mas no nível HTTP?

    
por Gregorio Di Stefano 26.05.2014 / 23:50

2 respostas

2

Uma configuração em que as respostas são enviadas diretamente dos back-ends para os clientes é chamada de balanceamento de carga do DSR. O DSR é curto para retorno direto do servidor. Em tal configuração, o balanceador de carga simplesmente encaminha cada pacote TCP para o backend selecionado para esta conexão, atualizando o endereço de destino na camada de protocolo usada diretamente abaixo do IP, se a camada abaixo do IP não for diretamente adequada, um cabeçalho IP extra pode ser inserido efetivamente tunelamento de pacotes do frontend para o backend.

O DSR é um pouco mais complicado em termos de rede, mas tem benefícios de desempenho e mantém o IP do cliente diretamente visível para o back-end.

Eu não sei ao certo se o nginx suporta balanceamento de carga DSR. Algumas pesquisas sugerem que isso não acontece. Tópicos do fórum Nginx de três anos atrás

    
por 27.05.2014 / 01:10
1

No nginx, quando você solicita o download de um arquivo, o gateway (seu front-end do nginx, imagino) seleciona um back-end para a solicitação e consulta esse servidor para que o arquivo seja enviado de volta para você. Esses dados são transmitidos pelo gateway para o solicitante, portanto, para o cliente, parece que o arquivo está vindo do balanceador, e não do seu back-end. É por isso que o DNS Anycast (ou simples DNS de round-robin) é normalmente usado com CDNs em vez de um balanceador direto.

    
por 27.05.2014 / 04:23