2015-10-15 10 views
6

Ho 3 setup di server nginx. Entrambi i server Web di backup e Home sono identici alle directory ../sites-enabled e ../sites-available. E il terzo server agisce come un bilanciatore di carico che punta sia per il backup e il server a casa con la configurazione:Backup del server nginx che restituisce 504

upstream myapp1 { 
    server 1.1.1.1; #home server 
    server 2.2.2.2 backup; #backup server 
} 

server { 
    listen 80; 

    location/{ 
     proxy_pass http://myapp1; 
     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; 
    } 
} 

Ma io sto avendo un problema (che è spiegato più graficamente sotto) quando sto testando per vedere se il server di backup funziona, poiché sembra funzionare solo quando il server principale è acceso!

1. test.foo.com -> Backup Web Server 
2. foo.com  -> Load Balancer 
3. www.foo.com -> Home server 

-> significa punti a

quando nulla è giù:

- 1 returns OK 
- 2 returns OK 
- 3 returns OK 

Quando Home Server è giù:

- 1 returns 504 **(SHOULD BE OK)** 
- 2 returns 504 **(SHOULD BE OK)** 
- 3 returns DNS error 

Quando Load Balancer è giù:

- 1 returns OK 
- 2 returns DNS error 
- 3 returns OK 

Quando Backup Server Web è giù:

- 1 returns DNS error 
- 2 returns 200 
- 3 returns 200 

risposta

1

Lei sembra confondere la terminologia qui:

  • quando bilanciamento del carico è basso, si sarebbe trovato connect(2)Connection refused o Operation timed out errori di stile; non sarebbe trovato errori DNS

  • allo stesso modo, il fatto che stai ricevendo 504 dal server di appartenenza a monte, significa che non è giù, quindi il server di backup non viene mai utilizzato, perché nginx sarebbe utilizzare solo se backup il server primario non è realmente disponibile

si potrebbe risolvere il secondo problema ottenendo la versione a pagamento di nginx, che ha il supporto per la direttiva health_check.

In alternativa, è possibile implementare la memorizzazione nella cache e utilizzare proxy_cache_use_stale per specificare che deve essere restituita una versione memorizzata nella cache. Inoltre, dai un'occhiata a error_page, anche

Problemi correlati