Os múltiplos servidores Nginx carregam o mesmo endereço IP para o mesmo back-end com a diretiva ip_hash?

4

Eu tenho duas máquinas Nginx separadas. O domínio usa DNS round-robin e possui dois registros A, um para cada um dos dois servidores front-end Nginx.

Os dois servidores Nginx usam as solicitações de diretivas e proxy ip_hash para os mesmos servidores de back-end.

Um endereço IP que vai para o primeiro servidor Nginx sempre será roteado para o mesmo servidor de back-end que o mesmo endereço IP que vai para o outro servidor Nginx?

Isso pode ser útil: O que o IP faz nginx usa para sessões pegajosas de ip_hash?

    
por Justin Meltzer 29.05.2013 / 20:36

2 respostas

1

Os servidores Nginx não estão cientes uns dos outros com suas próprias tabelas ip_hash. Portanto, um servidor específico roteará o tráfego para o back-end com base em seu próprio pool ip_hash. Qualquer consistência entre os servidores Nginx frontend seria devida apenas ao acaso.

Agora, na prática, isso pode ser um problema menor, pois é improvável que o DNS do cliente seja alterado durante a sessão. Como resultado, eles atingirão o mesmo servidor front-end e serão roteados para o mesmo servidor de back-end.

Outra abordagem para isso é usar algo como o HAProxy, que pode ser balanceado em várias métricas, por exemplo, como um parâmetro de URL. Seu aplicativo pode definir um parâmetro para garantir que o cliente seja roteado para o mesmo back-end. É claro que é normal normalizar seus dados em seus back-ends com uma ferramenta distribuída, mas isso pode ser um desafio com aplicativos legados.

    
por 29.05.2013 / 21:09
0

De acordo com os documentos:

The key for the hash is the class-C network address or the entire IPv6-address of the client.

Então, em teoria, isso deve funcionar.

Outro problema que pode surgir é quando um de seus back-ends falha. O Nginx não faz nenhuma promessa sobre o backend que o cliente acessa em seguida.

Mas, sim, o HAProxy ftw.

    
por 05.06.2013 / 19:41