NginX atinge apenas um backend com o ip_hash ativado…?

1

A configuração que estamos tentando avaliar é bastante simples: o NginX em uma máquina (atualmente 1vCPU, 2 GB de RAM) e dois Tomcats de back-end em duas máquinas separadas. Configuração principal da seguinte forma:

worker_processes  1;
events {
    worker_connections  2048;
    use epoll;
    # multi_accept on;
}
http {
    # define load-balancing upstream
    upstream tomcatUpstream {
        ip_hash;
        server 192.168.xx.51:8080;
        server 192.168.xx.52:8080;
    }

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    sendfile      on;
    tcp_nopush    on;
    tcp_nodelay   on;

    keepalive_timeout  0;     #  45;
    # keepalive_requests 4096;

    reset_timedout_connection on;
    client_body_timeout 30;
    send_timeout 15;
}

Tentamos executar ab -c10 -n20 de 3 máquinas diferentes (3 IPs públicos diferentes - 2 cidades diferentes, 3 ISPs diferentes, embora dentro do mesmo país) ao mesmo tempo.

Não importa o que eu mudei ou tentei dentro da configuração (epoll sim / não, multi_accept ativado / desativado, keep-alive 0 /! = 0, reiniciar, excluindo var / cache / nginx ...), somente um back-end Tomcat foi atingido, e sempre o primeiro por ordem na lista upstream, como eu tentei mudar a ordem também.

Para um pouco mais de contexto - esses dois Tomcats servem arquivos binários gerados dinamicamente (binário por solicitação, 60 - 200 KB de tamanho) e os tempos de resposta não são muito rápidos.

Quando ip_hash está desativado, as solicitações são distribuídas em ambos os backends. Então, deve haver algo errado com nossos testes ou configuração do NginX ...?

    
por Less 22.10.2015 / 10:57

0 respostas