NGINX ip_hash balanceamento de carga não está funcionando

1

Eu configurei o NGINX para balancear a carga das solicitações no meu aplicativo da web. Um servidor front-end transmite solicitações para dois servidores de back-end. Tudo funciona bem.

No entanto, tenho usado a diretiva ip_hash para garantir que os usuários sejam atendidos pelo mesmo servidor a cada vez. Isso não parece estar funcionando - as solicitações alternam entre os dois servidores de backend e isso está causando problemas nas sessões do usuário.

A configuração deve ser bem simples, então não sei onde isso está dando errado - qualquer idéia apreciada.

upstream webservers  {
  ip_hash;
  server node1.mysite.com;
  server node2.mysite.com;
  server localhost:8080 backup;
}

server {
    listen 80;

    server_name www.mysite.com;

    location / {

        proxy_set_header    Host                $host;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto   $scheme;
        proxy_pass  http://webservers;

    }

}
    
por Mateo 26.11.2014 / 18:53

1 resposta

1

Eu encontrei uma solução, de tipos.

Parece que o ip_hash é incompatível com a diretiva de backup e, possivelmente, com qualquer outra diretiva no bloco upstream.

Depois de remover a linha de backup, o ip_hash funciona como deveria.

No entanto, isso parece estranho. Estou usando uma versão recente do NGINX - 1.6 - e não consigo encontrar nada nos documentos mais recentes para dizer que as diretivas ip_hash e backup ainda são incompatíveis.

    
por 28.11.2014 / 13:11