Proxy Reverso Ativo / Passivo com nginx

1

Eu tenho dois servidores Websocket que trabalham com Zookeeper & Curator como ativo / passivo, se um servidor falhar, o segundo back end ganha vida.

Eu configurei da seguinte forma:

upstream backend  {
  server 172.31.9.1:8080 max_fails=1 fail_timeout=5s;
  server 172.31.9.0:8080 max_fails=1 fail_timeout=5s;
}

server {
    listen 443;

    # host name to respond to
    server_name xxxxxx.compute.amazonaws.com;

    ssl on;
    ssl_certificate /etc/ssl/certs/wildcard.dev.xxxx.net.crt;
    ssl_certificate_key /etc/ssl/certs/wildcard.dev.xxxx.net.key;

    location / {
        # switch off logging
        access_log off;

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

        # WebSocket support (nginx 1.4)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

O que eu espero é que, quando servidores ativos e passivos trocarem de lugar, o Nginx demore 5 segundos para reconhecer falhas e redirecionar todo o tráfego para o servidor ativo.

O que realmente acontece é que leva até 25 segundos para reconhecer o servidor ativo e alternar todo o tráfego.

No cenário real, posso lidar com até 10 segundos de tempo de inatividade entre redirecionamentos.

O que estou perdendo?

    
por danny.lesnik 19.02.2015 / 14:38

1 resposta

1

fail_timeout da documentação do NGINX:

Conjuntos:

  • o tempo durante o qual o número especificado de tentativas mal-sucedidas de se comunicar com o servidor deve acontecer de considerar o servidor indisponível;
  • e o período em que o servidor será considerado indisponível.

Assim, uma configuração de 5 significaria 10 segundos no total (5 tempo limite, 5 esperando antes de entrar em contato novamente)

A propósito, o padrão para max_fails já é 1, então você não precisa definir isso.

Se você realmente deseja uma configuração ativa / passiva, use essa configuração:

upstream backend  {
  server 172.31.9.1:8080;
  server 172.31.9.0:8080 backup;
}
    
por 20.02.2015 / 14:28