Como o nginx distribui o tráfego entre IPs associados a um nome DNS upstream?

4

Com esta configuração:

upstream some_upstream {
  server some-elb.us-east-1.elb.amazonaws.com:80;
}

Se algum-elb.us-east-1.elb.amazonaws.com mapear para 2 endereços IP, como o nginx distribuirá solicitações entre eles? Rodada-robin? (Diga para a versão 1.1.19, caso o comportamento tenha mudado em algum momento.)

Além disso, eu li aqui que os caches nginx Resultados do DNS na inicialização. Se você usar uma variável, ela será atualizada, mas somente se você tiver configurado um resolvedor de DNS. Então, se eu não tiver configurado um resolvedor de DNS, o que acontece se um dos IPs de algum-elb.us-east-1.elb.amazonaws.com mudar? O nginx continuará a enviar tráfego para o mesmo conjunto de IPs encontrado na inicialização?

    
por sandinymyjoints 23.06.2015 / 19:05

1 resposta

7

Tenha em atenção que nginx 1.1.19 é uma versão de desenvolvimento que foi há mais de 3 anos . Como um bom administrador de sistemas, nada desse tipo deve ser implementado em seus negócios. Vamos nos concentrar em sua pergunta atual agora.


Como explicado pela documentação:

A domain name that resolves to several IP addresses defines multiple servers at once.

By default, requests are distributed between the servers using a weighted round-robin balancing method.


Para a parte do resolvedor: yes nginx emitirá as pesquisas de nome de domínio para server entradas na inicialização e, em seguida, armazenará em cache qualquer resultado até você reiniciá-lo, se você usar nomes de domínio estáticos em sua configuração.

Seu link aponta para um post sobre proxy reverso e particularmente o tratamento de nomes de domínio na diretiva proxy_pass . Este é um caso diferente em que você precisa usar variáveis no valor da diretiva para forçar o nginx a atualizar seu cache DNS: usar a diretiva resolver para este caso em particular não é suficiente.

Agora, voltando à diretiva server . Usar a diretiva resolver e adicionar o parâmetro resolve permitirá que os registros DNS de monitoramento sejam alterados e recarregados automaticamente nova lista de servidores :

resolve
   monitors changes of the IP addresses that correspond to a domain name of 
   the server, and automatically modifies the upstream configuration without 
   the need of restarting nginx (1.5.12).

   In order for this parameter to work, the resolver directive must be
   specified in the http block. 
    
por 23.06.2015 / 23:56